Skip to content

Commit 3569b3e

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

1 file changed

Lines changed: 19 additions & 9 deletions

File tree

src/internal.c

Lines changed: 19 additions & 9 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,7 +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) &&
6703+
if ((object->type == CKK_AES || object->type == CKK_GENERIC_SECRET ||
6704+
object->type == CKK_HKDF)) &&
66956705
object->data.symmKey != NULL) {
66966706
/* TODO: ForceZero */
66976707
XMEMSET(object->data.symmKey->data, 0, object->data.symmKey->len);
@@ -7885,7 +7895,7 @@ static int GetEcbCheckValue(WP11_Object* secret, byte* dataOut,
78857895
byte* hash;
78867896
byte* input;
78877897
word32 inLen;
7888-
WP11_Data* key = &secret->data.symmKey;
7898+
WP11_Data* key = secret->data.symmKey;
78897899

78907900
if (dataOut == NULL) {
78917901
if (outLen != NULL) {
@@ -11122,7 +11132,7 @@ int WP11_AesCcm_Encrypt(unsigned char* plain, word32 plainSz,
1112211132
if (ret == 0) {
1112311133
if (secret->onToken)
1112411134
WP11_Lock_LockRO(secret->lock);
11125-
key = &secret->data.symmKey;
11135+
key = secret->data.symmKey;
1112611136
ret = wc_AesCcmSetKey(&aes, key->data, key->len);
1112711137
if (secret->onToken)
1112811138
WP11_Lock_UnlockRO(secret->lock);
@@ -11177,7 +11187,7 @@ int WP11_AesCcm_Decrypt(unsigned char* enc, word32 encSz, unsigned char* dec,
1117711187
if (ret == 0) {
1117811188
if (secret->onToken)
1117911189
WP11_Lock_LockRO(secret->lock);
11180-
key = &secret->data.symmKey;
11190+
key = secret->data.symmKey;
1118111191
ret = wc_AesCcmSetKey(&aes, key->data, key->len);
1118211192
if (secret->onToken)
1118311193
WP11_Lock_UnlockRO(secret->lock);
@@ -11233,7 +11243,7 @@ int WP11_AesEcb_Encrypt(unsigned char* plain, word32 plainSz,
1123311243
if (ret == 0) {
1123411244
if (secret->onToken)
1123511245
WP11_Lock_LockRO(secret->lock);
11236-
key = &secret->data.symmKey;
11246+
key = secret->data.symmKey;
1123711247
ret = wc_AesSetKey(&aes, key->data, key->len, NULL, AES_ENCRYPTION);
1123811248
if (secret->onToken)
1123911249
WP11_Lock_UnlockRO(secret->lock);
@@ -11274,7 +11284,7 @@ int WP11_AesEcb_Decrypt(unsigned char* enc, word32 encSz, unsigned char* dec,
1127411284
if (ret == 0) {
1127511285
if (secret->onToken)
1127611286
WP11_Lock_LockRO(secret->lock);
11277-
key = &secret->data.symmKey;
11287+
key = secret->data.symmKey;
1127811288
ret = wc_AesSetKey(&aes, key->data, key->len, NULL, AES_DECRYPTION);
1127911289
if (secret->onToken)
1128011290
WP11_Lock_UnlockRO(secret->lock);
@@ -11500,7 +11510,7 @@ int WP11_Aes_Cmac_Init(WP11_Object* secret, WP11_Session* session,
1150011510
cmac->sigLen = (byte)sigLen;
1150111511
if (secret->onToken)
1150211512
WP11_Lock_LockRO(secret->lock);
11503-
key = &secret->data.symmKey;
11513+
key = secret->data.symmKey;
1150411514
ret = wc_InitCmac_ex(&cmac->cmac, key->data, key->len, WC_CMAC_AES, NULL,
1150511515
NULL, secret->slot->devId);
1150611516
if (secret->onToken)

0 commit comments

Comments
 (0)