Merge SSLv23_method and DTLS_ANY_VERSION. This makes SSLv23_method go through DTLS_ANY_VERSION's version negotiation logic. This allows us to get rid of duplicate ClientHello logic. For compatibility, SSL_METHOD is now split into SSL_PROTOCOL_METHOD and a version. The legacy version-locked methods set min_version and max_version based this version field to emulate the original semantics. As a bonus, we can now handle fragmented ClientHello versions now. Because SSLv23_method is a silly name, deprecate that too and introduce TLS_method. Change-Id: I8b3df2b427ae34c44ecf972f466ad64dc3dbb171
diff --git a/ssl/ssl_test.c b/ssl/ssl_test.c index ee83693..70291a2 100644 --- a/ssl/ssl_test.c +++ b/ssl/ssl_test.c
@@ -420,12 +420,34 @@ return ret; } +int test_default_version(uint16_t version, const SSL_METHOD *(*method)(void)) { + SSL_CTX *ctx; + int ret; + + ctx = SSL_CTX_new(method()); + if (ctx == NULL) { + return 0; + } + + ret = ctx->min_version == version && ctx->max_version == version; + SSL_CTX_free(ctx); + return ret; +} + int main(void) { SSL_library_init(); if (!test_cipher_rules() || !test_ssl_session_asn1(kOpenSSLSession) || - !test_ssl_session_asn1(kCustomSession)) { + !test_ssl_session_asn1(kCustomSession) || + !test_default_version(0, &TLS_method) || + !test_default_version(SSL3_VERSION, &SSLv3_method) || + !test_default_version(TLS1_VERSION, &TLSv1_method) || + !test_default_version(TLS1_1_VERSION, &TLSv1_1_method) || + !test_default_version(TLS1_2_VERSION, &TLSv1_2_method) || + !test_default_version(0, &DTLS_method) || + !test_default_version(DTLS1_VERSION, &DTLSv1_method) || + !test_default_version(DTLS1_2_VERSION, &DTLSv1_2_method)) { return 1; }