diff options
author | Stef Walter <stef@memberwebs.com> | 2008-12-08 21:38:18 +0000 |
---|---|---|
committer | Stef Walter <stef@memberwebs.com> | 2008-12-08 21:38:18 +0000 |
commit | f84cec479d41fb143487af7e78a6b3056f6b8823 (patch) | |
tree | a211957b4a54b7bae3fede9508394708358c32c1 /ckcapi-session.c | |
parent | c1e30395d8f4551a5f0fa253eefeefc9a9154f7e (diff) |
Implement concept of logins (no-op). Do RSA testing, and fix problems discovered in RSA code.
Diffstat (limited to 'ckcapi-session.c')
-rw-r--r-- | ckcapi-session.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/ckcapi-session.c b/ckcapi-session.c index f4f00aa..064e477 100644 --- a/ckcapi-session.c +++ b/ckcapi-session.c @@ -212,6 +212,26 @@ ckcapi_session_destroy(CkCapiSession* sess) free(sess); } +void +ckcapi_session_get_info(CkCapiSession* sess, CK_SESSION_INFO_PTR info) +{ + ASSERT(sess); + ASSERT(info); + + info->slotID = sess->slot; + info->flags = CKF_SERIAL_SESSION; + if(sess->read_write) + info->flags |= CKF_RW_SESSION; + + if(ckcapi_token_is_logged_in(sess->slot)) + info->state = sess->read_write ? CKS_RW_USER_FUNCTIONS : CKS_RO_USER_FUNCTIONS; + else + info->state = sess->read_write ? CKS_RW_PUBLIC_SESSION : CKS_RO_PUBLIC_SESSION; + + /* TODO: We could implement some use of GetLastError() here */ + info->ulDeviceError = 0; +} + static CK_RV lock_ref_internal(CkCapiArray* sessions, CK_SESSION_HANDLE id, BOOL remove, BOOL writable, CkCapiSession** sess_ret) @@ -824,8 +844,10 @@ ckcapi_session_sign_init(CkCapiSession* sess, CK_MECHANISM_PTR mech, case CKM_RSA_PKCS: ret = ckcapi_rsa_pkcs_sign_init(objdata, &ctx->mech_data); ctx->mech_cleanup = ckcapi_rsa_pkcs_sign_cleanup; + break; default: ret = CKR_MECHANISM_INVALID; + break; }; if(ret != CKR_OK) @@ -904,8 +926,10 @@ ckcapi_session_decrypt_init(CkCapiSession* sess, CK_MECHANISM_PTR mech, case CKM_RSA_PKCS: ret = ckcapi_rsa_pkcs_decrypt_init(objdata, &ctx->mech_data); ctx->mech_cleanup = ckcapi_rsa_pkcs_decrypt_cleanup; + break; default: ret = CKR_MECHANISM_INVALID; + break; }; if(ret != CKR_OK) |