| Index: webrtc/base/nssstreamadapter.cc
|
| diff --git a/webrtc/base/nssstreamadapter.cc b/webrtc/base/nssstreamadapter.cc
|
| index 22f2a2e2f47e203e43a1ff9e5d0843e97bd5251a..2e78adfc0e2ae9ec994c63d6ccd9018067c5eca1 100644
|
| --- a/webrtc/base/nssstreamadapter.cc
|
| +++ b/webrtc/base/nssstreamadapter.cc
|
| @@ -68,9 +68,10 @@ static const SrtpCipherMapEntry kSrtpCipherMap[] = {
|
|
|
| // Ciphers to enable to get ECDHE encryption with endpoints that support it.
|
| static const uint32_t kEnabledCiphers[] = {
|
| - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
| - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
| -};
|
| + TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
|
| + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
|
| + TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
|
| + TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256};
|
|
|
| // Default cipher used between NSS stream adapters.
|
| // This needs to be updated when the default of the SSL library changes.
|
| @@ -78,7 +79,10 @@ static const char kDefaultSslCipher10[] =
|
| "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA";
|
| static const char kDefaultSslCipher12[] =
|
| "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256";
|
| -
|
| +static const char kDefaultSslEcCipher10[] =
|
| + "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA";
|
| +static const char kDefaultSslEcCipher12[] =
|
| + "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256";
|
|
|
| // Implementation of NSPR methods
|
| static PRStatus StreamClose(PRFileDesc *socket) {
|
| @@ -495,7 +499,7 @@ int NSSStreamAdapter::BeginSSL() {
|
| }
|
| rv = SSL_ConfigSecureServer(ssl_fd_, identity->certificate().certificate(),
|
| identity->keypair()->privkey(),
|
| - kt_rsa);
|
| + identity->keypair()->ssl_kea_type());
|
| if (rv != SECSuccess) {
|
| Error("BeginSSL", -1, false);
|
| return -1;
|
| @@ -1093,14 +1097,28 @@ bool NSSStreamAdapter::HaveExporter() {
|
| return true;
|
| }
|
|
|
| -std::string NSSStreamAdapter::GetDefaultSslCipher(SSLProtocolVersion version) {
|
| - switch (version) {
|
| - case SSL_PROTOCOL_TLS_10:
|
| - case SSL_PROTOCOL_TLS_11:
|
| - return kDefaultSslCipher10;
|
| - case SSL_PROTOCOL_TLS_12:
|
| - default:
|
| - return kDefaultSslCipher12;
|
| +std::string NSSStreamAdapter::GetDefaultSslCipher(SSLProtocolVersion version,
|
| + KeyType key_type) {
|
| + if (key_type == KT_RSA) {
|
| + switch (version) {
|
| + case SSL_PROTOCOL_TLS_10:
|
| + case SSL_PROTOCOL_TLS_11:
|
| + return kDefaultSslCipher10;
|
| + case SSL_PROTOCOL_TLS_12:
|
| + default:
|
| + return kDefaultSslCipher12;
|
| + }
|
| + } else if (key_type == KT_ECDSA) {
|
| + switch (version) {
|
| + case SSL_PROTOCOL_TLS_10:
|
| + case SSL_PROTOCOL_TLS_11:
|
| + return kDefaultSslEcCipher10;
|
| + case SSL_PROTOCOL_TLS_12:
|
| + default:
|
| + return kDefaultSslEcCipher12;
|
| + }
|
| + } else {
|
| + return std::string();
|
| }
|
| }
|
|
|
|
|