diff --git a/gck-rpc-module.c b/gck-rpc-module.c index 88313a10ae8078792acda06e3ab9abe64c98cc71..74a3064b052d9cd7c395d31951cdf7721af9959a 100644 --- a/gck-rpc-module.c +++ b/gck-rpc-module.c @@ -1426,6 +1426,8 @@ static CK_RV rpc_C_InitToken(CK_SLOT_ID id, CK_UTF8CHAR_PTR pin, CK_ULONG pin_len, CK_UTF8CHAR_PTR label) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_InitToken); IN_ULONG(id); IN_BYTE_ARRAY(pin, pin_len); @@ -1466,6 +1468,8 @@ rpc_C_OpenSession(CK_SLOT_ID id, CK_FLAGS flags, CK_VOID_PTR user_data, static CK_RV rpc_C_CloseSession(CK_SESSION_HANDLE session) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_CloseSession); IN_ULONG(session); PROCESS_CALL; @@ -1474,6 +1478,8 @@ static CK_RV rpc_C_CloseSession(CK_SESSION_HANDLE session) static CK_RV rpc_C_CloseAllSessions(CK_SLOT_ID id) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_CloseAllSessions); IN_ULONG(id); PROCESS_CALL; @@ -1482,6 +1488,8 @@ static CK_RV rpc_C_CloseAllSessions(CK_SLOT_ID id) static CK_RV rpc_C_GetFunctionStatus(CK_SESSION_HANDLE session) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_GetFunctionStatus); IN_ULONG(session); PROCESS_CALL; @@ -1490,6 +1498,8 @@ static CK_RV rpc_C_GetFunctionStatus(CK_SESSION_HANDLE session) static CK_RV rpc_C_CancelFunction(CK_SESSION_HANDLE session) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_CancelFunction); IN_ULONG(session); PROCESS_CALL; @@ -1512,6 +1522,8 @@ rpc_C_GetSessionInfo(CK_SESSION_HANDLE session, CK_SESSION_INFO_PTR info) static CK_RV rpc_C_InitPIN(CK_SESSION_HANDLE session, CK_UTF8CHAR_PTR pin, CK_ULONG pin_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_InitPIN); IN_ULONG(session); IN_BYTE_ARRAY(pin, pin_len); @@ -1524,6 +1536,8 @@ rpc_C_SetPIN(CK_SESSION_HANDLE session, CK_UTF8CHAR_PTR old_pin, CK_ULONG old_pin_len, CK_UTF8CHAR_PTR new_pin, CK_ULONG new_pin_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_SetPIN); IN_ULONG(session); IN_BYTE_ARRAY(old_pin, old_pin_len); @@ -1537,6 +1551,7 @@ rpc_C_GetOperationState(CK_SESSION_HANDLE session, CK_BYTE_PTR operation_state, CK_ULONG_PTR operation_state_len) { return_val_if_fail(operation_state_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_GetOperationState); IN_ULONG(session); @@ -1552,6 +1567,8 @@ rpc_C_SetOperationState(CK_SESSION_HANDLE session, CK_BYTE_PTR operation_state, CK_OBJECT_HANDLE encryption_key, CK_OBJECT_HANDLE authentication_key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_SetOperationState); IN_ULONG(session); IN_BYTE_ARRAY(operation_state, operation_state_len); @@ -1565,6 +1582,8 @@ static CK_RV rpc_C_Login(CK_SESSION_HANDLE session, CK_USER_TYPE user_type, CK_UTF8CHAR_PTR pin, CK_ULONG pin_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_Login); IN_ULONG(session); IN_ULONG(user_type); @@ -1575,6 +1594,8 @@ rpc_C_Login(CK_SESSION_HANDLE session, CK_USER_TYPE user_type, static CK_RV rpc_C_Logout(CK_SESSION_HANDLE session) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_Logout); IN_ULONG(session); PROCESS_CALL; @@ -1603,6 +1624,7 @@ rpc_C_CopyObject(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, CK_ATTRIBUTE_PTR template, CK_ULONG count, CK_OBJECT_HANDLE_PTR new_object) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); return_val_if_fail(new_object, CKR_ARGUMENTS_BAD); BEGIN_CALL(C_CopyObject); @@ -1617,6 +1639,8 @@ rpc_C_CopyObject(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, static CK_RV rpc_C_DestroyObject(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_DestroyObject); IN_ULONG(session); IN_ULONG(object); @@ -1628,6 +1652,7 @@ static CK_RV rpc_C_GetObjectSize(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, CK_ULONG_PTR size) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); return_val_if_fail(size, CKR_ARGUMENTS_BAD); BEGIN_CALL(C_GetObjectSize); @@ -1658,6 +1683,7 @@ static CK_RV rpc_C_SetAttributeValue(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE object, CK_ATTRIBUTE_PTR template, CK_ULONG count) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_SetAttributeValue); IN_ULONG(session); IN_ULONG(object); @@ -1670,6 +1696,8 @@ static CK_RV rpc_C_FindObjectsInit(CK_SESSION_HANDLE session, CK_ATTRIBUTE_PTR template, CK_ULONG count) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_FindObjectsInit); IN_ULONG(session); IN_ATTRIBUTE_ARRAY(template, count); @@ -1706,6 +1734,8 @@ static CK_RV rpc_C_EncryptInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_EncryptInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1744,6 +1774,7 @@ rpc_C_EncryptUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG_PTR encrypted_part_len) { return_val_if_fail(encrypted_part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_EncryptUpdate); IN_ULONG(session); @@ -1759,6 +1790,7 @@ rpc_C_EncryptFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR last_part, CK_ULONG_PTR last_part_len) { return_val_if_fail(last_part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_EncryptFinal); IN_ULONG(session); @@ -1772,6 +1804,8 @@ static CK_RV rpc_C_DecryptInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_DecryptInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1785,6 +1819,7 @@ rpc_C_Decrypt(CK_SESSION_HANDLE session, CK_BYTE_PTR enc_data, CK_ULONG enc_data_len, CK_BYTE_PTR data, CK_ULONG_PTR data_len) { return_val_if_fail(data_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_Decrypt); IN_ULONG(session); @@ -1801,6 +1836,7 @@ rpc_C_DecryptUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part, CK_ULONG_PTR part_len) { return_val_if_fail(part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DecryptUpdate); IN_ULONG(session); @@ -1816,6 +1852,7 @@ rpc_C_DecryptFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR last_part, CK_ULONG_PTR last_part_len) { return_val_if_fail(last_part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DecryptFinal); IN_ULONG(session); @@ -1828,6 +1865,7 @@ rpc_C_DecryptFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR last_part, static CK_RV rpc_C_DigestInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DigestInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1840,6 +1878,7 @@ rpc_C_Digest(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len, CK_BYTE_PTR digest, CK_ULONG_PTR digest_len) { return_val_if_fail(digest_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_Digest); IN_ULONG(session); @@ -1854,6 +1893,8 @@ static CK_RV rpc_C_DigestUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_DigestUpdate); IN_ULONG(session); IN_BYTE_ARRAY(part, part_len); @@ -1863,6 +1904,8 @@ rpc_C_DigestUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, static CK_RV rpc_C_DigestKey(CK_SESSION_HANDLE session, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_DigestKey); IN_ULONG(session); IN_ULONG(key); @@ -1875,6 +1918,7 @@ rpc_C_DigestFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR digest, CK_ULONG_PTR digest_len) { return_val_if_fail(digest_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DigestFinal); IN_ULONG(session); @@ -1888,6 +1932,7 @@ static CK_RV rpc_C_SignInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_SignInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1901,6 +1946,7 @@ rpc_C_Sign(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len, CK_BYTE_PTR signature, CK_ULONG_PTR signature_len) { return_val_if_fail(signature_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_Sign); IN_ULONG(session); @@ -1914,6 +1960,7 @@ rpc_C_Sign(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len, static CK_RV rpc_C_SignUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); return_val_if_fail(part_len, CKR_ARGUMENTS_BAD); BEGIN_CALL(C_SignUpdate); @@ -1928,6 +1975,7 @@ rpc_C_SignFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR signature, CK_ULONG_PTR signature_len) { return_val_if_fail(signature_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_SignFinal); IN_ULONG(session); @@ -1941,6 +1989,8 @@ static CK_RV rpc_C_SignRecoverInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_SignRecoverInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1955,6 +2005,7 @@ rpc_C_SignRecover(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG_PTR signature_len) { return_val_if_fail(signature_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_SignRecover); IN_ULONG(session); @@ -1969,6 +2020,8 @@ static CK_RV rpc_C_VerifyInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_VerifyInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -1981,6 +2034,8 @@ static CK_RV rpc_C_Verify(CK_SESSION_HANDLE session, CK_BYTE_PTR data, CK_ULONG data_len, CK_BYTE_PTR signature, CK_ULONG signature_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_Verify); IN_ULONG(session); IN_BYTE_ARRAY(data, data_len); @@ -1993,6 +2048,8 @@ static CK_RV rpc_C_VerifyUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG part_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_VerifyUpdate); IN_ULONG(session); IN_BYTE_ARRAY(part, part_len); @@ -2004,6 +2061,8 @@ static CK_RV rpc_C_VerifyFinal(CK_SESSION_HANDLE session, CK_BYTE_PTR signature, CK_ULONG signature_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_VerifyFinal); IN_ULONG(session); IN_BYTE_ARRAY(signature, signature_len); @@ -2015,6 +2074,8 @@ static CK_RV rpc_C_VerifyRecoverInit(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_VerifyRecoverInit); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -2029,6 +2090,7 @@ rpc_C_VerifyRecover(CK_SESSION_HANDLE session, CK_BYTE_PTR signature, CK_ULONG_PTR data_len) { return_val_if_fail(data_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_VerifyRecover); IN_ULONG(session); @@ -2045,6 +2107,7 @@ rpc_C_DigestEncryptUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG_PTR enc_part_len) { return_val_if_fail(enc_part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DigestEncryptUpdate); IN_ULONG(session); @@ -2061,6 +2124,7 @@ rpc_C_DecryptDigestUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part, CK_ULONG_PTR part_len) { return_val_if_fail(part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DecryptDigestUpdate); IN_ULONG(session); @@ -2077,6 +2141,7 @@ rpc_C_SignEncryptUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR part, CK_ULONG_PTR enc_part_len) { return_val_if_fail(enc_part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_SignEncryptUpdate); IN_ULONG(session); @@ -2093,6 +2158,7 @@ rpc_C_DecryptVerifyUpdate(CK_SESSION_HANDLE session, CK_BYTE_PTR enc_part, CK_ULONG_PTR part_len) { return_val_if_fail(part_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_DecryptVerifyUpdate); IN_ULONG(session); @@ -2108,6 +2174,8 @@ rpc_C_GenerateKey(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_ATTRIBUTE_PTR template, CK_ULONG count, CK_OBJECT_HANDLE_PTR key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_GenerateKey); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -2150,6 +2218,7 @@ rpc_C_WrapKey(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_BYTE_PTR wrapped_key, CK_ULONG_PTR wrapped_key_len) { return_val_if_fail(wrapped_key_len, CKR_ARGUMENTS_BAD); + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); BEGIN_CALL(C_WrapKey); IN_ULONG(session); @@ -2168,6 +2237,8 @@ rpc_C_UnwrapKey(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_ULONG wrapped_key_len, CK_ATTRIBUTE_PTR template, CK_ULONG count, CK_OBJECT_HANDLE_PTR key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_UnwrapKey); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -2184,6 +2255,8 @@ rpc_C_DeriveKey(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, CK_OBJECT_HANDLE base_key, CK_ATTRIBUTE_PTR template, CK_ULONG count, CK_OBJECT_HANDLE_PTR key) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_DeriveKey); IN_ULONG(session); IN_MECHANISM(mechanism); @@ -2197,6 +2270,8 @@ rpc_C_DeriveKey(CK_SESSION_HANDLE session, CK_MECHANISM_PTR mechanism, static CK_RV rpc_C_SeedRandom(CK_SESSION_HANDLE session, CK_BYTE_PTR seed, CK_ULONG seed_len) { + return_val_if_fail(pkcs11_initialized, CKR_CRYPTOKI_NOT_INITIALIZED); + BEGIN_CALL(C_SeedRandom); IN_ULONG(session); IN_BYTE_ARRAY(seed, seed_len);