Skip to content

Commit 9c38953

Browse files
committed
fix lost error in SE050 ECC key insert
1 parent dcbb553 commit 9c38953

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

wolfcrypt/src/port/devcrypto/devcrypto_rsa.c

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,9 +156,10 @@ static int _PrivateOperation(const byte* in, word32 inlen, byte* out,
156156
byte* u = NULL;
157157
byte* n = NULL;
158158
word32 dSz, pSz, qSz, dpSz = 0, dqSz = 0, uSz = 0, nSz;
159+
word32 dAllocSz;
159160

160161
dev = &key->ctx;
161-
dSz = nSz = wc_RsaEncryptSize(key);
162+
dAllocSz = dSz = nSz = wc_RsaEncryptSize(key);
162163
pSz = qSz = nSz / 2;
163164
if (outlen < dSz) {
164165
WOLFSSL_MSG("Output buffer is too small");
@@ -196,7 +197,7 @@ static int _PrivateOperation(const byte* in, word32 inlen, byte* out,
196197
if (!key->blackKey) { /* @TODO unexpected results with black key CRT form */
197198
if (ret == 0 && dpSz > 0) {
198199
dSz = 0; nSz = 0;
199-
dq = (byte*)XMALLOC(dpSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
200+
dq = (byte*)XMALLOC(dqSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
200201
dp = (byte*)XMALLOC(dpSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
201202
u = (byte*)XMALLOC(uSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
202203
if (dq == NULL || dp == NULL || u == NULL) {
@@ -237,12 +238,12 @@ static int _PrivateOperation(const byte* in, word32 inlen, byte* out,
237238
}
238239
}
239240

240-
if (d) { ForceZero(d, dSz); XFREE(d, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
241-
if (p) { ForceZero(p, pSz); XFREE(p, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
242-
if (q) { ForceZero(q, qSz); XFREE(q, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
243-
if (dp) { ForceZero(dp, dpSz); XFREE(dp, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
244-
if (dq) { ForceZero(dq, dqSz); XFREE(dq, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
245-
if (u) { ForceZero(u, uSz); XFREE(u, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
241+
if (d) { ForceZero(d, dAllocSz); XFREE(d, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
242+
if (p) { ForceZero(p, pSz); XFREE(p, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
243+
if (q) { ForceZero(q, qSz); XFREE(q, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
244+
if (dp) { ForceZero(dp, dpSz); XFREE(dp, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
245+
if (dq) { ForceZero(dq, dqSz); XFREE(dq, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
246+
if (u) { ForceZero(u, uSz); XFREE(u, NULL, DYNAMIC_TYPE_TMP_BUFFER); }
246247
XFREE(n, NULL, DYNAMIC_TYPE_TMP_BUFFER);
247248

248249
wc_DevCryptoFree(dev);

wolfcrypt/src/port/kcapi/kcapi_rsa.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,14 @@ static int KcapiRsa_SetPrivKey(RsaKey* key)
4444
int ret = 0;
4545
unsigned char* priv = NULL;
4646
int len;
47+
int allocSz = 0;
4748

4849
len = wc_RsaKeyToDer(key, NULL, 0);
4950
if (len < 0) {
5051
ret = len;
5152
}
5253
if (ret == 0) {
54+
allocSz = len;
5355
priv = (unsigned char*)XMALLOC(len, key->heap, DYNAMIC_TYPE_TMP_BUFFER);
5456
if (priv == NULL) {
5557
ret = MEMORY_E;
@@ -70,7 +72,7 @@ static int KcapiRsa_SetPrivKey(RsaKey* key)
7072
}
7173

7274
if (priv != NULL) {
73-
ForceZero(priv, len);
75+
ForceZero(priv, allocSz);
7476
XFREE(priv, key->heap, DYNAMIC_TYPE_TMP_BUFFER);
7577
}
7678
return ret;

wolfcrypt/src/port/nxp/se050_port.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1982,6 +1982,7 @@ static int se050_ecc_insert_key(word32 keyId, const byte* eccDer,
19821982

19831983
/* Avoid key ID conflicts with temporary key storage */
19841984
if (keyId >= SE050_KEYID_START) {
1985+
wolfSSL_CryptHwMutexUnLock();
19851986
return BAD_FUNC_ARG;
19861987
}
19871988

@@ -2013,7 +2014,9 @@ static int se050_ecc_insert_key(word32 keyId, const byte* eccDer,
20132014
status = kStatus_SSS_Fail;
20142015
}
20152016
}
2016-
status = sss_key_store_context_init(&host_keystore, cfg_se050_i2c_pi);
2017+
if (status == kStatus_SSS_Success) {
2018+
status = sss_key_store_context_init(&host_keystore, cfg_se050_i2c_pi);
2019+
}
20172020
if (status == kStatus_SSS_Success) {
20182021
status = sss_key_object_init(&newKey, &host_keystore);
20192022
}

0 commit comments

Comments
 (0)