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}
diff --git a/rtc_base/sslstreamadapter_unittest.cc b/rtc_base/sslstreamadapter_unittest.cc
index c4962e8..41ff09b 100644
--- a/rtc_base/sslstreamadapter_unittest.cc
+++ b/rtc_base/sslstreamadapter_unittest.cc
@@ -991,6 +991,21 @@
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);