SSL_get_peer_cert_chain() does not work after a resumption
authorMatt Caswell <matt@openssl.org>
Tue, 14 Mar 2017 17:27:46 +0000 (17:27 +0000)
committerMatt Caswell <matt@openssl.org>
Tue, 14 Mar 2017 23:15:21 +0000 (23:15 +0000)
After a resumption it is documented that SSL_get_peer_cert_chain() will
return NULL. In BoringSSL it still returns the chain. We don't support that
so we should update the shim to call SSL_get_peer_certificate() instead
when checking whether a peer certificate is available.

Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2942)

test/ossl_shim/ossl_shim.cc

index be589e36d1b1f39f5366d6708f686d1d8b5874ca..9607e528d83e54786b6728de9afb6f9b8730b1cc 100644 (file)
@@ -857,7 +857,7 @@ static bool CheckHandshakeProperties(SSL *ssl, bool is_resume) {
       return false;
     }
   } else if (!config->is_server || config->require_any_client_certificate) {
-    if (SSL_get_peer_cert_chain(ssl) == nullptr) {
+    if (SSL_get_peer_certificate(ssl) == nullptr) {
       fprintf(stderr, "Received no peer certificate but expected one.\n");
       return false;
     }