Fix OpenSSLIdentity::GetReference.

It didn't retain the chain.

Bug: none
Change-Id: I8e88c5e060d91d8f5e7ebade6ea8e65b3e5a416e
Reviewed-on: https://webrtc-review.googlesource.com/28360
Commit-Queue: David Benjamin <davidben@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21145}
This commit is contained in:
David Benjamin 2017-12-01 17:25:45 -05:00 committed by Commit Bot
parent 062a8ead3b
commit ea84b6bf49
2 changed files with 16 additions and 1 deletions

View file

@ -598,7 +598,7 @@ const OpenSSLCertificate& OpenSSLIdentity::certificate() const {
OpenSSLIdentity* OpenSSLIdentity::GetReference() const {
return new OpenSSLIdentity(WrapUnique(key_pair_->GetReference()),
WrapUnique(certificate().GetReference()));
WrapUnique(cert_chain_->Copy()));
}
bool OpenSSLIdentity::ConfigureIdentity(SSL_CTX* ctx) {

View file

@ -991,6 +991,21 @@ TEST_F(SSLStreamAdapterTestDTLSCertChain, TwoCertHandshake) {
EXPECT_EQ(kCACert, peer_cert_chain->Get(1).ToPEMString());
}
TEST_F(SSLStreamAdapterTestDTLSCertChain, TwoCertHandshakeWithCopy) {
std::unique_ptr<rtc::SSLIdentity> identity(
rtc::SSLIdentity::FromPEMChainStrings(kRSA_PRIVATE_KEY_PEM,
std::string(kCERT_PEM) + kCACert));
server_identity_ = identity->GetReference();
server_ssl_->SetIdentity(server_identity_);
TestHandshake();
std::unique_ptr<rtc::SSLCertChain> peer_cert_chain =
client_ssl_->GetPeerSSLCertChain();
ASSERT_NE(nullptr, peer_cert_chain);
ASSERT_EQ(2u, peer_cert_chain->GetSize());
EXPECT_EQ(kCERT_PEM, peer_cert_chain->Get(0).ToPEMString());
EXPECT_EQ(kCACert, peer_cert_chain->Get(1).ToPEMString());
}
TEST_F(SSLStreamAdapterTestDTLSCertChain, ThreeCertHandshake) {
server_identity_ = rtc::SSLIdentity::FromPEMChainStrings(
kRSA_PRIVATE_KEY_PEM, std::string(kCERT_PEM) + kIntCert1 + kCACert);