From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- .../libwebrtc/rtc_base/fake_ssl_identity.cc | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 third_party/libwebrtc/rtc_base/fake_ssl_identity.cc (limited to 'third_party/libwebrtc/rtc_base/fake_ssl_identity.cc') diff --git a/third_party/libwebrtc/rtc_base/fake_ssl_identity.cc b/third_party/libwebrtc/rtc_base/fake_ssl_identity.cc new file mode 100644 index 0000000000..73c843a2e7 --- /dev/null +++ b/third_party/libwebrtc/rtc_base/fake_ssl_identity.cc @@ -0,0 +1,121 @@ +/* + * Copyright 2017 The WebRTC Project Authors. All rights reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "rtc_base/fake_ssl_identity.h" + +#include +#include +#include + +#include "absl/strings/string_view.h" +#include "rtc_base/checks.h" +#include "rtc_base/message_digest.h" + +namespace rtc { + +FakeSSLCertificate::FakeSSLCertificate(absl::string_view pem_string) + : pem_string_(pem_string), + digest_algorithm_(DIGEST_SHA_1), + expiration_time_(-1) {} + +FakeSSLCertificate::FakeSSLCertificate(const FakeSSLCertificate&) = default; + +FakeSSLCertificate::~FakeSSLCertificate() = default; + +std::unique_ptr FakeSSLCertificate::Clone() const { + return std::make_unique(*this); +} + +std::string FakeSSLCertificate::ToPEMString() const { + return pem_string_; +} + +void FakeSSLCertificate::ToDER(Buffer* der_buffer) const { + std::string der_string; + RTC_CHECK( + SSLIdentity::PemToDer(kPemTypeCertificate, pem_string_, &der_string)); + der_buffer->SetData(der_string.c_str(), der_string.size()); +} + +int64_t FakeSSLCertificate::CertificateExpirationTime() const { + return expiration_time_; +} + +void FakeSSLCertificate::SetCertificateExpirationTime(int64_t expiration_time) { + expiration_time_ = expiration_time; +} + +void FakeSSLCertificate::set_digest_algorithm(absl::string_view algorithm) { + digest_algorithm_ = std::string(algorithm); +} + +bool FakeSSLCertificate::GetSignatureDigestAlgorithm( + std::string* algorithm) const { + *algorithm = digest_algorithm_; + return true; +} + +bool FakeSSLCertificate::ComputeDigest(absl::string_view algorithm, + unsigned char* digest, + size_t size, + size_t* length) const { + *length = rtc::ComputeDigest(algorithm, pem_string_.c_str(), + pem_string_.size(), digest, size); + return (*length != 0); +} + +FakeSSLIdentity::FakeSSLIdentity(absl::string_view pem_string) + : FakeSSLIdentity(FakeSSLCertificate(pem_string)) {} + +FakeSSLIdentity::FakeSSLIdentity(const std::vector& pem_strings) { + std::vector> certs; + certs.reserve(pem_strings.size()); + for (const std::string& pem_string : pem_strings) { + certs.push_back(std::make_unique(pem_string)); + } + cert_chain_ = std::make_unique(std::move(certs)); +} + +FakeSSLIdentity::FakeSSLIdentity(const FakeSSLCertificate& cert) + : cert_chain_(std::make_unique(cert.Clone())) {} + +FakeSSLIdentity::FakeSSLIdentity(const FakeSSLIdentity& o) + : cert_chain_(o.cert_chain_->Clone()) {} + +FakeSSLIdentity::~FakeSSLIdentity() = default; + +std::unique_ptr FakeSSLIdentity::CloneInternal() const { + return std::make_unique(*this); +} + +const SSLCertificate& FakeSSLIdentity::certificate() const { + return cert_chain_->Get(0); +} + +const SSLCertChain& FakeSSLIdentity::cert_chain() const { + return *cert_chain_.get(); +} + +std::string FakeSSLIdentity::PrivateKeyToPEMString() const { + RTC_DCHECK_NOTREACHED(); // Not implemented. + return ""; +} + +std::string FakeSSLIdentity::PublicKeyToPEMString() const { + RTC_DCHECK_NOTREACHED(); // Not implemented. + return ""; +} + +bool FakeSSLIdentity::operator==(const SSLIdentity& other) const { + RTC_DCHECK_NOTREACHED(); // Not implemented. + return false; +} + +} // namespace rtc -- cgit v1.2.3