Skip to content

Commit 3b50b2e

Browse files
authored
[OpenSSL] Removing deprecated functions + Adding missing nullptr check (project-chip#40590)
* changing deprecated functions to new functions * Adding nullptr check and stop using strlen * integrate gemini comments * cast int to size_t since triggering macOs build error
1 parent b3764e8 commit 3b50b2e

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

src/crypto/CHIPCryptoPALOpenSSL.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1686,8 +1686,8 @@ CHIP_ERROR VerifyAttestationCertificateFormat(const ByteSpan & cert, Attestation
16861686
VerifyOrExit(X509_get_serialNumber(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
16871687
VerifyOrExit(X509_get_signature_nid(x509Cert) == NID_ecdsa_with_SHA256, err = CHIP_ERROR_INTERNAL);
16881688
VerifyOrExit(X509_get_issuer_name(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
1689-
VerifyOrExit(X509_get_notBefore(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
1690-
VerifyOrExit(X509_get_notAfter(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
1689+
VerifyOrExit(X509_getm_notBefore(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
1690+
VerifyOrExit(X509_getm_notAfter(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
16911691
VerifyOrExit(X509_get_subject_name(x509Cert) != nullptr, err = CHIP_ERROR_INTERNAL);
16921692

16931693
// Verify public key presence and format.
@@ -1843,12 +1843,16 @@ CHIP_ERROR ValidateCertificateChain(const uint8_t * rootCertificate, size_t root
18431843
{
18441844
X509_VERIFY_PARAM * param = X509_STORE_CTX_get0_param(verifyCtx);
18451845
chip::ASN1::ASN1UniversalTime asn1Time;
1846-
char * asn1TimeStr = reinterpret_cast<char *>(X509_get_notBefore(x509LeafCertificate)->data);
18471846
uint32_t unixEpoch;
18481847

18491848
VerifyOrExit(param != nullptr, (result = CertificateChainValidationResult::kNoMemory, err = CHIP_ERROR_NO_MEMORY));
18501849

1851-
VerifyOrExit(CHIP_NO_ERROR == asn1Time.ImportFrom_ASN1_TIME_string(CharSpan(asn1TimeStr, strlen(asn1TimeStr))),
1850+
ASN1_TIME * pNotBefore = X509_getm_notBefore(x509LeafCertificate);
1851+
VerifyOrExit(pNotBefore != nullptr,
1852+
(result = CertificateChainValidationResult::kLeafFormatInvalid, err = CHIP_ERROR_INTERNAL));
1853+
CharSpan asn1TimeSpan(reinterpret_cast<char *>(pNotBefore->data), static_cast<size_t>(pNotBefore->length));
1854+
1855+
VerifyOrExit(CHIP_NO_ERROR == asn1Time.ImportFrom_ASN1_TIME_string(asn1TimeSpan),
18521856
(result = CertificateChainValidationResult::kLeafFormatInvalid, err = CHIP_ERROR_INTERNAL));
18531857

18541858
VerifyOrExit(asn1Time.ExportTo_UnixTime(unixEpoch),
@@ -1901,9 +1905,9 @@ CHIP_ERROR IsCertificateValidAtIssuance(const ByteSpan & candidateCertificate, c
19011905
x509issuerCertificate = d2i_X509(nullptr, &pIssuerCertificate, static_cast<long>(issuerCertificate.size()));
19021906
VerifyOrExit(x509issuerCertificate != nullptr, error = CHIP_ERROR_NO_MEMORY);
19031907

1904-
candidateNotBeforeTime = X509_get_notBefore(x509CandidateCertificate);
1905-
issuerNotBeforeTime = X509_get_notBefore(x509issuerCertificate);
1906-
issuerNotAfterTime = X509_get_notAfter(x509issuerCertificate);
1908+
candidateNotBeforeTime = X509_getm_notBefore(x509CandidateCertificate);
1909+
issuerNotBeforeTime = X509_getm_notBefore(x509issuerCertificate);
1910+
issuerNotAfterTime = X509_getm_notAfter(x509issuerCertificate);
19071911
VerifyOrExit(candidateNotBeforeTime && issuerNotBeforeTime && issuerNotAfterTime, error = CHIP_ERROR_INTERNAL);
19081912

19091913
result = ASN1_TIME_diff(&days, &seconds, issuerNotBeforeTime, candidateNotBeforeTime);
@@ -1940,14 +1944,14 @@ CHIP_ERROR IsCertificateValidAtCurrentTime(const ByteSpan & certificate)
19401944
x509Certificate = d2i_X509(nullptr, &pCertificate, static_cast<long>(certificate.size()));
19411945
VerifyOrExit(x509Certificate != nullptr, error = CHIP_ERROR_NO_MEMORY);
19421946

1943-
time = X509_get_notBefore(x509Certificate);
1947+
time = X509_getm_notBefore(x509Certificate);
19441948
VerifyOrExit(time, error = CHIP_ERROR_INTERNAL);
19451949

19461950
result = X509_cmp_current_time(time);
19471951
// check if certificate's notBefore timestamp is earlier than or equal to current time.
19481952
VerifyOrExit(result == -1, error = CHIP_ERROR_CERT_EXPIRED);
19491953

1950-
time = X509_get_notAfter(x509Certificate);
1954+
time = X509_getm_notAfter(x509Certificate);
19511955
VerifyOrExit(time, error = CHIP_ERROR_INTERNAL);
19521956

19531957
result = X509_cmp_current_time(time);

0 commit comments

Comments
 (0)