Hi, On 17-02-17 23:00, log...@free.fr wrote: > From: Emmanuel Deloget <log...@free.fr> > > OpenSSL 1.1 does not allow us to directly access the internal of > any data type, including X509_STORE_CTX. We have to use the defined > functions to do so. > > Fortunately, these functions have existed since the dawn of time so > we don't have any compatibility issue here. > > Signed-off-by: Emmanuel Deloget <log...@free.fr> > --- > src/openvpn/ssl_verify_openssl.c | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/src/openvpn/ssl_verify_openssl.c > b/src/openvpn/ssl_verify_openssl.c > index > edc709b89eb05bca895639dde606b29f8e1f7024..5bdd1e3609c4a2693e16c0835a9e5c39babd5ff8 > 100644 > --- a/src/openvpn/ssl_verify_openssl.c > +++ b/src/openvpn/ssl_verify_openssl.c > @@ -62,14 +62,15 @@ verify_callback(int preverify_ok, X509_STORE_CTX *ctx) > session = (struct tls_session *) SSL_get_ex_data(ssl, mydata_index); > ASSERT(session); > > - struct buffer cert_hash = x509_get_sha256_fingerprint(ctx->current_cert, > &gc); > - cert_hash_remember(session, ctx->error_depth, &cert_hash); > + X509 *current_cert = X509_STORE_CTX_get_current_cert(ctx); > + struct buffer cert_hash = x509_get_sha256_fingerprint(current_cert, &gc); > + cert_hash_remember(session, X509_STORE_CTX_get_error_depth(ctx), > &cert_hash); > > /* did peer present cert which was signed by our root cert? */ > if (!preverify_ok) > { > /* get the X509 name */ > - char *subject = x509_get_subject(ctx->current_cert, &gc); > + char *subject = x509_get_subject(current_cert, &gc); > > if (!subject) > { > @@ -77,11 +78,11 @@ verify_callback(int preverify_ok, X509_STORE_CTX *ctx) > } > > /* Log and ignore missing CRL errors */ > - if (ctx->error == X509_V_ERR_UNABLE_TO_GET_CRL) > + if (X509_STORE_CTX_get_error(ctx) == X509_V_ERR_UNABLE_TO_GET_CRL) > { > msg(D_TLS_DEBUG_LOW, "VERIFY WARNING: depth=%d, %s: %s", > - ctx->error_depth, > - X509_verify_cert_error_string(ctx->error), > + X509_STORE_CTX_get_error_depth(ctx), > + X509_verify_cert_error_string(X509_STORE_CTX_get_error(ctx)), > subject); > ret = 1; > goto cleanup; > @@ -89,8 +90,8 @@ verify_callback(int preverify_ok, X509_STORE_CTX *ctx) > > /* Remote site specified a certificate, but it's not correct */ > msg(D_TLS_ERRORS, "VERIFY ERROR: depth=%d, error=%s: %s", > - ctx->error_depth, > - X509_verify_cert_error_string(ctx->error), > + X509_STORE_CTX_get_error_depth(ctx), > + X509_verify_cert_error_string(X509_STORE_CTX_get_error(ctx)), > subject); > > ERR_clear_error(); > @@ -99,7 +100,7 @@ verify_callback(int preverify_ok, X509_STORE_CTX *ctx) > goto cleanup; > } > > - if (SUCCESS != verify_cert(session, ctx->current_cert, ctx->error_depth)) > + if (SUCCESS != verify_cert(session, current_cert, > X509_STORE_CTX_get_error_depth(ctx))) > { > goto cleanup; > } >
ACK. Changes look good and tested against OpenSSL 0.9.8, 1.0.0, 1.0.1 and 1.0.2. -Steffan ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel