blob: a2cff3e44874678de052e0636c4d695c221094c3 [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
guoweis2764e102015-11-18 18:02:32 -080033std::string SrtpCryptoSuiteToName(int crypto_suite) {
34 if (crypto_suite == SRTP_AES128_CM_SHA1_32)
35 return CS_AES_CM_128_HMAC_SHA1_32;
36 if (crypto_suite == SRTP_AES128_CM_SHA1_80)
37 return CS_AES_CM_128_HMAC_SHA1_80;
38 return std::string();
39}
40
41int SrtpCryptoSuiteFromName(const std::string& crypto_suite) {
42 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_32)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070043 return SRTP_AES128_CM_SHA1_32;
guoweis2764e102015-11-18 18:02:32 -080044 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_80)
Guo-wei Shieh456696a2015-09-30 21:48:54 -070045 return SRTP_AES128_CM_SHA1_80;
guoweis2764e102015-11-18 18:02:32 -080046 return SRTP_INVALID_CRYPTO_SUITE;
Guo-wei Shieh456696a2015-09-30 21:48:54 -070047}
48
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000049SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) {
torbjorng172f0092015-10-07 04:57:55 -070050#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000051 return new OpenSSLStreamAdapter(stream);
torbjorng172f0092015-10-07 04:57:55 -070052#else // !SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000053 return NULL;
torbjorng172f0092015-10-07 04:57:55 -070054#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000055}
56
guoweis2764e102015-11-18 18:02:32 -080057bool SSLStreamAdapter::GetSslCipherSuite(int* cipher_suite) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000058 return false;
59}
60
61bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label,
Peter Boström0c4e06b2015-10-07 12:23:21 +020062 const uint8_t* context,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000063 size_t context_len,
64 bool use_context,
Peter Boström0c4e06b2015-10-07 12:23:21 +020065 uint8_t* result,
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000066 size_t result_len) {
67 return false; // Default is unsupported
68}
69
guoweis2764e102015-11-18 18:02:32 -080070bool SSLStreamAdapter::SetDtlsSrtpCryptoSuites(
71 const std::vector<int>& crypto_suites) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000072 return false;
73}
74
guoweis2764e102015-11-18 18:02:32 -080075bool SSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) {
kwiberg@webrtc.org67186fe2015-03-09 22:21:53 +000076 return false;
77}
78
torbjorng172f0092015-10-07 04:57:55 -070079#if SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000080bool SSLStreamAdapter::HaveDtls() {
81 return OpenSSLStreamAdapter::HaveDtls();
82}
83bool SSLStreamAdapter::HaveDtlsSrtp() {
84 return OpenSSLStreamAdapter::HaveDtlsSrtp();
85}
86bool SSLStreamAdapter::HaveExporter() {
87 return OpenSSLStreamAdapter::HaveExporter();
88}
Guo-wei Shieh6caafbe2015-10-05 12:43:27 -070089int SSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
90 KeyType key_type) {
Guo-wei Shieh456696a2015-09-30 21:48:54 -070091 return OpenSSLStreamAdapter::GetDefaultSslCipherForTest(version, key_type);
92}
93
guoweis2764e102015-11-18 18:02:32 -080094std::string SSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) {
95 return OpenSSLStreamAdapter::SslCipherSuiteToName(cipher_suite);
pthatcher@webrtc.org3ee4fe52015-02-11 22:34:36 +000096}
torbjorng172f0092015-10-07 04:57:55 -070097#endif // SSL_USE_OPENSSL
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000098
99///////////////////////////////////////////////////////////////////////////////
100
101} // namespace rtc