Skip to content

Commit 68f52cb

Browse files
add test case
1 parent 690d8f7 commit 68f52cb

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

tests/api.c

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53763,6 +53763,74 @@ static int test_MakeCertWithPathLen(void)
5376353763
return EXPECT_RESULT();
5376453764
}
5376553765

53766+
static int test_MakeCertWith0Ser(void)
53767+
{
53768+
EXPECT_DECLS;
53769+
#if defined(WOLFSSL_CERT_REQ) && !defined(NO_ASN_TIME) && \
53770+
defined(WOLFSSL_CERT_GEN) && defined(HAVE_ECC) && \
53771+
defined(WOLFSSL_ASN_TEMPLATE)
53772+
Cert cert;
53773+
DecodedCert decodedCert;
53774+
byte der[FOURK_BUF];
53775+
int derSize = 0;
53776+
WC_RNG rng;
53777+
ecc_key key;
53778+
int ret;
53779+
53780+
XMEMSET(&rng, 0, sizeof(WC_RNG));
53781+
XMEMSET(&key, 0, sizeof(ecc_key));
53782+
XMEMSET(&cert, 0, sizeof(Cert));
53783+
XMEMSET(&decodedCert, 0, sizeof(DecodedCert));
53784+
53785+
ExpectIntEQ(wc_InitRng(&rng), 0);
53786+
ExpectIntEQ(wc_ecc_init(&key), 0);
53787+
ExpectIntEQ(wc_ecc_make_key(&rng, 32, &key), 0);
53788+
ExpectIntEQ(wc_InitCert(&cert), 0);
53789+
53790+
(void)XSTRNCPY(cert.subject.country, "US", CTC_NAME_SIZE);
53791+
(void)XSTRNCPY(cert.subject.state, "state", CTC_NAME_SIZE);
53792+
(void)XSTRNCPY(cert.subject.locality, "Bozeman", CTC_NAME_SIZE);
53793+
(void)XSTRNCPY(cert.subject.org, "yourOrgNameHere", CTC_NAME_SIZE);
53794+
(void)XSTRNCPY(cert.subject.unit, "yourUnitNameHere", CTC_NAME_SIZE);
53795+
(void)XSTRNCPY(cert.subject.commonName, "www.yourDomain.com",
53796+
CTC_NAME_SIZE);
53797+
(void)XSTRNCPY(cert.subject.email, "yourEmail@yourDomain.com",
53798+
CTC_NAME_SIZE);
53799+
53800+
cert.selfSigned = 1;
53801+
cert.isCA = 1;
53802+
cert.sigType = CTC_SHA256wECDSA;
53803+
53804+
#ifdef WOLFSSL_CERT_EXT
53805+
cert.keyUsage |= KEYUSE_KEY_CERT_SIGN;
53806+
#endif
53807+
53808+
/* set serial number to 0 */
53809+
cert.serialSz = 1;
53810+
cert.serial[0] = 0;
53811+
53812+
ExpectIntGE(wc_MakeCert(&cert, der, FOURK_BUF, NULL, &key, &rng), 0);
53813+
ExpectIntGE(derSize = wc_SignCert(cert.bodySz, cert.sigType, der,
53814+
FOURK_BUF, NULL, &key, &rng), 0);
53815+
53816+
wc_InitDecodedCert(&decodedCert, der, (word32)derSize, NULL);
53817+
53818+
#ifndef WOLFSSL_NO_ASN_STRICT
53819+
ExpectIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL),
53820+
ASN_PARSE_E);
53821+
#else
53822+
ExpectIntEQ(wc_ParseCert(&decodedCert, CERT_TYPE, NO_VERIFY, NULL), 0);
53823+
#endif
53824+
53825+
wc_FreeDecodedCert(&decodedCert);
53826+
ret = wc_ecc_free(&key);
53827+
ExpectIntEQ(ret, 0);
53828+
ret = wc_FreeRng(&rng);
53829+
ExpectIntEQ(ret, 0);
53830+
#endif
53831+
return EXPECT_RESULT();
53832+
}
53833+
5376653834
static int test_MakeCertWithCaFalse(void)
5376753835
{
5376853836
EXPECT_DECLS;
@@ -73122,6 +73190,7 @@ TEST_CASE testCases[] = {
7312273190
TEST_DECL(test_wc_ParseCert),
7312373191
TEST_DECL(test_wc_ParseCert_Error),
7312473192
TEST_DECL(test_MakeCertWithPathLen),
73193+
TEST_DECL(test_MakeCertWith0Ser),
7312573194
TEST_DECL(test_MakeCertWithCaFalse),
7312673195
TEST_DECL(test_wc_SetKeyUsage),
7312773196
TEST_DECL(test_wc_SetAuthKeyIdFromPublicKey_ex),

0 commit comments

Comments
 (0)