Index: webrtc/base/rtccertificategenerator.cc |
diff --git a/webrtc/base/rtccertificategenerator.cc b/webrtc/base/rtccertificategenerator.cc |
deleted file mode 100644 |
index 461a00cd0942c13a97043d0dbb467920be435cb4..0000000000000000000000000000000000000000 |
--- a/webrtc/base/rtccertificategenerator.cc |
+++ /dev/null |
@@ -1,160 +0,0 @@ |
-/* |
- * Copyright 2016 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 "webrtc/base/rtccertificategenerator.h" |
- |
-#include <algorithm> |
-#include <memory> |
- |
-#include "webrtc/base/checks.h" |
-#include "webrtc/base/sslidentity.h" |
- |
-namespace rtc { |
- |
-namespace { |
- |
-// A certificates' subject and issuer name. |
-const char kIdentityName[] = "WebRTC"; |
- |
-uint64_t kYearInSeconds = 365 * 24 * 60 * 60; |
- |
-enum { |
- MSG_GENERATE, |
- MSG_GENERATE_DONE, |
-}; |
- |
-// Helper class for generating certificates asynchronously; a single task |
-// instance is responsible for a single asynchronous certificate generation |
-// request. We are using a separate helper class so that a generation request |
-// can outlive the |RTCCertificateGenerator| that spawned it. |
-class RTCCertificateGenerationTask : public RefCountInterface, |
- public MessageHandler { |
- public: |
- RTCCertificateGenerationTask( |
- Thread* signaling_thread, |
- Thread* worker_thread, |
- const KeyParams& key_params, |
- const Optional<uint64_t>& expires_ms, |
- const scoped_refptr<RTCCertificateGeneratorCallback>& callback) |
- : signaling_thread_(signaling_thread), |
- worker_thread_(worker_thread), |
- key_params_(key_params), |
- expires_ms_(expires_ms), |
- callback_(callback) { |
- RTC_DCHECK(signaling_thread_); |
- RTC_DCHECK(worker_thread_); |
- RTC_DCHECK(callback_); |
- } |
- ~RTCCertificateGenerationTask() override {} |
- |
- // Handles |MSG_GENERATE| and its follow-up |MSG_GENERATE_DONE|. |
- void OnMessage(Message* msg) override { |
- switch (msg->message_id) { |
- case MSG_GENERATE: |
- RTC_DCHECK(worker_thread_->IsCurrent()); |
- |
- // Perform the certificate generation work here on the worker thread. |
- certificate_ = RTCCertificateGenerator::GenerateCertificate( |
- key_params_, expires_ms_); |
- |
- // Handle callbacks on signaling thread. Pass on the |msg->pdata| |
- // (which references |this| with ref counting) to that thread. |
- signaling_thread_->Post(RTC_FROM_HERE, this, MSG_GENERATE_DONE, |
- msg->pdata); |
- break; |
- case MSG_GENERATE_DONE: |
- RTC_DCHECK(signaling_thread_->IsCurrent()); |
- |
- // Perform callback with result here on the signaling thread. |
- if (certificate_) { |
- callback_->OnSuccess(certificate_); |
- } else { |
- callback_->OnFailure(); |
- } |
- |
- // Destroy |msg->pdata| which references |this| with ref counting. This |
- // may result in |this| being deleted - do not touch member variables |
- // after this line. |
- delete msg->pdata; |
- return; |
- default: |
- RTC_NOTREACHED(); |
- } |
- } |
- |
- private: |
- Thread* const signaling_thread_; |
- Thread* const worker_thread_; |
- const KeyParams key_params_; |
- const Optional<uint64_t> expires_ms_; |
- const scoped_refptr<RTCCertificateGeneratorCallback> callback_; |
- scoped_refptr<RTCCertificate> certificate_; |
-}; |
- |
-} // namespace |
- |
-// static |
-scoped_refptr<RTCCertificate> |
-RTCCertificateGenerator::GenerateCertificate( |
- const KeyParams& key_params, |
- const Optional<uint64_t>& expires_ms) { |
- if (!key_params.IsValid()) |
- return nullptr; |
- SSLIdentity* identity; |
- if (!expires_ms) { |
- identity = SSLIdentity::Generate(kIdentityName, key_params); |
- } else { |
- uint64_t expires_s = *expires_ms / 1000; |
- // Limit the expiration time to something reasonable (a year). This was |
- // somewhat arbitrarily chosen. It also ensures that the value is not too |
- // large for the unspecified |time_t|. |
- expires_s = std::min(expires_s, kYearInSeconds); |
- // TODO(torbjorng): Stop using |time_t|, its type is unspecified. It it safe |
- // to assume it can hold up to a year's worth of seconds (and more), but |
- // |SSLIdentity::Generate| should stop relying on |time_t|. |
- // See bugs.webrtc.org/5720. |
- time_t cert_lifetime_s = static_cast<time_t>(expires_s); |
- identity = SSLIdentity::GenerateWithExpiration( |
- kIdentityName, key_params, cert_lifetime_s); |
- } |
- if (!identity) |
- return nullptr; |
- std::unique_ptr<SSLIdentity> identity_sptr(identity); |
- return RTCCertificate::Create(std::move(identity_sptr)); |
-} |
- |
-RTCCertificateGenerator::RTCCertificateGenerator( |
- Thread* signaling_thread, Thread* worker_thread) |
- : signaling_thread_(signaling_thread), |
- worker_thread_(worker_thread) { |
- RTC_DCHECK(signaling_thread_); |
- RTC_DCHECK(worker_thread_); |
-} |
- |
-void RTCCertificateGenerator::GenerateCertificateAsync( |
- const KeyParams& key_params, |
- const Optional<uint64_t>& expires_ms, |
- const scoped_refptr<RTCCertificateGeneratorCallback>& callback) { |
- RTC_DCHECK(signaling_thread_->IsCurrent()); |
- RTC_DCHECK(callback); |
- |
- // Create a new |RTCCertificateGenerationTask| for this generation request. It |
- // is reference counted and referenced by the message data, ensuring it lives |
- // until the task has completed (independent of |RTCCertificateGenerator|). |
- ScopedRefMessageData<RTCCertificateGenerationTask>* msg_data = |
- new ScopedRefMessageData<RTCCertificateGenerationTask>( |
- new RefCountedObject<RTCCertificateGenerationTask>( |
- signaling_thread_, worker_thread_, key_params, expires_ms, |
- callback)); |
- worker_thread_->Post(RTC_FROM_HERE, msg_data->data().get(), MSG_GENERATE, |
- msg_data); |
-} |
- |
-} // namespace rtc |