summaryrefslogtreecommitdiff
path: root/trust/module.c
diff options
context:
space:
mode:
Diffstat (limited to 'trust/module.c')
-rw-r--r--trust/module.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/trust/module.c b/trust/module.c
index 6be2847..51a75e0 100644
--- a/trust/module.c
+++ b/trust/module.c
@@ -855,13 +855,41 @@ sys_C_Login (CK_SESSION_HANDLE handle,
CK_UTF8CHAR_PTR pin,
CK_ULONG pin_len)
{
- return_val_if_reached (CKR_FUNCTION_NOT_SUPPORTED);
+ CK_RV rv;
+
+ p11_debug ("in");
+
+ p11_lock ();
+
+ rv = lookup_session (handle, NULL);
+ if (rv == CKR_OK)
+ rv = CKR_USER_TYPE_INVALID;
+
+ p11_unlock ();
+
+ p11_debug ("out: 0x%lx", rv);
+
+ return rv;
}
static CK_RV
sys_C_Logout (CK_SESSION_HANDLE handle)
{
- return_val_if_reached (CKR_FUNCTION_NOT_SUPPORTED);
+ CK_RV rv;
+
+ p11_debug ("in");
+
+ p11_lock ();
+
+ rv = lookup_session (handle, NULL);
+ if (rv == CKR_OK)
+ rv = CKR_USER_NOT_LOGGED_IN;
+
+ p11_unlock ();
+
+ p11_debug ("out: 0x%lx", rv);
+
+ return rv;
}
static CK_RV