blob: b9ba9d3f2a1dcb2e3f0b1fa3b7dd00a0b3b1c12c [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
torbjorng172f0092015-10-07 04:57:55 -070018#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000019
20#include "webrtc/base/opensslstreamadapter.h"
21
torbjorng172f0092015-10-07 04:57:55 -070022#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000023
24///////////////////////////////////////////////////////////////////////////////
25
26namespace rtc {
27
Guo-wei Shieh456696a2015-09-30 21:48:54 -070028// TODO(guoweis): Move this to SDP layer and use int form internally.
29// webrtc:5043.
30const char CS_AES_CM_128_HMAC_SHA1_80[] = "AES_CM_128_HMAC_SHA1_80";
31const char CS_AES_CM_128_HMAC_SHA1_32[] = "AES_CM_128_HMAC_SHA1_32";
32
guoweis318166b2015-11-18 19:03:38 -080033int GetSrtpCryptoSuiteFromName(const std::string& cipher) {
34 if (cipher == CS_AES_CM_128_HMAC_SHA1_32)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070035 return SRTP_AES128_CM_SHA1_32;
guoweis318166b2015-11-18 19:03:38 -080036 if (cipher == CS_AES_CM_128_HMAC_SHA1_80)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070037 return SRTP_AES128_CM_SHA1_80;
guoweis318166b2015-11-18 19:03:38 -080038 return 0;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070039}
40
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000041SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
torbjorng172f0092015-10-07 04:57:55 -070042#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000043 return new OpenSSLStreamAdapter(stream);
torbjorng172f0092015-10-07 04:57:55 -070044#else // !SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045 return NULL;
torbjorng172f0092015-10-07 04:57:55 -070046#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000047}
48
guoweis318166b2015-11-18 19:03:38 -080049bool SSLStreamAdapter::GetSslCipherSuite(int* cipher) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000050 return false;
51}
52
53bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
Peter Boström0c4e06b2015-10-07 12:23:21 +020054 const uint8_t* context,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000055 size_t context_len,
56 bool use_context,
Peter Boström0c4e06b2015-10-07 12:23:21 +020057 uint8_t* result,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000058 size_t result_len) {
59 return false; // Default is unsupported
60}
61
guoweis318166b2015-11-18 19:03:38 -080062bool SSLStreamAdapter::SetDtlsSrtpCiphers(
63 const std::vector<std::string>& ciphers) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000064 return false;
65}
66
guoweis318166b2015-11-18 19:03:38 -080067bool SSLStreamAdapter::GetDtlsSrtpCipher(std::string* cipher) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000068 return false;
69}
70
torbjorng172f0092015-10-07 04:57:55 -070071#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000072bool SSLStreamAdapter::HaveDtls() {
73 return OpenSSLStreamAdapter::HaveDtls();
74}
75bool SSLStreamAdapter::HaveDtlsSrtp() {
76 return OpenSSLStreamAdapter::HaveDtlsSrtp();
77}
78bool SSLStreamAdapter::HaveExporter() {
79 return OpenSSLStreamAdapter::HaveExporter();
80}
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070081int SSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
82 KeyType key_type) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -070083 return OpenSSLStreamAdapter::GetDefaultSslCipherForTest(version, key_type);
84}
85
guoweis318166b2015-11-18 19:03:38 -080086std::string SSLStreamAdapter::GetSslCipherSuiteName(int cipher) {
87 return OpenSSLStreamAdapter::GetSslCipherSuiteName(cipher);
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000088}
torbjorng172f0092015-10-07 04:57:55 -070089#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000090
91///////////////////////////////////////////////////////////////////////////////
92
93} // namespace rtc