Skip to content

Commit 0168971

Browse files
committed
Fix object allocation for AES, NSS and HKDF
1 parent 23a143f commit 0168971

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

src/internal.c

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
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

Comments
 (0)