openssl tls v1.3 draft 18

pull/1167/head
Pirabarlen Cheenaramen 2017-11-12 00:18:30 +01:00
parent 450b4f467f
commit fa74545e6b
8 changed files with 16 additions and 2 deletions

View File

@ -1477,7 +1477,7 @@ Advanced Options
.. option:: --min-tls-version=<VERSION> .. option:: --min-tls-version=<VERSION>
Specify minimum SSL/TLS version to enable. Specify minimum SSL/TLS version to enable.
Possible Values: ``SSLv3``, ``TLSv1``, ``TLSv1.1``, ``TLSv1.2`` Possible Values: ``SSLv3``, ``TLSv1``, ``TLSv1.1``, ``TLSv1.2``, ``TLSv1.3``
Default: ``TLSv1`` Default: ``TLSv1``
.. option:: --multiple-interface=<INTERFACES> .. option:: --multiple-interface=<INTERFACES>

View File

@ -112,6 +112,8 @@ OpenSSLTLSContext::OpenSSLTLSContext(TLSSessionSide side, TLSVersion minVer)
long ver_opts = 0; long ver_opts = 0;
switch (minVer) { switch (minVer) {
case TLS_PROTO_TLS13:
ver_opts |= SSL_OP_NO_TLSv1_2;
case TLS_PROTO_TLS12: case TLS_PROTO_TLS12:
ver_opts |= SSL_OP_NO_TLSv1_1; ver_opts |= SSL_OP_NO_TLSv1_1;
// fall through // fall through

View File

@ -217,6 +217,12 @@ int OpenSSLTLSSession::handshake(TLSVersion& version)
break; break;
#endif // TLS1_2_VERSION #endif // TLS1_2_VERSION
#ifdef TLS1_3_VERSION
case TLS1_3_VERSION:
version = TLS_PROTO_TLS13;
break;
#endif //TLS1_3_VERSION
default: default:
version = TLS_PROTO_NONE; version = TLS_PROTO_NONE;
break; break;

View File

@ -514,7 +514,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
{ {
OptionHandler* op(new ParameterOptionHandler( OptionHandler* op(new ParameterOptionHandler(
PREF_MIN_TLS_VERSION, TEXT_MIN_TLS_VERSION, A2_V_TLS10, PREF_MIN_TLS_VERSION, TEXT_MIN_TLS_VERSION, A2_V_TLS10,
{A2_V_SSL3, A2_V_TLS10, A2_V_TLS11, A2_V_TLS12})); {A2_V_SSL3, A2_V_TLS10, A2_V_TLS11, A2_V_TLS12, A2_V_TLS13}));
op->addTag(TAG_ADVANCED); op->addTag(TAG_ADVANCED);
handlers.push_back(op); handlers.push_back(op);
} }

View File

@ -49,6 +49,7 @@ enum TLSVersion {
TLS_PROTO_TLS10, TLS_PROTO_TLS10,
TLS_PROTO_TLS11, TLS_PROTO_TLS11,
TLS_PROTO_TLS12, TLS_PROTO_TLS12,
TLS_PROTO_TLS13,
}; };
class TLSContext { class TLSContext {

View File

@ -154,6 +154,7 @@ const std::string A2_V_SSL3("SSLv3");
const std::string A2_V_TLS10("TLSv1"); const std::string A2_V_TLS10("TLSv1");
const std::string A2_V_TLS11("TLSv1.1"); const std::string A2_V_TLS11("TLSv1.1");
const std::string A2_V_TLS12("TLSv1.2"); const std::string A2_V_TLS12("TLSv1.2");
const std::string A2_V_TLS13("TLSv1.3");
PrefPtr PREF_VERSION = makePref("version"); PrefPtr PREF_VERSION = makePref("version");
PrefPtr PREF_HELP = makePref("help"); PrefPtr PREF_HELP = makePref("help");

View File

@ -111,6 +111,7 @@ extern const std::string A2_V_SSL3;
extern const std::string A2_V_TLS10; extern const std::string A2_V_TLS10;
extern const std::string A2_V_TLS11; extern const std::string A2_V_TLS11;
extern const std::string A2_V_TLS12; extern const std::string A2_V_TLS12;
extern const std::string A2_V_TLS13;
extern PrefPtr PREF_VERSION; extern PrefPtr PREF_VERSION;
extern PrefPtr PREF_HELP; extern PrefPtr PREF_HELP;

View File

@ -2129,6 +2129,9 @@ TLSVersion toTLSVersion(const std::string& ver)
if (ver == A2_V_TLS12) { if (ver == A2_V_TLS12) {
return TLS_PROTO_TLS12; return TLS_PROTO_TLS12;
} }
if (ver == A2_V_TLS13) {
return TLS_PROTO_TLS13;
}
return TLS_PROTO_TLS10; return TLS_PROTO_TLS10;
} }
#endif // ENABLE_SSL #endif // ENABLE_SSL