blob: 39426cdb74e49c1d67645a262ce6b2b304345a3a [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
deadbeef9eb13652015-09-05 04:39:15 -070026#elif SSL_USE_NSS // && !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL
27
28#include "webrtc/base/nssstreamadapter.h"
29
30#endif // !SSL_USE_OPENSSL && !SSL_USE_SCHANNEL && !SSL_USE_NSS
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000031
32///////////////////////////////////////////////////////////////////////////////
33
34namespace rtc {
35
36SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
37#if SSL_USE_SCHANNEL
38 return NULL;
39#elif SSL_USE_OPENSSL // !SSL_USE_SCHANNEL
40 return new OpenSSLStreamAdapter(stream);
deadbeef9eb13652015-09-05 04:39:15 -070041#elif SSL_USE_NSS // !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL
42 return new NSSStreamAdapter(stream);
43#else // !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL && !SSL_USE_NSS
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000044 return NULL;
45#endif
46}
47
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000048bool SSLStreamAdapter::GetSslCipher(std::string* cipher) {
49 return false;
50}
51
52bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
53 const uint8* context,
54 size_t context_len,
55 bool use_context,
56 uint8* result,
57 size_t result_len) {
58 return false; // Default is unsupported
59}
60
61bool SSLStreamAdapter::SetDtlsSrtpCiphers(
62 const std::vector<std::string>& ciphers) {
63 return false;
64}
65
66bool SSLStreamAdapter::GetDtlsSrtpCipher(std::string* cipher) {
67 return false;
68}
69
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000070// Note: this matches the logic above with SCHANNEL dominating
71#if SSL_USE_SCHANNEL
72bool SSLStreamAdapter::HaveDtls() { return false; }
73bool SSLStreamAdapter::HaveDtlsSrtp() { return false; }
74bool SSLStreamAdapter::HaveExporter() { return false; }
Torbjorn Granlundb6d4ec42015-08-17 14:08:59 +020075std::string SSLStreamAdapter::GetDefaultSslCipher(SSLProtocolVersion version,
76 KeyType key_type) {
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000077 return std::string();
78}
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000079#elif SSL_USE_OPENSSL
80bool SSLStreamAdapter::HaveDtls() {
81 return OpenSSLStreamAdapter::HaveDtls();
82}
83bool SSLStreamAdapter::HaveDtlsSrtp() {
84 return OpenSSLStreamAdapter::HaveDtlsSrtp();
85}
86bool SSLStreamAdapter::HaveExporter() {
87 return OpenSSLStreamAdapter::HaveExporter();
88}
Torbjorn Granlundb6d4ec42015-08-17 14:08:59 +020089std::string SSLStreamAdapter::GetDefaultSslCipher(SSLProtocolVersion version,
90 KeyType key_type) {
91 return OpenSSLStreamAdapter::GetDefaultSslCipher(version, key_type);
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000092}
deadbeef9eb13652015-09-05 04:39:15 -070093#elif SSL_USE_NSS
94bool SSLStreamAdapter::HaveDtls() {
95 return NSSStreamAdapter::HaveDtls();
96}
97bool SSLStreamAdapter::HaveDtlsSrtp() {
98 return NSSStreamAdapter::HaveDtlsSrtp();
99}
100bool SSLStreamAdapter::HaveExporter() {
101 return NSSStreamAdapter::HaveExporter();
102}
103std::string SSLStreamAdapter::GetDefaultSslCipher(SSLProtocolVersion version,
104 KeyType key_type) {
105 return NSSStreamAdapter::GetDefaultSslCipher(version, key_type);
106}
107#endif // !SSL_USE_SCHANNEL && !SSL_USE_OPENSSL && !SSL_USE_NSS
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000108
109///////////////////////////////////////////////////////////////////////////////
110
111} // namespace rtc