mirror of https://github.com/getdnsapi/getdns.git
Tinker with debug statements/comments.
This commit is contained in:
parent
a9eb9ccca9
commit
2ce806c05b
24
src/stub.c
24
src/stub.c
|
@ -852,9 +852,9 @@ tls_verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||||
err, X509_verify_cert_error_string(err));
|
err, X509_verify_cert_error_string(err));
|
||||||
|
|
||||||
#ifdef X509_V_ERR_HOSTNAME_MISMATCH
|
#ifdef X509_V_ERR_HOSTNAME_MISMATCH
|
||||||
/*Proceed if error is hostname mismatch*/
|
/*Report if error is hostname mismatch*/
|
||||||
if (upstream && upstream->tls_fallback_ok && err == X509_V_ERR_HOSTNAME_MISMATCH)
|
if (upstream && upstream->tls_fallback_ok && err == X509_V_ERR_HOSTNAME_MISMATCH)
|
||||||
DEBUG_STUB("--- %s, PROCEEDING WITHOUT HOSTNAME VALIDATION!!\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, PROCEEDING EVEN THOUGH HOSTNAME VALIDATION FAILED!!\n", __FUNCTION__);
|
||||||
#endif
|
#endif
|
||||||
if (upstream && upstream->tls_pubkey_pinset)
|
if (upstream && upstream->tls_pubkey_pinset)
|
||||||
pinset_ret = _getdns_verify_pinset_match(upstream->tls_pubkey_pinset, ctx);
|
pinset_ret = _getdns_verify_pinset_match(upstream->tls_pubkey_pinset, ctx);
|
||||||
|
@ -863,8 +863,10 @@ tls_verify_callback(int preverify_ok, X509_STORE_CTX *ctx)
|
||||||
DEBUG_STUB("--- %s, PINSET VALIDATION FAILURE!!\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, PINSET VALIDATION FAILURE!!\n", __FUNCTION__);
|
||||||
preverify_ok = 0;
|
preverify_ok = 0;
|
||||||
if (upstream->tls_fallback_ok)
|
if (upstream->tls_fallback_ok)
|
||||||
DEBUG_STUB("--- %s, PROCEEDING WITHOUT PINSET VALIDATION!!\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, PROCEEDING EVEN THOUGH PINSET VALIDATION FAILED!!\n", __FUNCTION__);
|
||||||
}
|
}
|
||||||
|
/* If fallback is allowed, proceed regardless of what the auth error is
|
||||||
|
(might not be hostname or pinset related) */
|
||||||
return (upstream && upstream->tls_fallback_ok) ? 1 : preverify_ok;
|
return (upstream && upstream->tls_fallback_ok) ? 1 : preverify_ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -906,11 +908,10 @@ tls_create_object(getdns_dns_req *dnsreq, int fd, getdns_upstream *upstream)
|
||||||
param = SSL_get0_param(ssl);
|
param = SSL_get0_param(ssl);
|
||||||
X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
|
X509_VERIFY_PARAM_set_hostflags(param, X509_CHECK_FLAG_NO_PARTIAL_WILDCARDS);
|
||||||
X509_VERIFY_PARAM_set1_host(param, upstream->tls_auth_name, 0);
|
X509_VERIFY_PARAM_set1_host(param, upstream->tls_auth_name, 0);
|
||||||
DEBUG_STUB("--- %s, HOSTNAME VERIFICATION REQUESTED \n", __FUNCTION__);
|
|
||||||
#else
|
#else
|
||||||
if (dnsreq->netreqs[0]->tls_auth_min == GETDNS_AUTHENTICATION_HOSTNAME) {
|
if (dnsreq->netreqs[0]->tls_auth_min == GETDNS_AUTHENTICATION_HOSTNAME) {
|
||||||
/* TODO: Trigger post-handshake custom validation*/
|
/* TODO: Trigger post-handshake custom validation*/
|
||||||
DEBUG_STUB("--- %s, ERROR: Authentication functionality not available\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, ERROR: TLS Authentication functionality not available\n", __FUNCTION__);
|
||||||
upstream->tls_hs_state = GETDNS_HS_FAILED;
|
upstream->tls_hs_state = GETDNS_HS_FAILED;
|
||||||
upstream->tls_auth_failed = 1;
|
upstream->tls_auth_failed = 1;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -922,21 +923,24 @@ tls_create_object(getdns_dns_req *dnsreq, int fd, getdns_upstream *upstream)
|
||||||
} else {
|
} else {
|
||||||
/* Lack of host name is OK unless only authenticated TLS is specified*/
|
/* Lack of host name is OK unless only authenticated TLS is specified*/
|
||||||
if (dnsreq->netreqs[0]->tls_auth_min == GETDNS_AUTHENTICATION_HOSTNAME) {
|
if (dnsreq->netreqs[0]->tls_auth_min == GETDNS_AUTHENTICATION_HOSTNAME) {
|
||||||
DEBUG_STUB("--- %s, ERROR: No host name provided for authentication\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, ERROR: No host name provided for TLS authentication\n", __FUNCTION__);
|
||||||
upstream->tls_hs_state = GETDNS_HS_FAILED;
|
upstream->tls_hs_state = GETDNS_HS_FAILED;
|
||||||
upstream->tls_auth_failed = 1;
|
upstream->tls_auth_failed = 1;
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
/* no hostname verification, so we will make opportunistic connections */
|
/* no hostname verification, so we will make opportunistic connections */
|
||||||
DEBUG_STUB("--- %s, PROCEEDING WITHOUT HOSTNAME VALIDATION!!\n", __FUNCTION__);
|
DEBUG_STUB("--- %s, PROCEEDING EVEN THOUGH NO HOSTNAME PROVIDED!!\n", __FUNCTION__);
|
||||||
upstream->tls_auth_failed = 1;
|
upstream->tls_auth_failed = 1;
|
||||||
upstream->tls_fallback_ok = 1;
|
upstream->tls_fallback_ok = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (upstream->tls_fallback_ok)
|
if (upstream->tls_fallback_ok) {
|
||||||
SSL_set_cipher_list(ssl, "DEFAULT");
|
SSL_set_cipher_list(ssl, "DEFAULT");
|
||||||
|
DEBUG_STUB("--- %s, PROCEEDING WITH OPPOTUNISTIC TLS CONNECTION (FALLBACK ALLOWED)!!\n", __FUNCTION__);
|
||||||
|
} else
|
||||||
|
DEBUG_STUB("--- %s, PROCEEDING WITH STRICT TLS CONNECTION!!\n", __FUNCTION__);
|
||||||
SSL_set_verify(ssl, SSL_VERIFY_PEER, tls_verify_callback);
|
SSL_set_verify(ssl, SSL_VERIFY_PEER, tls_verify_callback);
|
||||||
|
|
||||||
SSL_set_connect_state(ssl);
|
SSL_set_connect_state(ssl);
|
||||||
(void) SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
|
(void) SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
|
||||||
return ssl;
|
return ssl;
|
||||||
|
|
Loading…
Reference in New Issue