1 /* 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_OPENSSL 19 20 #include "webrtc/base/opensslstreamadapter.h" 21 22 #endif // SSL_USE_OPENSSL 23 24 /////////////////////////////////////////////////////////////////////////////// 25 26 namespace rtc { 27 28 // TODO(guoweis): Move this to SDP layer and use int form internally. 29 // webrtc:5043. 30 const char CS_AES_CM_128_HMAC_SHA1_80[] = "AES_CM_128_HMAC_SHA1_80"; 31 const char CS_AES_CM_128_HMAC_SHA1_32[] = "AES_CM_128_HMAC_SHA1_32"; 32 33 std::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 41 int SrtpCryptoSuiteFromName(const std::string& crypto_suite) { 42 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_32) 43 return SRTP_AES128_CM_SHA1_32; 44 if (crypto_suite == CS_AES_CM_128_HMAC_SHA1_80) 45 return SRTP_AES128_CM_SHA1_80; 46 return SRTP_INVALID_CRYPTO_SUITE; 47 } 48 49 SSLStreamAdapter* SSLStreamAdapter::Create(StreamInterface* stream) { 50 #if SSL_USE_OPENSSL 51 return new OpenSSLStreamAdapter(stream); 52 #else // !SSL_USE_OPENSSL 53 return NULL; 54 #endif // SSL_USE_OPENSSL 55 } 56 57 bool SSLStreamAdapter::GetSslCipherSuite(int* cipher_suite) { 58 return false; 59 } 60 61 bool SSLStreamAdapter::ExportKeyingMaterial(const std::string& label, 62 const uint8_t* context, 63 size_t context_len, 64 bool use_context, 65 uint8_t* result, 66 size_t result_len) { 67 return false; // Default is unsupported 68 } 69 70 bool SSLStreamAdapter::SetDtlsSrtpCryptoSuites( 71 const std::vector<int>& crypto_suites) { 72 return false; 73 } 74 75 bool SSLStreamAdapter::GetDtlsSrtpCryptoSuite(int* crypto_suite) { 76 return false; 77 } 78 79 #if SSL_USE_OPENSSL 80 bool SSLStreamAdapter::HaveDtls() { 81 return OpenSSLStreamAdapter::HaveDtls(); 82 } 83 bool SSLStreamAdapter::HaveDtlsSrtp() { 84 return OpenSSLStreamAdapter::HaveDtlsSrtp(); 85 } 86 bool SSLStreamAdapter::HaveExporter() { 87 return OpenSSLStreamAdapter::HaveExporter(); 88 } 89 int SSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version, 90 KeyType key_type) { 91 return OpenSSLStreamAdapter::GetDefaultSslCipherForTest(version, key_type); 92 } 93 94 std::string SSLStreamAdapter::SslCipherSuiteToName(int cipher_suite) { 95 return OpenSSLStreamAdapter::SslCipherSuiteToName(cipher_suite); 96 } 97 #endif // SSL_USE_OPENSSL 98 99 /////////////////////////////////////////////////////////////////////////////// 100 101 } // namespace rtc 102