Change how we get the current cert in SSLVerifyCallback when using OpenSSL.

Use X509_STORE_CTX_get0_cert instead of SSL_get_peer_certificate.
In OpenSSL SSL_get_peer_certificate can only be used after the TLS session is established. Use X509_STORE_CTX_get0_cert instead.

https://bugs.chromium.org/p/webrtc/issues/detail?id=9272


Bug: webrtc:9272
Change-Id: I1f3288748c2ef8f50249713805bedffe59433961
Reviewed-on: https://webrtc-review.googlesource.com/78640
Reviewed-by: David Benjamin <davidben@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Jiawei Ou <ouj@fb.com>
Cr-Commit-Position: refs/heads/master@{#23376}
This commit is contained in:
Jiawei Ou
2018-05-23 15:44:20 -07:00
committed by Commit Bot
parent cefc46517e
commit 9d4e840617

View File

@ -1108,10 +1108,9 @@ int OpenSSLStreamAdapter::SSLVerifyCallback(X509_STORE_CTX* store, void* arg) {
stream->peer_cert_chain_.reset(new SSLCertChain(std::move(cert_chain)));
#else
// Record the peer's certificate.
X509* cert = SSL_get_peer_certificate(ssl);
X509* cert = X509_STORE_CTX_get0_cert(store);
stream->peer_cert_chain_.reset(
new SSLCertChain(new OpenSSLCertificate(cert)));
X509_free(cert);
#endif
// If the peer certificate digest isn't known yet, we'll wait to verify