summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/rtc_base/fake_ssl_identity.cc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /third_party/libwebrtc/rtc_base/fake_ssl_identity.cc
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/libwebrtc/rtc_base/fake_ssl_identity.cc')
-rw-r--r--third_party/libwebrtc/rtc_base/fake_ssl_identity.cc121
1 files changed, 121 insertions, 0 deletions
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 <memory>
+#include <string>
+#include <utility>
+
+#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<SSLCertificate> FakeSSLCertificate::Clone() const {
+ return std::make_unique<FakeSSLCertificate>(*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<std::string>& pem_strings) {
+ std::vector<std::unique_ptr<SSLCertificate>> certs;
+ certs.reserve(pem_strings.size());
+ for (const std::string& pem_string : pem_strings) {
+ certs.push_back(std::make_unique<FakeSSLCertificate>(pem_string));
+ }
+ cert_chain_ = std::make_unique<SSLCertChain>(std::move(certs));
+}
+
+FakeSSLIdentity::FakeSSLIdentity(const FakeSSLCertificate& cert)
+ : cert_chain_(std::make_unique<SSLCertChain>(cert.Clone())) {}
+
+FakeSSLIdentity::FakeSSLIdentity(const FakeSSLIdentity& o)
+ : cert_chain_(o.cert_chain_->Clone()) {}
+
+FakeSSLIdentity::~FakeSSLIdentity() = default;
+
+std::unique_ptr<SSLIdentity> FakeSSLIdentity::CloneInternal() const {
+ return std::make_unique<FakeSSLIdentity>(*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