diff options
Diffstat (limited to 'cpp/src/IceSSL/SChannelEngine.cpp')
-rw-r--r-- | cpp/src/IceSSL/SChannelEngine.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/cpp/src/IceSSL/SChannelEngine.cpp b/cpp/src/IceSSL/SChannelEngine.cpp index 19a50c49631..1dbbf390fd2 100644 --- a/cpp/src/IceSSL/SChannelEngine.cpp +++ b/cpp/src/IceSSL/SChannelEngine.cpp @@ -22,6 +22,15 @@ #include <wincrypt.h> // +// SP_PROT_TLS1_3 is new in v10.0.15021 SDK +// +#ifndef SP_PROT_TLS1_3 +# define SP_PROT_TLS1_3_SERVER 0x00001000 +# define SP_PROT_TLS1_3_CLIENT 0x00002000 +# define SP_PROT_TLS1_3 (SP_PROT_TLS1_3_SERVER | SP_PROT_TLS1_3_CLIENT) +#endif + +// // CALG_ECDH_EPHEM algorithm constant is not defined in older version of the SDK headers // // https://msdn.microsoft.com/en-us/library/windows/desktop/aa375549(v=vs.85).aspx @@ -417,23 +426,23 @@ parseProtocols(const StringSeq& protocols) if(prot == "SSL3" || prot == "SSLV3") { - v |= SP_PROT_SSL3_SERVER; - v |= SP_PROT_SSL3_CLIENT; + v |= SP_PROT_SSL3; } else if(prot == "TLS" || prot == "TLS1" || prot == "TLSV1" || prot == "TLS1_0" || prot == "TLSV1_0") { - v |= SP_PROT_TLS1_SERVER; - v |= SP_PROT_TLS1_CLIENT; + v |= SP_PROT_TLS1; } else if(prot == "TLS1_1" || prot == "TLSV1_1") { - v |= SP_PROT_TLS1_1_SERVER; - v |= SP_PROT_TLS1_1_CLIENT; + v |= SP_PROT_TLS1_1; } else if(prot == "TLS1_2" || prot == "TLSV1_2") { - v |= SP_PROT_TLS1_2_SERVER; - v |= SP_PROT_TLS1_2_CLIENT; + v |= SP_PROT_TLS1_2; + } + else if (prot == "TLS1_3" || prot == "TLSV1_2") + { + v |= SP_PROT_TLS1_3; } else { |