blob: e0fce3ad2f2642090e818a963972e03e1712317d [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
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000011#include "webrtc/base/sslstreamadapter.h"
12#include "webrtc/base/sslconfig.h"
13
torbjorng172f0092015-10-07 04:57:55 -070014#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000015
16#include "webrtc/base/opensslstreamadapter.h"
17
torbjorng172f0092015-10-07 04:57:55 -070018#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000019
20///////////////////////////////////////////////////////////////////////////////
21
22namespace rtc {
23
Guo-wei Shieh456696a2015-09-30 21:48:54 -070024// TODO(guoweis): Move this to SDP layer and use int form internally.
25// webrtc:5043.
26const char CS_AES_CM_128_HMAC_SHA1_80[] = "AES_CM_128_HMAC_SHA1_80";
27const char CS_AES_CM_128_HMAC_SHA1_32[] = "AES_CM_128_HMAC_SHA1_32";
28
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080029std::string SrtpCryptoSuiteToName(int crypto_suite) {
30 if (crypto_suite == SRTP_AES128_CM_SHA1_32)
31 return CS_AES_CM_128_HMAC_SHA1_32;
32 if (crypto_suite == SRTP_AES128_CM_SHA1_80)
33 return CS_AES_CM_128_HMAC_SHA1_80;
34 return std::string();
35}
36
37int SrtpCryptoSuiteFromName(const std::string& crypto_suite) {
38 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_32)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070039 return SRTP_AES128_CM_SHA1_32;
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080040 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_80)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070041 return SRTP_AES128_CM_SHA1_80;
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080042 return SRTP_INVALID_CRYPTO_SUITE;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070043}
44
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
torbjorng172f0092015-10-07 04:57:55 -070046#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000047 return new OpenSSLStreamAdapter(stream);
torbjorng172f0092015-10-07 04:57:55 -070048#else // !SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000049 return NULL;
torbjorng172f0092015-10-07 04:57:55 -070050#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000051}
52
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080053bool SSLStreamAdapter::GetSslCipherSuite(int* cipher_suite) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000054 return false;
55}
56
57bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
Peter Boström0c4e06b2015-10-07 12:23:21 +020058 const uint8_t* context,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000059 size_t context_len,
60 bool use_context,
Peter Boström0c4e06b2015-10-07 12:23:21 +020061 uint8_t* result,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000062 size_t result_len) {
63 return false; // Default is unsupported
64}
65
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080066bool SSLStreamAdapter::SetDtlsSrtpCryptoSuites(
67 const std::vector<int>& crypto_suites) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000068 return false;
69}
70
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080071bool SSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000072 return false;
73}
74
torbjorng172f0092015-10-07 04:57:55 -070075#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000076bool SSLStreamAdapter::HaveDtls() {
77 return OpenSSLStreamAdapter::HaveDtls();
78}
79bool SSLStreamAdapter::HaveDtlsSrtp() {
80 return OpenSSLStreamAdapter::HaveDtlsSrtp();
81}
82bool SSLStreamAdapter::HaveExporter() {
83 return OpenSSLStreamAdapter::HaveExporter();
84}
torbjorng43166b82016-03-11 00:06:47 -080085bool SSLStreamAdapter::IsAcceptableCipher(int cipher, KeyType key_type) {
86 return OpenSSLStreamAdapter::IsAcceptableCipher(cipher, key_type);
Guo-wei Shieh456696a2015-09-30 21:48:54 -070087}
torbjorng43166b82016-03-11 00:06:47 -080088bool SSLStreamAdapter::IsAcceptableCipher(const std::string& cipher,
89 KeyType key_type) {
90 return OpenSSLStreamAdapter::IsAcceptableCipher(cipher, key_type);
91}
Guo-wei Shieh521ed7b2015-11-18 19:41:53 -080092std::string SSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) {
93 return OpenSSLStreamAdapter::SslCipherSuiteToName(cipher_suite);
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000094}
torbjorng172f0092015-10-07 04:57:55 -070095#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000096
97///////////////////////////////////////////////////////////////////////////////
98
99} // namespace rtc