Implement certificate chain stats.
There was an implementation, but it relied on SSLCertificate::GetChain,
which was never implemented. Except in the fake certificate classes
used by the stats collector tests, hence the tests were passing.
Instead of implementing GetChain, we decided (in
https://webrtc-review.googlesource.com/c/src/+/6500) to add
methods that return a SSLCertChain directly, since it results in a
somewhat cleaner object model.
So this CL switches everything to use the "chain" methods, and gets
rid of the obsolete methods and member variables.
Bug: webrtc:8920
Change-Id: Ie9d7d53654ba859535462521b54c788adec7badf
Reviewed-on: https://webrtc-review.googlesource.com/56961
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22177}
diff --git a/rtc_base/sslidentity_unittest.cc b/rtc_base/sslidentity_unittest.cc
index c26d8d7..e1dbe05 100644
--- a/rtc_base/sslidentity_unittest.cc
+++ b/rtc_base/sslidentity_unittest.cc
@@ -175,8 +175,7 @@
reinterpret_cast<const unsigned char*>(der.c_str()),
der.length()));
}
- info.identity.reset(
- new rtc::FakeSSLIdentity(rtc::FakeSSLCertificate(info.pems)));
+ info.identity.reset(new rtc::FakeSSLIdentity(info.pems));
// Strip header/footer and newline characters of PEM strings.
for (size_t i = 0; i < info.pems.size(); ++i) {
rtc::replace_substrs("-----BEGIN CERTIFICATE-----", 27,
@@ -186,20 +185,14 @@
rtc::replace_substrs("\n", 1,
"", 0, &info.pems[i]);
}
- // Fingerprint of leaf certificate.
- std::unique_ptr<rtc::SSLFingerprint> fp(
- rtc::SSLFingerprint::Create("sha-1", &info.identity->certificate()));
- EXPECT_TRUE(fp);
- info.fingerprints.push_back(fp->GetRfc4572Fingerprint());
- // Fingerprints of the rest of the chain.
- std::unique_ptr<rtc::SSLCertChain> chain =
- info.identity->certificate().GetChain();
- if (chain) {
- for (size_t i = 0; i < chain->GetSize(); i++) {
- fp.reset(rtc::SSLFingerprint::Create("sha-1", &chain->Get(i)));
- EXPECT_TRUE(fp);
- info.fingerprints.push_back(fp->GetRfc4572Fingerprint());
- }
+ // Fingerprints for the whole certificate chain, starting with leaf
+ // certificate.
+ const rtc::SSLCertChain& chain = info.identity->cert_chain();
+ std::unique_ptr<rtc::SSLFingerprint> fp;
+ for (size_t i = 0; i < chain.GetSize(); i++) {
+ fp.reset(rtc::SSLFingerprint::Create("sha-1", &chain.Get(i)));
+ EXPECT_TRUE(fp);
+ info.fingerprints.push_back(fp->GetRfc4572Fingerprint());
}
EXPECT_EQ(info.ders.size(), info.fingerprints.size());
return info;
@@ -477,7 +470,7 @@
EXPECT_EQ(info.fingerprints.size(), info.ders.size());
std::unique_ptr<rtc::SSLCertificateStats> first_stats =
- info.identity->certificate().GetStats();
+ info.identity->cert_chain().GetStats();
rtc::SSLCertificateStats* cert_stats = first_stats.get();
for (size_t i = 0; i < info.ders.size(); ++i) {
EXPECT_EQ(cert_stats->fingerprint, info.fingerprints[i]);