blob: 44158d401f984862aba07ce0cc24773f0b6c35ff [file] [log] [blame]
henrike@webrtc.org47be73b2014-05-13 18:00:261/*
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.org47be73b2014-05-13 18:00:2611#include "webrtc/base/sslstreamadapter.h"
12#include "webrtc/base/sslconfig.h"
13
torbjorng7cd50612015-10-07 11:57:5514#if SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2615
16#include "webrtc/base/opensslstreamadapter.h"
17
torbjorng7cd50612015-10-07 11:57:5518#endif // SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2619
20///////////////////////////////////////////////////////////////////////////////
21
22namespace rtc {
23
Guo-wei Shieh5acc8ec2015-10-01 04:48:5424// 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 Shieh838c3b52015-11-19 03:41:5329std::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 Shieh5acc8ec2015-10-01 04:48:5439 return SRTP_AES128_CM_SHA1_32;
Guo-wei Shieh838c3b52015-11-19 03:41:5340 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_80)
Guo-wei Shieh5acc8ec2015-10-01 04:48:5441 return SRTP_AES128_CM_SHA1_80;
Guo-wei Shieh838c3b52015-11-19 03:41:5342 return SRTP_INVALID_CRYPTO_SUITE;
Guo-wei Shieh5acc8ec2015-10-01 04:48:5443}
44
henrike@webrtc.org47be73b2014-05-13 18:00:2645SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
torbjorng7cd50612015-10-07 11:57:5546#if SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2647 return new OpenSSLStreamAdapter(stream);
torbjorng7cd50612015-10-07 11:57:5548#else // !SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2649 return NULL;
torbjorng7cd50612015-10-07 11:57:5550#endif // SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2651}
52
Guo-wei Shieh838c3b52015-11-19 03:41:5353bool SSLStreamAdapter::GetSslCipherSuite(int* cipher_suite) {
kwiberg@webrtc.org786b6342015-03-09 22:21:5354 return false;
55}
56
57bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
Peter Boström07e22e62015-10-07 10:23:2158 const uint8_t* context,
kwiberg@webrtc.org786b6342015-03-09 22:21:5359 size_t context_len,
60 bool use_context,
Peter Boström07e22e62015-10-07 10:23:2161 uint8_t* result,
kwiberg@webrtc.org786b6342015-03-09 22:21:5362 size_t result_len) {
63 return false; // Default is unsupported
64}
65
Guo-wei Shieh838c3b52015-11-19 03:41:5366bool SSLStreamAdapter::SetDtlsSrtpCryptoSuites(
67 const std::vector<int>& crypto_suites) {
kwiberg@webrtc.org786b6342015-03-09 22:21:5368 return false;
69}
70
Guo-wei Shieh838c3b52015-11-19 03:41:5371bool SSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) {
kwiberg@webrtc.org786b6342015-03-09 22:21:5372 return false;
73}
74
torbjorng7cd50612015-10-07 11:57:5575#if SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2676bool SSLStreamAdapter::HaveDtls() {
77 return OpenSSLStreamAdapter::HaveDtls();
78}
79bool SSLStreamAdapter::HaveDtlsSrtp() {
80 return OpenSSLStreamAdapter::HaveDtlsSrtp();
81}
82bool SSLStreamAdapter::HaveExporter() {
83 return OpenSSLStreamAdapter::HaveExporter();
84}
Taylor Brandstetterfa822542016-06-16 00:15:2385bool SSLStreamAdapter::IsBoringSsl() {
86 return OpenSSLStreamAdapter::IsBoringSsl();
87}
torbjorngdea3f232016-03-11 08:06:4788bool SSLStreamAdapter::IsAcceptableCipher(int cipher, KeyType key_type) {
89 return OpenSSLStreamAdapter::IsAcceptableCipher(cipher, key_type);
Guo-wei Shieh5acc8ec2015-10-01 04:48:5490}
torbjorngdea3f232016-03-11 08:06:4791bool SSLStreamAdapter::IsAcceptableCipher(const std::string& cipher,
92 KeyType key_type) {
93 return OpenSSLStreamAdapter::IsAcceptableCipher(cipher, key_type);
94}
Guo-wei Shieh838c3b52015-11-19 03:41:5395std::string SSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) {
96 return OpenSSLStreamAdapter::SslCipherSuiteToName(cipher_suite);
pthatcher@webrtc.org2fb69912015-02-11 22:34:3697}
torbjorng7cd50612015-10-07 11:57:5598#endif // SSL_USE_OPENSSL
henrike@webrtc.org47be73b2014-05-13 18:00:2699
100///////////////////////////////////////////////////////////////////////////////
101
102} // namespace rtc