forked from wolfSSL/wolfssl
Merge pull request #6427 from SparkiDev/scan-build_fixes_1
scan-build fixes
This commit is contained in:
@@ -11451,6 +11451,7 @@ enum {
|
|||||||
* @param [in] pubKey Buffer holding encoded public key.
|
* @param [in] pubKey Buffer holding encoded public key.
|
||||||
* @param [in] pubKeyLen Length of encoded public key in bytes.
|
* @param [in] pubKeyLen Length of encoded public key in bytes.
|
||||||
* @return 0 on success.
|
* @return 0 on success.
|
||||||
|
* @return BAD_FUNC_ARG when pubKey is NULL.
|
||||||
* @return ASN_PARSE_E when BER encoded data does not match ASN.1 items or
|
* @return ASN_PARSE_E when BER encoded data does not match ASN.1 items or
|
||||||
* is invalid.
|
* is invalid.
|
||||||
* @return BUFFER_E when data in buffer is too small.
|
* @return BUFFER_E when data in buffer is too small.
|
||||||
@@ -11470,6 +11471,10 @@ static int StoreEccKey(DecodedCert* cert, const byte* source, word32* srcIdx,
|
|||||||
byte tag;
|
byte tag;
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
|
if (pubKey == NULL) {
|
||||||
|
return BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
localIdx = *srcIdx;
|
localIdx = *srcIdx;
|
||||||
if (GetASNTag(source, &localIdx, &tag, maxIdx) < 0)
|
if (GetASNTag(source, &localIdx, &tag, maxIdx) < 0)
|
||||||
return ASN_PARSE_E;
|
return ASN_PARSE_E;
|
||||||
@@ -11527,6 +11532,11 @@ static int StoreEccKey(DecodedCert* cert, const byte* source, word32* srcIdx,
|
|||||||
DECL_ASNGETDATA(dataASN, eccCertKeyASN_Length);
|
DECL_ASNGETDATA(dataASN, eccCertKeyASN_Length);
|
||||||
byte* publicKey;
|
byte* publicKey;
|
||||||
|
|
||||||
|
/* Validate parameters. */
|
||||||
|
if (pubKey == NULL) {
|
||||||
|
ret = BAD_FUNC_ARG;
|
||||||
|
}
|
||||||
|
|
||||||
/* Clear dynamic data and check OID is a curve. */
|
/* Clear dynamic data and check OID is a curve. */
|
||||||
CALLOC_ASNGETDATA(dataASN, eccCertKeyASN_Length, ret, cert->heap);
|
CALLOC_ASNGETDATA(dataASN, eccCertKeyASN_Length, ret, cert->heap);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
@@ -11695,6 +11705,11 @@ static int GetCertKey(DecodedCert* cert, const byte* source, word32* inOutIdx,
|
|||||||
int ret = 0;
|
int ret = 0;
|
||||||
int length;
|
int length;
|
||||||
|
|
||||||
|
/* Validate paramaters. */
|
||||||
|
if (source == NULL) {
|
||||||
|
return ASN_PARSE_E;
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef WOLFSSL_ASN_TEMPLATE
|
#ifndef WOLFSSL_ASN_TEMPLATE
|
||||||
if (GetSequence(source, &srcIdx, &length, maxIdx) < 0)
|
if (GetSequence(source, &srcIdx, &length, maxIdx) < 0)
|
||||||
#else
|
#else
|
||||||
|
@@ -11696,7 +11696,7 @@ int sp_mul(const sp_int* a, const sp_int* b, sp_int* r)
|
|||||||
* @return MP_OKAY on success.
|
* @return MP_OKAY on success.
|
||||||
* @return MP_MEM when dynamic memory allocation fails.
|
* @return MP_MEM when dynamic memory allocation fails.
|
||||||
*/
|
*/
|
||||||
static int _sp_mulmod(const sp_int* a, const sp_int* b, const sp_int* m,
|
static int _sp_mulmod_tmp(const sp_int* a, const sp_int* b, const sp_int* m,
|
||||||
sp_int* r)
|
sp_int* r)
|
||||||
{
|
{
|
||||||
int err = MP_OKAY;
|
int err = MP_OKAY;
|
||||||
@@ -11722,6 +11722,39 @@ static int _sp_mulmod(const sp_int* a, const sp_int* b, const sp_int* m,
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Multiply a by b mod m and store in r: r = (a * b) mod m
|
||||||
|
*
|
||||||
|
* @param [in] a SP integer to multiply.
|
||||||
|
* @param [in] b SP integer to multiply.
|
||||||
|
* @param [in] m SP integer that is the modulus.
|
||||||
|
* @param [out] r SP integer result.
|
||||||
|
*
|
||||||
|
* @return MP_OKAY on success.
|
||||||
|
* @return MP_MEM when dynamic memory allocation fails.
|
||||||
|
*/
|
||||||
|
static int _sp_mulmod(const sp_int* a, const sp_int* b, const sp_int* m,
|
||||||
|
sp_int* r)
|
||||||
|
{
|
||||||
|
int err = MP_OKAY;
|
||||||
|
|
||||||
|
/* Use r as intermediate result if not same as pointer m which is needed
|
||||||
|
* after first intermediate result.
|
||||||
|
*/
|
||||||
|
if (r != m) {
|
||||||
|
/* Multiply and reduce. */
|
||||||
|
err = sp_mul(a, b, r);
|
||||||
|
if (err == MP_OKAY) {
|
||||||
|
err = sp_mod(r, m, r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* Do operation using temporary. */
|
||||||
|
_sp_mulmod_tmp(a, b, m, r);
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
|
||||||
/* Multiply a by b mod m and store in r: r = (a * b) mod m
|
/* Multiply a by b mod m and store in r: r = (a * b) mod m
|
||||||
*
|
*
|
||||||
* @param [in] a SP integer to multiply.
|
* @param [in] a SP integer to multiply.
|
||||||
@@ -11755,19 +11788,8 @@ int sp_mulmod(const sp_int* a, const sp_int* b, const sp_int* m, sp_int* r)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Use r as intermediate result if not same as pointer m which is needed
|
if (err == MP_OKAY) {
|
||||||
* after first intermediate result.
|
err = _sp_mulmod(a, b, m, r);
|
||||||
*/
|
|
||||||
if ((err == MP_OKAY) && (r != m)) {
|
|
||||||
/* Multiply and reduce. */
|
|
||||||
err = sp_mul(a, b, r);
|
|
||||||
if (err == MP_OKAY) {
|
|
||||||
err = sp_mod(r, m, r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (err == MP_OKAY) {
|
|
||||||
/* Do operation using temporary. */
|
|
||||||
_sp_mulmod(a, b, m, r);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@@ -12562,7 +12584,7 @@ static int _sp_exptmod_ex(const sp_int* b, const sp_int* e, int bits,
|
|||||||
/* 4.4 s = s | y */
|
/* 4.4 s = s | y */
|
||||||
s |= y;
|
s |= y;
|
||||||
/* 4.5. t[j] = t[j] * b */
|
/* 4.5. t[j] = t[j] * b */
|
||||||
err = sp_mulmod(t[j], b, m, t[j]);
|
err = _sp_mulmod(t[j], b, m, t[j]);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* 4.1. t[s] = t[s] ^ 2 */
|
/* 4.1. t[s] = t[s] ^ 2 */
|
||||||
@@ -12585,7 +12607,7 @@ static int _sp_exptmod_ex(const sp_int* b, const sp_int* e, int bits,
|
|||||||
_sp_copy((sp_int*)(((size_t)t[0] & sp_off_on_addr[j^1]) +
|
_sp_copy((sp_int*)(((size_t)t[0] & sp_off_on_addr[j^1]) +
|
||||||
((size_t)t[1] & sp_off_on_addr[j ])),
|
((size_t)t[1] & sp_off_on_addr[j ])),
|
||||||
t[2]);
|
t[2]);
|
||||||
err = sp_mulmod(t[2], b, m, t[2]);
|
err = _sp_mulmod(t[2], b, m, t[2]);
|
||||||
_sp_copy(t[2],
|
_sp_copy(t[2],
|
||||||
(sp_int*)(((size_t)t[0] & sp_off_on_addr[j^1]) +
|
(sp_int*)(((size_t)t[0] & sp_off_on_addr[j^1]) +
|
||||||
((size_t)t[1] & sp_off_on_addr[j ])));
|
((size_t)t[1] & sp_off_on_addr[j ])));
|
||||||
@@ -12682,7 +12704,7 @@ static int _sp_exptmod_mont_ex(const sp_int* b, const sp_int* e, int bits,
|
|||||||
*/
|
*/
|
||||||
err = sp_mont_norm(t[1], m);
|
err = sp_mont_norm(t[1], m);
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
err = sp_mulmod(t[0], t[1], m, t[0]);
|
err = _sp_mulmod(t[0], t[1], m, t[0]);
|
||||||
}
|
}
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* 4. t[1] = t[0]
|
/* 4. t[1] = t[0]
|
||||||
@@ -12860,7 +12882,7 @@ static int _sp_exptmod_mont_ex(const sp_int* b, const sp_int* e, int bits,
|
|||||||
err = sp_mont_norm(t[0], m);
|
err = sp_mont_norm(t[0], m);
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* 3. t[1] = ToMont(t[1]) */
|
/* 3. t[1] = ToMont(t[1]) */
|
||||||
err = sp_mulmod(t[1], t[0], m, t[1]);
|
err = _sp_mulmod(t[1], t[0], m, t[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 4. For i in 2..(2 ^ w) - 1 */
|
/* 4. For i in 2..(2 ^ w) - 1 */
|
||||||
@@ -13556,7 +13578,7 @@ static int _sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m,
|
|||||||
err = sp_mont_norm(t[0], m);
|
err = sp_mont_norm(t[0], m);
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* 2. Convert base to Montgomery form. */
|
/* 2. Convert base to Montgomery form. */
|
||||||
err = sp_mulmod(bm, t[0], m, bm);
|
err = _sp_mulmod(bm, t[0], m, bm);
|
||||||
}
|
}
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* Copy Montgomery form of base into first element of table. */
|
/* Copy Montgomery form of base into first element of table. */
|
||||||
@@ -13807,7 +13829,7 @@ static int _sp_exptmod_nct(const sp_int* b, const sp_int* e, const sp_int* m,
|
|||||||
err = sp_mont_norm(t[1], m);
|
err = sp_mont_norm(t[1], m);
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* 1. Convert base to Montgomery form. */
|
/* 1. Convert base to Montgomery form. */
|
||||||
err = sp_mulmod(t[0], t[1], m, t[0]);
|
err = _sp_mulmod(t[0], t[1], m, t[0]);
|
||||||
}
|
}
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
/* 2. Result starts as Montgomery form of base (assuming e > 0). */
|
/* 2. Result starts as Montgomery form of base (assuming e > 0). */
|
||||||
|
Reference in New Issue
Block a user