diff options
Diffstat (limited to 'src/key.c')
-rw-r--r-- | src/key.c | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -760,13 +760,14 @@ p11t_key_login_context_specific (CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key assert(session != CK_INVALID); assert(p11t_module_funcs); - attr.type = CKA_ALWAYS_AUTHENTICATE; - attr.ulValueLen = sizeof (always); - attr.pValue = &always; - - if (!p11t_object_get (session, key, &attr, 1) || !always) { - p11t_check_fail ("Key wants context specific login, but CKA_ALWAYS_AUTHENTICATE not set"); - return CKR_ATTRIBUTE_VALUE_INVALID; + if (key != CK_INVALID) { + attr.type = CKA_ALWAYS_AUTHENTICATE; + attr.ulValueLen = sizeof (always); + attr.pValue = &always; + if (!p11t_object_get (session, key, &attr, 1) || !always) { + p11t_check_fail ("Key wants context specific login, but CKA_ALWAYS_AUTHENTICATE not set"); + return CKR_ATTRIBUTE_VALUE_INVALID; + } } rv = (p11t_module_funcs->C_GetSessionInfo)(session, &info); |