winhttp: Return error directly from netconn_verify_cert.
This commit is contained in:
parent
2f56ef09e6
commit
1308c4287f
|
@ -251,15 +251,15 @@ static PCCERT_CONTEXT X509_to_cert_context(X509 *cert)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static BOOL netconn_verify_cert( PCCERT_CONTEXT cert, HCERTSTORE store,
|
static DWORD netconn_verify_cert( PCCERT_CONTEXT cert, HCERTSTORE store,
|
||||||
WCHAR *server )
|
WCHAR *server )
|
||||||
{
|
{
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
CERT_CHAIN_PARA chainPara = { sizeof(chainPara), { 0 } };
|
CERT_CHAIN_PARA chainPara = { sizeof(chainPara), { 0 } };
|
||||||
PCCERT_CHAIN_CONTEXT chain;
|
PCCERT_CHAIN_CONTEXT chain;
|
||||||
char oid_server_auth[] = szOID_PKIX_KP_SERVER_AUTH;
|
char oid_server_auth[] = szOID_PKIX_KP_SERVER_AUTH;
|
||||||
char *server_auth[] = { oid_server_auth };
|
char *server_auth[] = { oid_server_auth };
|
||||||
DWORD err;
|
DWORD err = ERROR_SUCCESS;
|
||||||
|
|
||||||
TRACE("verifying %s\n", debugstr_w( server ));
|
TRACE("verifying %s\n", debugstr_w( server ));
|
||||||
chainPara.RequestedUsage.Usage.cUsageIdentifier = 1;
|
chainPara.RequestedUsage.Usage.cUsageIdentifier = 1;
|
||||||
|
@ -286,8 +286,6 @@ static BOOL netconn_verify_cert( PCCERT_CONTEXT cert, HCERTSTORE store,
|
||||||
err = ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE;
|
err = ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE;
|
||||||
else
|
else
|
||||||
err = ERROR_WINHTTP_SECURE_INVALID_CERT;
|
err = ERROR_WINHTTP_SECURE_INVALID_CERT;
|
||||||
set_last_error( err );
|
|
||||||
ret = FALSE;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -313,14 +311,14 @@ static BOOL netconn_verify_cert( PCCERT_CONTEXT cert, HCERTSTORE store,
|
||||||
err = ERROR_WINHTTP_SECURE_CERT_CN_INVALID;
|
err = ERROR_WINHTTP_SECURE_CERT_CN_INVALID;
|
||||||
else
|
else
|
||||||
err = ERROR_WINHTTP_SECURE_INVALID_CERT;
|
err = ERROR_WINHTTP_SECURE_INVALID_CERT;
|
||||||
set_last_error( err );
|
|
||||||
ret = FALSE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CertFreeCertificateChain( chain );
|
CertFreeCertificateChain( chain );
|
||||||
}
|
}
|
||||||
TRACE("returning %d\n", ret);
|
else
|
||||||
return ret;
|
err = ERROR_WINHTTP_SECURE_CHANNEL_ERROR;
|
||||||
|
TRACE("returning %08x\n", err);
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int netconn_secure_verify( int preverify_ok, X509_STORE_CTX *ctx )
|
static int netconn_secure_verify( int preverify_ok, X509_STORE_CTX *ctx )
|
||||||
|
@ -361,7 +359,15 @@ static int netconn_secure_verify( int preverify_ok, X509_STORE_CTX *ctx )
|
||||||
}
|
}
|
||||||
if (!endCert) ret = FALSE;
|
if (!endCert) ret = FALSE;
|
||||||
if (ret)
|
if (ret)
|
||||||
ret = netconn_verify_cert( endCert, store, server );
|
{
|
||||||
|
DWORD err = netconn_verify_cert( endCert, store, server );
|
||||||
|
|
||||||
|
if (err)
|
||||||
|
{
|
||||||
|
set_last_error( err );
|
||||||
|
ret = FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
CertFreeCertificateContext( endCert );
|
CertFreeCertificateContext( endCert );
|
||||||
CertCloseStore( store, 0 );
|
CertCloseStore( store, 0 );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue