1919 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
2020 */
2121
22+ #include "wolfpkcs11/pkcs11.h"
2223#ifdef HAVE_CONFIG_H
2324 #include <wolfpkcs11/config.h>
2425#endif
@@ -1974,6 +1975,9 @@ static int wp11_Object_New(WP11_Slot* slot, CK_KEY_TYPE type,
19741975 #ifndef NO_AES
19751976 case CKK_AES :
19761977 #endif
1978+ #ifdef WOLFPKCS11_HKDF
1979+ case CKK_HKDF :
1980+ #endif
19771981 case CKK_GENERIC_SECRET :
19781982 obj -> data .symmKey = (WP11_Data * )XMALLOC (sizeof (WP11_Data ), NULL ,
19791983 DYNAMIC_TYPE_AES );
@@ -1984,6 +1988,11 @@ static int wp11_Object_New(WP11_Slot* slot, CK_KEY_TYPE type,
19841988 XMEMSET (obj -> data .symmKey , 0 , sizeof (WP11_Data ));
19851989 }
19861990 break ;
1991+ #ifdef WOLFPKCS11_NSS
1992+ case CKK_NSS_TRUST :
1993+ /* Nothing yet */
1994+ break ;
1995+ #endif
19871996 default :
19881997 ret = NOT_AVAILABLE_E ;
19891998 }
@@ -6167,7 +6176,7 @@ int WP11_Session_SetCtrParams(WP11_Session* session, CK_ULONG ulCounterBits,
61676176 if (ret == 0 ) {
61686177 if (object -> onToken )
61696178 WP11_Lock_LockRO (object -> lock );
6170- key = & object -> data .symmKey ;
6179+ key = object -> data .symmKey ;
61716180 ret = wc_AesSetKey (& ctr -> aes , key -> data , key -> len , cb , AES_ENCRYPTION );
61726181 if (object -> onToken )
61736182 WP11_Lock_UnlockRO (object -> lock );
@@ -6313,7 +6322,7 @@ int WP11_Session_SetCtsParams(WP11_Session* session, unsigned char* iv,
63136322 if (ret == 0 ) {
63146323 if (object -> onToken )
63156324 WP11_Lock_LockRO (object -> lock );
6316- key = & object -> data .symmKey ;
6325+ key = object -> data .symmKey ;
63176326 ret = wc_AesSetKey (& cts -> aes , key -> data , key -> len , iv ,
63186327 enc ? AES_ENCRYPTION : AES_DECRYPTION );
63196328 if (object -> onToken )
@@ -6691,8 +6700,8 @@ void WP11_Object_Free(WP11_Object* object)
66916700 object -> data .dhKey = NULL ;
66926701 }
66936702 #endif
6694- if ((object -> type == CKK_AES || object -> type == CKK_GENERIC_SECRET ) &&
6695- object -> data .symmKey != NULL ) {
6703+ if ((object -> type == CKK_AES || object -> type == CKK_GENERIC_SECRET ||
6704+ object -> type == CKK_HKDF ) && object -> data .symmKey != NULL ) {
66966705 /* TODO: ForceZero */
66976706 XMEMSET (object -> data .symmKey -> data , 0 , object -> data .symmKey -> len );
66986707 XFREE (object -> data .symmKey , NULL , DYNAMIC_TYPE_AES );
@@ -7885,7 +7894,7 @@ static int GetEcbCheckValue(WP11_Object* secret, byte* dataOut,
78857894 byte * hash ;
78867895 byte * input ;
78877896 word32 inLen ;
7888- WP11_Data * key = & secret -> data .symmKey ;
7897+ WP11_Data * key = secret -> data .symmKey ;
78897898
78907899 if (dataOut == NULL ) {
78917900 if (outLen != NULL ) {
@@ -11122,7 +11131,7 @@ int WP11_AesCcm_Encrypt(unsigned char* plain, word32 plainSz,
1112211131 if (ret == 0 ) {
1112311132 if (secret -> onToken )
1112411133 WP11_Lock_LockRO (secret -> lock );
11125- key = & secret -> data .symmKey ;
11134+ key = secret -> data .symmKey ;
1112611135 ret = wc_AesCcmSetKey (& aes , key -> data , key -> len );
1112711136 if (secret -> onToken )
1112811137 WP11_Lock_UnlockRO (secret -> lock );
@@ -11177,7 +11186,7 @@ int WP11_AesCcm_Decrypt(unsigned char* enc, word32 encSz, unsigned char* dec,
1117711186 if (ret == 0 ) {
1117811187 if (secret -> onToken )
1117911188 WP11_Lock_LockRO (secret -> lock );
11180- key = & secret -> data .symmKey ;
11189+ key = secret -> data .symmKey ;
1118111190 ret = wc_AesCcmSetKey (& aes , key -> data , key -> len );
1118211191 if (secret -> onToken )
1118311192 WP11_Lock_UnlockRO (secret -> lock );
@@ -11233,7 +11242,7 @@ int WP11_AesEcb_Encrypt(unsigned char* plain, word32 plainSz,
1123311242 if (ret == 0 ) {
1123411243 if (secret -> onToken )
1123511244 WP11_Lock_LockRO (secret -> lock );
11236- key = & secret -> data .symmKey ;
11245+ key = secret -> data .symmKey ;
1123711246 ret = wc_AesSetKey (& aes , key -> data , key -> len , NULL , AES_ENCRYPTION );
1123811247 if (secret -> onToken )
1123911248 WP11_Lock_UnlockRO (secret -> lock );
@@ -11274,7 +11283,7 @@ int WP11_AesEcb_Decrypt(unsigned char* enc, word32 encSz, unsigned char* dec,
1127411283 if (ret == 0 ) {
1127511284 if (secret -> onToken )
1127611285 WP11_Lock_LockRO (secret -> lock );
11277- key = & secret -> data .symmKey ;
11286+ key = secret -> data .symmKey ;
1127811287 ret = wc_AesSetKey (& aes , key -> data , key -> len , NULL , AES_DECRYPTION );
1127911288 if (secret -> onToken )
1128011289 WP11_Lock_UnlockRO (secret -> lock );
@@ -11500,7 +11509,7 @@ int WP11_Aes_Cmac_Init(WP11_Object* secret, WP11_Session* session,
1150011509 cmac -> sigLen = (byte )sigLen ;
1150111510 if (secret -> onToken )
1150211511 WP11_Lock_LockRO (secret -> lock );
11503- key = & secret -> data .symmKey ;
11512+ key = secret -> data .symmKey ;
1150411513 ret = wc_InitCmac_ex (& cmac -> cmac , key -> data , key -> len , WC_CMAC_AES , NULL ,
1150511514 NULL , secret -> slot -> devId );
1150611515 if (secret -> onToken )
0 commit comments