Skip to content

Commit

Permalink
Check that serial number is not negative
Browse files Browse the repository at this point in the history
  • Loading branch information
pan-apple committed May 3, 2021
1 parent 241fc67 commit cf1e898
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/credentials/GenerateChipX509Cert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,8 @@ CHIP_ERROR EncodeTBSCert(const X509CertRequestParams & requestParams, Certificat
uint8_t numDNs = 1;
bool isCA = true;

VerifyOrReturnError(requestParams.SerialNumber > 0, CHIP_ERROR_INVALID_ARGUMENT);

ASN1_START_SEQUENCE
{
// version [0] EXPLICIT Version DEFAULT v1
Expand Down
22 changes: 22 additions & 0 deletions src/credentials/tests/TestChipCert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -665,6 +665,13 @@ static void TestChipCert_GenerateRootCert(nlTestSuite * inSuite, void * inContex
NL_TEST_ASSERT(inSuite,
NewRootX509Cert(root_params, keypair, signed_cert, sizeof(signed_cert), signed_len) ==
CHIP_ERROR_INVALID_ARGUMENT);

// Test that serial number cannot be negative
root_params.HasNodeID = false;
root_params.SerialNumber = -1;
NL_TEST_ASSERT(inSuite,
NewRootX509Cert(root_params, keypair, signed_cert, sizeof(signed_cert), signed_len) ==
CHIP_ERROR_INVALID_ARGUMENT);
}

static void TestChipCert_GenerateRootFabCert(nlTestSuite * inSuite, void * inContext)
Expand Down Expand Up @@ -724,6 +731,13 @@ static void TestChipCert_GenerateICACert(nlTestSuite * inSuite, void * inContext
NL_TEST_ASSERT(inSuite,
NewICAX509Cert(ica_params, 4321, ica_keypair.Pubkey(), keypair, signed_cert, sizeof(signed_cert), signed_len) ==
CHIP_ERROR_INVALID_ARGUMENT);

// Test that serial number cannot be negative
ica_params.HasNodeID = false;
ica_params.SerialNumber = -1;
NL_TEST_ASSERT(inSuite,
NewICAX509Cert(ica_params, 4321, ica_keypair.Pubkey(), keypair, signed_cert, sizeof(signed_cert), signed_len) ==
CHIP_ERROR_INVALID_ARGUMENT);
}

static void TestChipCert_GenerateNOCRoot(nlTestSuite * inSuite, void * inContext)
Expand Down Expand Up @@ -765,6 +779,14 @@ static void TestChipCert_GenerateNOCRoot(nlTestSuite * inSuite, void * inContext
NL_TEST_ASSERT(inSuite,
NewNodeOperationalX509Cert(noc_params, kIssuerIsRootCA, noc_keypair.Pubkey(), keypair, signed_cert,
sizeof(signed_cert), signed_len) == CHIP_ERROR_INVALID_ARGUMENT);

// Test that serial number cannot be negative
noc_params.HasNodeID = true;
noc_params.HasFabricID = true;
noc_params.SerialNumber = -1;
NL_TEST_ASSERT(inSuite,
NewNodeOperationalX509Cert(noc_params, kIssuerIsRootCA, noc_keypair.Pubkey(), keypair, signed_cert,
sizeof(signed_cert), signed_len) == CHIP_ERROR_INVALID_ARGUMENT);
}

static void TestChipCert_GenerateNOCICA(nlTestSuite * inSuite, void * inContext)
Expand Down

0 comments on commit cf1e898

Please sign in to comment.