static CK_RV perform_initialize (Initialize *args) { CK_FUNCTION_LIST_PTR funcs; GckModule *result; CK_RV rv; funcs = p11_kit_module_load (args->path, P11_KIT_MODULE_CRITICAL); if (funcs == NULL) { g_set_error (&args->error, GCK_ERROR, (int)CKR_GCK_MODULE_PROBLEM, _("Error loading PKCS#11 module: %s"), p11_kit_message ()); return CKR_GCK_MODULE_PROBLEM; } result = g_object_new (GCK_TYPE_MODULE, "functions", funcs, "path", args->path, NULL); /* Now initialize the module */ rv = p11_kit_module_initialize (funcs); if (rv != CKR_OK) { p11_kit_module_release (funcs); g_set_error (&args->error, GCK_ERROR, rv, _("Couldn’t initialize PKCS#11 module: %s"), gck_message_from_rv (rv)); g_object_unref (result); return rv; } result->pv->initialized = TRUE; args->result = result; return CKR_OK; }
{ CKA_CLASS,}, { CKA_LABEL, }, { CKA_CERT_MD5_HASH, }, { CKA_CERT_SHA1_HASH }, { CKA_ISSUER, }, { CKA_SERIAL_NUMBER, }, { CKA_TRUST_SERVER_AUTH, }, { CKA_TRUST_EMAIL_PROTECTION, }, { CKA_TRUST_CODE_SIGNING, }, { CKA_TRUST_STEP_UP_APPROVED, }, { CKA_INVALID, } }; CK_ULONG count = p11_attrs_count (template); module = p11_kit_module_load (path, 0); return_val_if_fail (module != NULL, 1); rv = p11_kit_module_initialize (module); return_val_if_fail (rv == CKR_OK, 1); iter = p11_kit_iter_new (NULL, 0); p11_kit_iter_add_filter (iter, &match, 1); p11_kit_iter_begin_with (iter, module, 0, 0); while ((rv = p11_kit_iter_next (iter)) == CKR_OK) { attrs = p11_attrs_dup (template); rv = p11_kit_iter_load_attributes (iter, attrs, count); return_val_if_fail (rv == CKR_OK || rv == CKR_ATTRIBUTE_VALUE_INVALID, 1); p11_attrs_purge (attrs); dump_object (iter, attrs);