| Index: webrtc/base/opensslstreamadapter.cc
|
| diff --git a/webrtc/base/opensslstreamadapter.cc b/webrtc/base/opensslstreamadapter.cc
|
| index 30326f57a2e7f5fca0b1d233316ad134f7085971..ea64520299044941d435928d4d9b7a43902c7784 100644
|
| --- a/webrtc/base/opensslstreamadapter.cc
|
| +++ b/webrtc/base/opensslstreamadapter.cc
|
| @@ -1147,6 +1147,7 @@ bool OpenSSLStreamAdapter::HaveExporter() {
|
| #endif
|
| }
|
|
|
| +// TODO(torbjorng): Remove.
|
| int OpenSSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
|
| KeyType key_type) {
|
| if (key_type == KT_RSA) {
|
| @@ -1189,6 +1190,81 @@ int OpenSSLStreamAdapter::GetDefaultSslCipherForTest(SSLProtocolVersion version,
|
| }
|
| }
|
|
|
| +#define CDEF(X) \
|
| + { static_cast<uint16_t>(TLS1_CK_##X & 0xffff), "TLS_" #X }
|
| +
|
| +struct cipher_list {
|
| + uint16_t cipher;
|
| + const char* cipher_str;
|
| +};
|
| +
|
| +// TODO(torbjorng): Add more cipher suites to these lists.
|
| +static const cipher_list OK_RSA_ciphers[] = {
|
| + CDEF(ECDHE_RSA_WITH_AES_128_CBC_SHA),
|
| + CDEF(ECDHE_RSA_WITH_AES_256_CBC_SHA),
|
| + CDEF(ECDHE_RSA_WITH_AES_128_GCM_SHA256),
|
| +#ifdef TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA256
|
| + CDEF(ECDHE_RSA_WITH_AES_256_GCM_SHA256),
|
| +#endif
|
| + CDEF(ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256),
|
| +};
|
| +
|
| +static const cipher_list OK_ECDSA_ciphers[] = {
|
| + CDEF(ECDHE_ECDSA_WITH_AES_128_CBC_SHA),
|
| + CDEF(ECDHE_ECDSA_WITH_AES_256_CBC_SHA),
|
| + CDEF(ECDHE_ECDSA_WITH_AES_128_GCM_SHA256),
|
| +#ifdef TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA256
|
| + CDEF(ECDHE_ECDSA_WITH_AES_256_GCM_SHA256),
|
| +#endif
|
| + CDEF(ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256),
|
| +};
|
| +
|
| +bool OpenSSLStreamAdapter::IsAcceptableCipher(int cipher,
|
| + SSLProtocolVersion version,
|
| + KeyType key_type) {
|
| + if (key_type == KT_RSA) {
|
| + for (const cipher_list &c : OK_RSA_ciphers) {
|
| + if (cipher == c.cipher)
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + if (key_type == KT_ECDSA) {
|
| + for (const cipher_list &c : OK_ECDSA_ciphers) {
|
| + if (cipher == c.cipher)
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + // TODO(torbjorng): Remove before landing.
|
| + LOG(LS_ERROR) << "Attempted use of truly terrible cipher suite: "
|
| + << OpenSSLStreamAdapter::SslCipherSuiteToName(cipher) << "("
|
| + << cipher << ")";
|
| + return false;
|
| +}
|
| +
|
| +bool OpenSSLStreamAdapter::IsAcceptableCipher(std::string cipher,
|
| + SSLProtocolVersion version,
|
| + KeyType key_type) {
|
| + if (key_type == KT_RSA) {
|
| + for (const cipher_list &c : OK_RSA_ciphers) {
|
| + if (cipher == c.cipher_str)
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + if (key_type == KT_ECDSA) {
|
| + for (const cipher_list &c : OK_ECDSA_ciphers) {
|
| + if (cipher == c.cipher_str)
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + // TODO(torbjorng): Remove before landing.
|
| + LOG(LS_ERROR) << "Attempted use of truly terrible cipher suite: " << cipher;
|
| + return false;
|
| +}
|
| +
|
| } // namespace rtc
|
|
|
| #endif // HAVE_OPENSSL_SSL_H
|
|
|