mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-29 18:27:29 +02:00
Merge pull request #7791 from aidangarske/privkeytoder_fix2
`api.c` and `asn.c` changes to allow 0 to be passed in and expanded coverage on test cases.
This commit is contained in:
36
tests/api.c
36
tests/api.c
@ -23718,7 +23718,11 @@ static int test_wc_Ed25519PublicKeyToDer(void)
|
||||
ExpectIntEQ(wc_ed25519_init(&key), 0);
|
||||
ExpectIntEQ(wc_InitRng(&rng), 0);
|
||||
ExpectIntEQ(wc_ed25519_make_key(&rng, ED25519_KEY_SIZE, &key), 0);
|
||||
ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, derBuf, 1024, 1), 0);
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 0), 0);
|
||||
ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, NULL, 0, 1), 0);
|
||||
ExpectIntGT(wc_Ed25519PublicKeyToDer(&key, derBuf,
|
||||
(word32)sizeof(derBuf), 1), 0);
|
||||
|
||||
DoExpectIntEQ(wc_FreeRng(&rng), 0);
|
||||
wc_ed25519_free(&key);
|
||||
@ -24611,8 +24615,11 @@ static int test_wc_Ed448PublicKeyToDer(void)
|
||||
ExpectIntEQ(wc_ed448_init(&key), 0);
|
||||
ExpectIntEQ(wc_InitRng(&rng), 0);
|
||||
ExpectIntEQ(wc_ed448_make_key(&rng, ED448_KEY_SIZE, &key), 0);
|
||||
|
||||
ExpectIntGT(wc_Ed448PublicKeyToDer(&key, derBuf, 1024, 1), 0);
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 0), 0);
|
||||
ExpectIntGT(wc_Ed448PublicKeyToDer(&key, NULL, 0, 1), 0);
|
||||
ExpectIntGT(wc_Ed448PublicKeyToDer(&key, derBuf,
|
||||
(word32)sizeof(derBuf), 1), 0);
|
||||
|
||||
DoExpectIntEQ(wc_FreeRng(&rng), 0);
|
||||
wc_ed448_free(&key);
|
||||
@ -27238,9 +27245,10 @@ static int test_wc_Ed25519KeyToDer(void)
|
||||
/* Bad Cases */
|
||||
ExpectIntEQ(wc_Ed25519KeyToDer(NULL, NULL, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed25519KeyToDer(NULL, output, inLen), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed25519KeyToDer(&ed25519Key, output, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed25519KeyToDer(&ed25519Key, output, 0), BUFFER_E);
|
||||
/* Good Cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, 0), 0);
|
||||
ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, NULL, inLen), 0);
|
||||
ExpectIntGT(wc_Ed25519KeyToDer(&ed25519Key, output, inLen), 0);
|
||||
|
||||
@ -27276,10 +27284,10 @@ static int test_wc_Ed25519PrivateKeyToDer(void)
|
||||
ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed25519PrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, 0),
|
||||
BAD_FUNC_ARG);
|
||||
BUFFER_E);
|
||||
/* Good Cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, inLen), 0);
|
||||
ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, NULL, 0), 0);
|
||||
ExpectIntGT(wc_Ed25519PrivateKeyToDer(&ed25519PrivKey, output, inLen), 0);
|
||||
|
||||
DoExpectIntEQ(wc_FreeRng(&rng), 0);
|
||||
@ -27312,10 +27320,10 @@ static int test_wc_Ed448KeyToDer(void)
|
||||
/* Bad Cases */
|
||||
ExpectIntEQ(wc_Ed448KeyToDer(NULL, NULL, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed448KeyToDer(NULL, output, inLen), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed448KeyToDer(&ed448Key, output, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed448KeyToDer(&ed448Key, output, 0), BUFFER_E);
|
||||
/* Good Cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, NULL, inLen), 0);
|
||||
ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, NULL, 0), 0);
|
||||
ExpectIntGT(wc_Ed448KeyToDer(&ed448Key, output, inLen), 0);
|
||||
|
||||
DoExpectIntEQ(wc_FreeRng(&rng), 0);
|
||||
@ -27350,10 +27358,10 @@ static int test_wc_Ed448PrivateKeyToDer(void)
|
||||
ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed448PrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, 0),
|
||||
BAD_FUNC_ARG);
|
||||
BUFFER_E);
|
||||
/* Good cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, inLen), 0);
|
||||
ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, NULL, 0), 0);
|
||||
ExpectIntGT(wc_Ed448PrivateKeyToDer(&ed448PrivKey, output, inLen), 0);
|
||||
|
||||
DoExpectIntEQ(wc_FreeRng(&rng), 0);
|
||||
@ -27388,10 +27396,10 @@ static int test_wc_Curve448PrivateKeyToDer(void)
|
||||
ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, NULL, 0), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Curve448PrivateKeyToDer(NULL, output, inLen), BAD_FUNC_ARG);
|
||||
ExpectIntEQ(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, 0),
|
||||
BAD_FUNC_ARG);
|
||||
BUFFER_E);
|
||||
/* Good cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, NULL, inLen), 0);
|
||||
ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, NULL, 0), 0);
|
||||
ExpectIntGT(wc_Curve448PrivateKeyToDer(&curve448PrivKey, output, inLen), 0);
|
||||
|
||||
/* Bad Cases */
|
||||
@ -27403,8 +27411,8 @@ static int test_wc_Curve448PrivateKeyToDer(void)
|
||||
BUFFER_E);
|
||||
/* Good cases */
|
||||
/* length only */
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, inLen, 0), 0);
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, inLen, 1), 0);
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 0), 0);
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, NULL, 0, 1), 0);
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 0), 0);
|
||||
ExpectIntGT(wc_Curve448PublicKeyToDer(&curve448PrivKey, output, inLen, 1), 0);
|
||||
|
||||
|
@ -12012,9 +12012,13 @@ int SetAsymKeyDerPublic(const byte* pubKey, word32 pubKeyLen,
|
||||
DECL_ASNSETDATA(dataASN, edPubKeyASN_Length);
|
||||
#endif
|
||||
|
||||
if (pubKey == NULL) {
|
||||
/* validate parameters */
|
||||
if (pubKey == NULL){
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
if (output != NULL && outLen == 0) {
|
||||
return BUFFER_E;
|
||||
}
|
||||
|
||||
#ifndef WOLFSSL_ASN_TEMPLATE
|
||||
/* calculate size */
|
||||
@ -35370,10 +35374,13 @@ int SetAsymKeyDer(const byte* privKey, word32 privKeyLen,
|
||||
int sz;
|
||||
#endif
|
||||
|
||||
/* Validate parameters. */
|
||||
if (privKey == NULL || outLen == 0) {
|
||||
/* validate parameters */
|
||||
if (privKey == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
if (output != NULL && outLen == 0) {
|
||||
return BUFFER_E;
|
||||
}
|
||||
|
||||
#ifndef WOLFSSL_ASN_TEMPLATE
|
||||
/* calculate size */
|
||||
@ -35531,7 +35538,7 @@ int wc_Curve25519PublicKeyToDer(curve25519_key* key, byte* output, word32 inLen,
|
||||
byte pubKey[CURVE25519_PUB_KEY_SIZE];
|
||||
word32 pubKeyLen = (word32)sizeof(pubKey);
|
||||
|
||||
if (key == NULL || output == NULL) {
|
||||
if (key == NULL) {
|
||||
return BAD_FUNC_ARG;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user