Index: net/quic/quic_stream_factory.cc |
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc |
index 2ca1ed331ec4c3e2223e5ee50f83804f51df828f..3aec036970a4ac855d9c45c8a6547e8980d4055e 100644 |
--- a/net/quic/quic_stream_factory.cc |
+++ b/net/quic/quic_stream_factory.cc |
@@ -35,6 +35,10 @@ |
#include "net/quic/quic_session_key.h" |
#include "net/socket/client_socket_factory.h" |
+#if defined(OS_WIN) |
+#include "base/win/windows_version.h" |
+#endif |
+ |
using std::string; |
using std::vector; |
@@ -56,6 +60,15 @@ void HistogramCreateSessionFailure(enum CreateSessionFailure error) { |
CREATION_ERROR_MAX); |
} |
+bool IsEcdsaSupported() { |
+#if defined(OS_WIN) |
+ if (base::win::GetVersion() < base::win::VERSION_VISTA) |
+ return false; |
+#endif |
+ |
+ return true; |
+} |
+ |
} // namespace |
QuicStreamFactory::IpAliasKey::IpAliasKey() {} |
@@ -397,9 +410,10 @@ QuicStreamFactory::QuicStreamFactory( |
crypto_config_.AddCanonicalSuffix(".googlevideo.com"); |
crypto_config_.SetProofVerifier(new ProofVerifierChromium(cert_verifier)); |
base::CPU cpu; |
- if (cpu.has_aesni() && cpu.has_avx()) { |
+ if (cpu.has_aesni() && cpu.has_avx()) |
crypto_config_.PreferAesGcm(); |
- } |
+ if (!IsEcdsaSupported()) |
+ crypto_config_.DisableEcdsa(); |
} |
QuicStreamFactory::~QuicStreamFactory() { |