summaryrefslogtreecommitdiff
path: root/ckcapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'ckcapi.c')
-rw-r--r--ckcapi.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/ckcapi.c b/ckcapi.c
index 1bc6dd9..378746e 100644
--- a/ckcapi.c
+++ b/ckcapi.c
@@ -595,6 +595,9 @@ CC_C_OpenSession(CK_SLOT_ID id, CK_FLAGS flags, CK_VOID_PTR application,
sess->notify_callback = notify;
sess->user_data = application;
+ if(flags & CKF_RW_SESSION)
+ sess->read_write = TRUE;
+
ret = ckcapi_session_register(sess);
if(ret == CKR_OK)
{
@@ -619,8 +622,7 @@ CC_C_CloseSession(CK_SESSION_HANDLE session)
ENTER(C_CloseSession);
PREREQ(cryptoki_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- /* The 'remove' flag removes it from the main session list */
- ret = ckcapi_session_get_lock_ref(session, 1, &sess);
+ ret = ckcapi_session_remove_lock_ref(session, &sess);
if(ret == CKR_OK)
{
/* This will unref and possibly destroy the session */
@@ -794,7 +796,7 @@ CC_C_GetAttributeValue(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object,
PREREQ(object, CKR_OBJECT_HANDLE_INVALID);
PREREQ(!count || templ, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_get_object_data_for(sess, object, &objdata);
@@ -829,7 +831,7 @@ CC_C_FindObjectsInit(CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR templ,
PREREQ(cryptoki_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
PREREQ(!count || templ, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_find_init(sess, templ, count);
@@ -851,7 +853,7 @@ CC_C_FindObjects(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE_PTR objects,
PREREQ(object_count, CKR_ARGUMENTS_BAD);
PREREQ(!max_object_count || objects, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_find(sess, objects, max_object_count, object_count);
@@ -870,7 +872,7 @@ CC_C_FindObjectsFinal(CK_SESSION_HANDLE session)
ENTER(C_FindObjectsFinal);
PREREQ(cryptoki_initialized, CKR_CRYPTOKI_NOT_INITIALIZED);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_find_final(sess);
@@ -938,7 +940,7 @@ CC_C_DecryptInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
PREREQ(mechanism, CKR_ARGUMENTS_BAD);
PREREQ(key, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_get_object_data_for(sess, key, &objdata);
@@ -963,7 +965,7 @@ CC_C_Decrypt(CK_SESSION_HANDLE session, CK_BYTE_PTR encrypted_data,
PREREQ(encrypted_data, CKR_ARGUMENTS_BAD);
PREREQ(encrypted_data_len, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_decrypt(sess, encrypted_data, encrypted_data_len,
@@ -1061,7 +1063,7 @@ CC_C_SignInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism,
PREREQ(mechanism, CKR_ARGUMENTS_BAD);
PREREQ(key, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_get_object_data_for(sess, key, &objdata);
@@ -1086,7 +1088,7 @@ CC_C_Sign(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len,
PREREQ(data, CKR_ARGUMENTS_BAD);
PREREQ(data_len, CKR_ARGUMENTS_BAD);
- ret = ckcapi_session_get_lock_ref(session, 0, &sess);
+ ret = ckcapi_session_get_lock_ref(session, FALSE, &sess);
if(ret == CKR_OK)
{
ret = ckcapi_session_sign(sess, data, data_len, signature, signature_len);