@@ -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