@@ -1199,27 +1199,19 @@ Error SecureTransport::Extension::GetPeerCertificateBase64(unsigned char *aPeerC
11991199 size_t *aCertLength,
12001200 size_t aCertBufferSize)
12011201{
1202- Error error = kErrorNone ;
1203- SecureSession *session = mSecureTransport .mSessions .GetHead ();
1202+ Error error = kErrorNone ;
1203+ SecureSession *session;
1204+ const mbedtls_x509_crt *peerCert;
12041205
1206+ session = mSecureTransport .mSessions .GetHead ();
12051207 VerifyOrExit (session != nullptr , error = kErrorInvalidState );
12061208 VerifyOrExit (session->IsConnected (), error = kErrorInvalidState );
12071209
1208- #if (MBEDTLS_VERSION_NUMBER >= 0x03010000)
1209- VerifyOrExit (mbedtls_base64_encode (aPeerCert, aCertBufferSize, aCertLength,
1210- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .p ,
1211- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .len ) ==
1212- 0 ,
1210+ peerCert = mbedtls_ssl_get_peer_cert (&session->mSsl );
1211+ VerifyOrExit (peerCert != nullptr , error = kErrorInvalidState );
1212+
1213+ VerifyOrExit (mbedtls_base64_encode (aPeerCert, aCertBufferSize, aCertLength, peerCert->raw .p , peerCert->raw .len ) == 0 ,
12131214 error = kErrorNoBufs );
1214- #else
1215- VerifyOrExit (
1216- mbedtls_base64_encode (
1217- aPeerCert, aCertBufferSize, aCertLength,
1218- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->MBEDTLS_PRIVATE (raw).MBEDTLS_PRIVATE (p),
1219- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->MBEDTLS_PRIVATE (raw).MBEDTLS_PRIVATE (
1220- len)) == 0 ,
1221- error = kErrorNoBufs );
1222- #endif
12231215
12241216exit:
12251217 return error;
@@ -1229,30 +1221,21 @@ Error SecureTransport::Extension::GetPeerCertificateBase64(unsigned char *aPeerC
12291221#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
12301222Error SecureTransport::Extension::GetPeerCertificateDer (uint8_t *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
12311223{
1232- Error error = kErrorNone ;
1233- SecureSession *session = mSecureTransport .mSessions .GetHead ();
1224+ Error error = kErrorNone ;
1225+ SecureSession *session;
1226+ const mbedtls_x509_crt *peerCert;
12341227
1228+ session = mSecureTransport .mSessions .GetHead ();
1229+ VerifyOrExit (session != nullptr , error = kErrorInvalidState );
12351230 VerifyOrExit (session->IsConnected (), error = kErrorInvalidState );
12361231
1237- #if (MBEDTLS_VERSION_NUMBER >= 0x03010000)
1238- VerifyOrExit (session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .len < aCertBufferSize,
1239- error = kErrorNoBufs );
1232+ peerCert = mbedtls_ssl_get_peer_cert (&session->mSsl );
1233+ VerifyOrExit (peerCert != nullptr , error = kErrorInvalidState );
12401234
1241- *aCertLength = session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .len ;
1242- memcpy (aPeerCert, session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .p , *aCertLength);
1235+ VerifyOrExit (peerCert->raw .len <= aCertBufferSize, error = kErrorNoBufs );
12431236
1244- #else
1245- VerifyOrExit (
1246- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->MBEDTLS_PRIVATE (raw).MBEDTLS_PRIVATE (len) <
1247- aCertBufferSize,
1248- error = kErrorNoBufs );
1249-
1250- *aCertLength =
1251- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->MBEDTLS_PRIVATE (raw).MBEDTLS_PRIVATE (len);
1252- memcpy (aPeerCert,
1253- session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->MBEDTLS_PRIVATE (raw).MBEDTLS_PRIVATE (p),
1254- *aCertLength);
1255- #endif
1237+ *aCertLength = peerCert->raw .len ;
1238+ memcpy (aPeerCert, peerCert->raw .p , *aCertLength);
12561239
12571240exit:
12581241 return error;
0 commit comments