blob: 0ce49d13594c586a5d18416ac64c4814710191f6 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#if HAVE_CONFIG_H
12#include "config.h"
13#endif // HAVE_CONFIG_H
14
15#include "webrtc/base/sslstreamadapter.h"
16#include "webrtc/base/sslconfig.h"
17
18#if SSL_USE_SCHANNEL
19
20// SChannel support for DTLS and peer-to-peer mode are not
21// done.
22#elif SSL_USE_OPENSSL // && !SSL_USE_SCHANNEL
23
24#include "webrtc/base/opensslstreamadapter.h"
25
torbjorng07d09362015-09-22 11:58:04 -070026#endif // !SSL_USE_OPENSSL && !SSL_USE_SCHANNEL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000027
28///////////////////////////////////////////////////////////////////////////////
29
30namespace rtc {
31
Guo-wei Shieh456696a2015-09-30 21:48:54 -070032// TODO(guoweis): Move this to SDP layer and use int form internally.
33// webrtc:5043.
34const char CS_AES_CM_128_HMAC_SHA1_80[] = "AES_CM_128_HMAC_SHA1_80";
35const char CS_AES_CM_128_HMAC_SHA1_32[] = "AES_CM_128_HMAC_SHA1_32";
36
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070037int GetSrtpCryptoSuiteFromName(const std::string& cipher) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -070038 if (cipher == CS_AES_CM_128_HMAC_SHA1_32)
39 return SRTP_AES128_CM_SHA1_32;
40 if (cipher == CS_AES_CM_128_HMAC_SHA1_80)
41 return SRTP_AES128_CM_SHA1_80;
42 return 0;
43}
44
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
46#if SSL_USE_SCHANNEL
47 return NULL;
48#elif SSL_USE_OPENSSL // !SSL_USE_SCHANNEL
49 return new OpenSSLStreamAdapter(stream);
torbjorng07d09362015-09-22 11:58:04 -070050#else // !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000051 return NULL;
52#endif
53}
54
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070055bool SSLStreamAdapter::GetSslCipherSuite(int* cipher) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000056 return false;
57}
58
59bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
60 const uint8* context,
61 size_t context_len,
62 bool use_context,
63 uint8* result,
64 size_t result_len) {
65 return false; // Default is unsupported
66}
67
68bool SSLStreamAdapter::SetDtlsSrtpCiphers(
69 const std::vector<std::string>& ciphers) {
70 return false;
71}
72
73bool SSLStreamAdapter::GetDtlsSrtpCipher(std::string* cipher) {
74 return false;
75}
76
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000077// Note: this matches the logic above with SCHANNEL dominating
78#if SSL_USE_SCHANNEL
79bool SSLStreamAdapter::HaveDtls() { return false; }
80bool SSLStreamAdapter::HaveDtlsSrtp() { return false; }
81bool SSLStreamAdapter::HaveExporter() { return false; }
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070082int SSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
83 KeyType key_type) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -070084 return 0;
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000085}
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000086#elif SSL_USE_OPENSSL
87bool SSLStreamAdapter::HaveDtls() {
88 return OpenSSLStreamAdapter::HaveDtls();
89}
90bool SSLStreamAdapter::HaveDtlsSrtp() {
91 return OpenSSLStreamAdapter::HaveDtlsSrtp();
92}
93bool SSLStreamAdapter::HaveExporter() {
94 return OpenSSLStreamAdapter::HaveExporter();
95}
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070096int SSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
97 KeyType key_type) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -070098 return OpenSSLStreamAdapter::GetDefaultSslCipherForTest(version, key_type);
99}
100
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -0700101std::string SSLStreamAdapter::GetSslCipherSuiteName(int cipher) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -0700102 return OpenSSLStreamAdapter::GetSslCipherSuiteName(cipher);
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +0000103}
torbjorng07d09362015-09-22 11:58:04 -0700104#endif // !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000105
106///////////////////////////////////////////////////////////////////////////////
107
108} // namespace rtc