Author: rjung Date: Fri Mar 4 19:31:17 2016 New Revision: 1733641 URL: http://svn.apache.org/viewvc?rev=1733641&view=rev Log: OpenSSL 1.1.0 compatibility updates.
There's one harder to fix incompatibility left in native/src/sslcontext.c. Modified: tomcat/native/trunk/native/include/ssl_private.h tomcat/native/trunk/native/src/ssl.c tomcat/native/trunk/native/src/sslcontext.c tomcat/native/trunk/native/src/sslinfo.c tomcat/native/trunk/native/src/sslnetwork.c tomcat/native/trunk/native/src/sslutils.c tomcat/native/trunk/xdocs/miscellaneous/changelog.xml Modified: tomcat/native/trunk/native/include/ssl_private.h URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/include/ssl_private.h?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/include/ssl_private.h (original) +++ tomcat/native/trunk/native/include/ssl_private.h Fri Mar 4 19:31:17 2016 @@ -203,6 +203,18 @@ #endif /* !defined(OPENSSL_NO_TLSEXT) && defined(SSL_set_tlsext_host_name) */ +/* OpenSSL 1.0.2 compatibility */ +#if OPENSSL_VERSION_NUMBER < 0x10100000L +#define TLS_method SSLv23_method +#define TLS_client_method SSLv23_client_method +#define TLS_server_method SSLv23_server_method +#define OPENSSL_VERSION SSLEAY_VERSION +#define OpenSSL_version SSLeay_version +#define OPENSSL_malloc_init CRYPTO_malloc_init +#define X509_REVOKED_get0_serialNumber(x) x->serialNumber +#define OpenSSL_version_num SSLeay +#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */ + #define MAX_ALPN_NPN_PROTO_SIZE 65535 #define SSL_SELECTOR_FAILURE_CHOOSE_MY_LAST_PROTOCOL 1 Modified: tomcat/native/trunk/native/src/ssl.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/ssl.c?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/src/ssl.c (original) +++ tomcat/native/trunk/native/src/ssl.c Fri Mar 4 19:31:17 2016 @@ -267,21 +267,13 @@ DH *SSL_get_dh_params(unsigned keylen) TCN_IMPLEMENT_CALL(jint, SSL, version)(TCN_STDARGS) { UNREFERENCED_STDARGS; -#if OPENSSL_VERSION_NUMBER < 0x10100000L - return OPENSSL_VERSION_NUMBER; -#else return OpenSSL_version_num(); -#endif } TCN_IMPLEMENT_CALL(jstring, SSL, versionString)(TCN_STDARGS) { UNREFERENCED(o); -#if OPENSSL_VERSION_NUMBER < 0x10100000L - return AJP_TO_JSTRING(SSLeay_version(SSLEAY_VERSION)); -#else return AJP_TO_JSTRING(OpenSSL_version(OPENSSL_VERSION)); -#endif } /* @@ -318,11 +310,7 @@ static apr_status_t ssl_init_cleanup(voi ENGINE_cleanup(); #endif CRYPTO_cleanup_all_ex_data(); -#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(OPENSSL_USE_DEPRECATED) - ERR_remove_state(0); -#else ERR_remove_thread_state(NULL); -#endif /* Don't call ERR_free_strings here; ERR_load_*_strings only * actually load the error strings once per process due to static @@ -394,13 +382,16 @@ static unsigned long ssl_thread_id(void) #endif } +static void ssl_set_thread_id(CRYPTO_THREADID *id) +{ + CRYPTO_THREADID_set_numeric(id, ssl_thread_id()); +} + static apr_status_t ssl_thread_cleanup(void *data) { UNREFERENCED(data); CRYPTO_set_locking_callback(NULL); -#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(OPENSSL_USE_DEPRECATED) - CRYPTO_set_id_callback(NULL); -#endif + CRYPTO_THREADID_set_callback(NULL); CRYPTO_set_dynlock_create_callback(NULL); CRYPTO_set_dynlock_lock_callback(NULL); CRYPTO_set_dynlock_destroy_callback(NULL); @@ -501,9 +492,7 @@ static void ssl_thread_setup(apr_pool_t APR_THREAD_MUTEX_DEFAULT, p); } -#if (OPENSSL_VERSION_NUMBER < 0x10100000L) || defined(OPENSSL_USE_DEPRECATED) - CRYPTO_set_id_callback(ssl_thread_id); -#endif + CRYPTO_THREADID_set_callback(ssl_set_thread_id); CRYPTO_set_locking_callback(ssl_thread_lock); /* Set up dynamic locking scaffolding for OpenSSL to use at its @@ -544,9 +533,11 @@ static int ssl_rand_load_file(const char file = RAND_file_name(buffer, sizeof(buffer)); if (file) { if (strncmp(file, "egd:", 4) == 0) { +#ifndef OPENSSL_NO_EGD if ((n = RAND_egd(file + 4)) > 0) return n; else +#endif return -1; } if ((n = RAND_load_file(file, -1)) > 0) @@ -563,13 +554,17 @@ static int ssl_rand_load_file(const char static int ssl_rand_save_file(const char *file) { char buffer[APR_PATH_MAX]; +#ifndef OPENSSL_NO_EGD int n; +#endif if (file == NULL) file = RAND_file_name(buffer, sizeof(buffer)); +#ifndef OPENSSL_NO_EGD else if ((n = RAND_egd(file)) > 0) { return 0; } +#endif if (file == NULL || !RAND_write_file(file)) return 0; else @@ -669,11 +664,7 @@ TCN_IMPLEMENT_CALL(jint, SSL, initialize /* We must register the library in full, to ensure our configuration * code can successfully test the SSL environment. */ -#if OPENSSL_VERSION_NUMBER < 0x10100000L - CRYPTO_malloc_init(); -#else OPENSSL_malloc_init(); -#endif ERR_load_crypto_strings(); SSL_load_error_strings(); SSL_library_init(); Modified: tomcat/native/trunk/native/src/sslcontext.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/sslcontext.c?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/src/sslcontext.c (original) +++ tomcat/native/trunk/native/src/sslcontext.c Fri Mar 4 19:31:17 2016 @@ -189,21 +189,12 @@ TCN_IMPLEMENT_CALL(jlong, SSLContext, ma /* requested but not supported */ #endif } else { -#if OPENSSL_VERSION_NUMBER < 0x10100000L - if (mode == SSL_MODE_CLIENT) - ctx = SSL_CTX_new(SSLv23_client_method()); - else if (mode == SSL_MODE_SERVER) - ctx = SSL_CTX_new(SSLv23_server_method()); - else - ctx = SSL_CTX_new(SSLv23_method()); -#else if (mode == SSL_MODE_CLIENT) ctx = SSL_CTX_new(TLS_client_method()); else if (mode == SSL_MODE_SERVER) ctx = SSL_CTX_new(TLS_server_method()); else ctx = SSL_CTX_new(TLS_method()); -#endif } if (!ctx) { @@ -1542,7 +1533,7 @@ TCN_IMPLEMENT_CALL(void, SSLContext, set * Adapted from Android: * https://android.googlesource.com/platform/external/openssl/+/master/patches/0003-jsse.patch */ -const char* SSL_CIPHER_authentication_method(const SSL_CIPHER* cipher){ +static const char* SSL_CIPHER_authentication_method(const SSL_CIPHER* cipher){ switch (cipher->algorithm_mkey) { case SSL_kRSA: Modified: tomcat/native/trunk/native/src/sslinfo.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/sslinfo.c?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/src/sslinfo.c (original) +++ tomcat/native/trunk/native/src/sslinfo.c Fri Mar 4 19:31:17 2016 @@ -393,22 +393,14 @@ TCN_IMPLEMENT_CALL(jstring, SSLSocket, g } break; case SSL_INFO_CLIENT_A_SIG: -#if OPENSSL_VERSION_NUMBER < 0x10100000L - nid = OBJ_obj2nid((ASN1_OBJECT *)xs->cert_info->signature->algorithm); -#else nid = X509_get_signature_nid(xs); -#endif if (nid == NID_undef) value = tcn_new_string(e, "UNKNOWN"); else value = tcn_new_string(e, OBJ_nid2ln(nid)); break; case SSL_INFO_CLIENT_A_KEY: -#if OPENSSL_VERSION_NUMBER < 0x10100000L - nid = OBJ_obj2nid((ASN1_OBJECT *)xs->cert_info->key->algor->algorithm); -#else nid = OBJ_obj2nid((ASN1_OBJECT *)(X509_get_X509_PUBKEY(xs)->algor->algorithm)); -#endif if (nid == NID_undef) value = tcn_new_string(e, "UNKNOWN"); else @@ -450,22 +442,14 @@ TCN_IMPLEMENT_CALL(jstring, SSLSocket, g } break; case SSL_INFO_SERVER_A_SIG: -#if OPENSSL_VERSION_NUMBER < 0x10100000L - nid = OBJ_obj2nid((ASN1_OBJECT *)xs->cert_info->signature->algorithm); -#else nid = X509_get_signature_nid(xs); -#endif if (nid == NID_undef) value = tcn_new_string(e, "UNKNOWN"); else value = tcn_new_string(e, OBJ_nid2ln(nid)); break; case SSL_INFO_SERVER_A_KEY: -#if OPENSSL_VERSION_NUMBER < 0x10100000L - nid = OBJ_obj2nid((ASN1_OBJECT *)xs->cert_info->key->algor->algorithm); -#else nid = OBJ_obj2nid((ASN1_OBJECT *)(X509_get_X509_PUBKEY(xs)->algor->algorithm)); -#endif if (nid == NID_undef) value = tcn_new_string(e, "UNKNOWN"); else Modified: tomcat/native/trunk/native/src/sslnetwork.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/sslnetwork.c?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/src/sslnetwork.c (original) +++ tomcat/native/trunk/native/src/sslnetwork.c Fri Mar 4 19:31:17 2016 @@ -640,11 +640,7 @@ TCN_IMPLEMENT_CALL(jint, SSLSocket, rene retVal = SSL_do_handshake(con->ssl); if (retVal <= 0) return APR_EGENERAL; -#if OPENSSL_VERSION_NUMBER < 0x10100000L - if (SSL_get_state(con->ssl) != SSL_ST_OK) { -#else - if (SSL_get_state(con->ssl) != TLS_ST_OK) { -#endif + if (!SSL_is_init_finished(con->ssl)) { return APR_EGENERAL; } return APR_SUCCESS; Modified: tomcat/native/trunk/native/src/sslutils.c URL: http://svn.apache.org/viewvc/tomcat/native/trunk/native/src/sslutils.c?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/native/src/sslutils.c (original) +++ tomcat/native/trunk/native/src/sslutils.c Fri Mar 4 19:31:17 2016 @@ -213,11 +213,7 @@ EC_GROUP *SSL_ec_GetParamFromFile(const DH *SSL_callback_tmp_DH(SSL *ssl, int export, int keylen) { EVP_PKEY *pkey = SSL_get_privatekey(ssl); -#if OPENSSL_VERSION_NUMBER < 0x10100000L - int type = pkey != NULL ? EVP_PKEY_type(pkey->type) : EVP_PKEY_NONE; -#else int type = pkey != NULL ? EVP_PKEY_base_id(pkey) : EVP_PKEY_NONE; -#endif /* * OpenSSL will call us with either keylen == 512 or keylen == 1024 @@ -250,11 +246,7 @@ int SSL_CTX_use_certificate_chain(SSL_CT unsigned long err; int n; -#if OPENSSL_VERSION_NUMBER < 0x10100000L - if ((bio = BIO_new(BIO_s_file_internal())) == NULL) -#else if ((bio = BIO_new(BIO_s_file())) == NULL) -#endif return -1; if (BIO_read_filename(bio, file) <= 0) { BIO_free(bio); @@ -427,11 +419,7 @@ static int ssl_verify_CRL(int ok, X509_S X509_REVOKED *revoked = sk_X509_REVOKED_value(X509_CRL_get_REVOKED(crl), i); -#if OPENSSL_VERSION_NUMBER < 0x10100000L - ASN1_INTEGER *sn = revoked->serialNumber; -#else ASN1_INTEGER *sn = X509_REVOKED_get0_serialNumber(revoked); -#endif if (!ASN1_INTEGER_cmp(sn, X509_get_serialNumber(cert))) { X509_STORE_CTX_set_error(ctx, X509_V_ERR_CERT_REVOKED); Modified: tomcat/native/trunk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/native/trunk/xdocs/miscellaneous/changelog.xml?rev=1733641&r1=1733640&r2=1733641&view=diff ============================================================================== --- tomcat/native/trunk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/native/trunk/xdocs/miscellaneous/changelog.xml Fri Mar 4 19:31:17 2016 @@ -36,6 +36,9 @@ </section> <section name="Changes in 1.2.6"> <changelog> + <scode> + OpenSSL 1.1.0 compatibility updates. (rjung) + </scode> <fix> Fix some compiler warnings in native ssl code. (rjung) </fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org