@@ -1199,27 +1199,20 @@ 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 ) ==
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 ) ==
12121214 0 ,
12131215 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
12231216
12241217exit:
12251218 return error;
@@ -1229,30 +1222,21 @@ Error SecureTransport::Extension::GetPeerCertificateBase64(unsigned char *aPeerC
12291222#if defined(MBEDTLS_SSL_KEEP_PEER_CERTIFICATE)
12301223Error SecureTransport::Extension::GetPeerCertificateDer (uint8_t *aPeerCert, size_t *aCertLength, size_t aCertBufferSize)
12311224{
1232- Error error = kErrorNone ;
1233- SecureSession *session = mSecureTransport .mSessions .GetHead ();
1225+ Error error = kErrorNone ;
1226+ SecureSession *session;
1227+ const mbedtls_x509_crt *peerCert;
12341228
1229+ session = mSecureTransport .mSessions .GetHead ();
1230+ VerifyOrExit (session != nullptr , error = kErrorInvalidState );
12351231 VerifyOrExit (session->IsConnected (), error = kErrorInvalidState );
12361232
1237- #if (MBEDTLS_VERSION_NUMBER >= 0x03010000)
1238- VerifyOrExit (session->mSsl .MBEDTLS_PRIVATE (session)->MBEDTLS_PRIVATE (peer_cert)->raw .len < aCertBufferSize,
1239- error = kErrorNoBufs );
1233+ peerCert = mbedtls_ssl_get_peer_cert (&session->mSsl );
1234+ VerifyOrExit (peerCert != nullptr , error = kErrorInvalidState );
12401235
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);
1236+ VerifyOrExit (peerCert->raw .len <= aCertBufferSize, error = kErrorNoBufs );
12431237
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
1238+ *aCertLength = peerCert->raw .len ;
1239+ memcpy (aPeerCert, peerCert->raw .p , *aCertLength);
12561240
12571241exit:
12581242 return error;
0 commit comments