summaryrefslogtreecommitdiff
path: root/src/key.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/key.c')
-rw-r--r--src/key.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/key.c b/src/key.c
index 977877a..6f182e6 100644
--- a/src/key.c
+++ b/src/key.c
@@ -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);