Index: webrtc/p2p/base/dtlstransportinternal.h |
diff --git a/webrtc/p2p/base/dtlstransportinternal.h b/webrtc/p2p/base/dtlstransportinternal.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5ed22e659822ceb3137607062ea8bf3c3bb506f8 |
--- /dev/null |
+++ b/webrtc/p2p/base/dtlstransportinternal.h |
@@ -0,0 +1,104 @@ |
+/* |
+ * 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. |
+ */ |
+ |
+#ifndef WEBRTC_P2P_BASE_DTLSTRANSPORTINTERNAL_H_ |
+#define WEBRTC_P2P_BASE_DTLSTRANSPORTINTERNAL_H_ |
+ |
+#include <memory> |
+#include <string> |
+#include <vector> |
+ |
+#include "webrtc/base/sslstreamadapter.h" |
+#include "webrtc/p2p/base/transportchannelimpl.h" |
+#include "webrtc/p2p/base/jseptransport.h" |
+#include "webrtc/p2p/base/packettransportinterface.h" |
+ |
+namespace cricket { |
+ |
+// DtlsTransportInternal is an internal interface that does DTLS. |
+// Once the public interface is supported, |
+// (https://www.w3.org/TR/webrtc/#rtcdtlstransport-interface) |
+// the DtlsTransportInterface will be split from this class. |
+class DtlsTransportInternal : public rtc::PacketTransportInterface { |
+ public: |
+ DtlsTransportInternal() {} |
Taylor Brandstetter
2017/01/03 23:21:59
nit: I was wrong about the destructor earlier, but
Zhi Huang
2017/01/10 18:30:51
It doesn't compile without it.
I think the macro
Taylor Brandstetter
2017/01/10 19:43:47
Does using "RTC_DISALLOW_IMPLICIT_CONSTRUCTORS" in
Zhi Huang
2017/01/12 20:04:12
This macro will declare the default constructor to
|
+ virtual ~DtlsTransportInternal() {} |
+ |
+ virtual DtlsTransportState dtls_state() const = 0; |
+ |
+ virtual const std::string& transport_name() const = 0; |
+ |
+ virtual int component() const = 0; |
+ |
+ virtual bool IsDtlsActive() const = 0; |
+ |
+ virtual bool GetSslRole(rtc::SSLRole* role) const = 0; |
+ |
+ virtual bool SetSslRole(rtc::SSLRole role) = 0; |
+ |
+ // Sets up the ciphers to use for DTLS-SRTP. |
+ virtual bool SetSrtpCryptoSuites(const std::vector<int>& ciphers) = 0; |
+ |
+ // Keep the original one for backward compatibility until all dependencies |
+ // move away. TODO(zhihuang): Remove this function. |
+ virtual bool SetSrtpCiphers(const std::vector<std::string>& ciphers) = 0; |
+ |
+ // Finds out which DTLS-SRTP cipher was negotiated. |
+ // TODO(zhihuang): Remove this once all dependencies implement this. |
+ virtual bool GetSrtpCryptoSuite(int* cipher) = 0; |
+ |
+ // Finds out which DTLS cipher was negotiated. |
+ // TODO(zhihuang): Remove this once all dependencies implement this. |
+ virtual bool GetSslCipherSuite(int* cipher) = 0; |
+ |
+ // Gets the local RTCCertificate used for DTLS. |
+ virtual rtc::scoped_refptr<rtc::RTCCertificate> GetLocalCertificate() |
+ const = 0; |
+ |
+ virtual bool SetLocalCertificate( |
+ const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) = 0; |
+ |
+ // Gets a copy of the remote side's SSL certificate. |
+ virtual std::unique_ptr<rtc::SSLCertificate> GetRemoteSSLCertificate() |
+ const = 0; |
+ |
+ // Allows key material to be extracted for external encryption. |
+ virtual bool ExportKeyingMaterial(const std::string& label, |
+ const uint8_t* context, |
+ size_t context_len, |
+ bool use_context, |
+ uint8_t* result, |
+ size_t result_len) = 0; |
+ |
+ // Set DTLS remote fingerprint. Must be after local identity set. |
+ virtual bool SetRemoteFingerprint(const std::string& digest_alg, |
+ const uint8_t* digest, |
+ size_t digest_len) = 0; |
+ |
+ // Expose the underneath IceTransport. |
+ virtual TransportChannelImpl* ice_transport() = 0; |
+ |
+ sigslot::signal2<DtlsTransportInternal*, DtlsTransportState> SignalDtlsState; |
+ |
+ // Emitted whenever the Dtls handshake failed on some transport channel. |
+ sigslot::signal1<rtc::SSLHandshakeError> SignalDtlsHandshakeError; |
+ |
+ // Debugging description of this transport. |
+ std::string const debug_name() const override { |
+ return transport_name() + " " + std::to_string(component()); |
+ } |
+ |
+ private: |
+ RTC_DISALLOW_COPY_AND_ASSIGN(DtlsTransportInternal); |
+}; |
+ |
+} // namespace cricket |
+ |
+#endif // WEBRTC_P2P_BASE_DTLSTRANSPORTINTERNAL_H_ |