mirror of
https://github.com/ipxe/ipxe
synced 2026-01-01 09:09:32 +03:00
[x509] Record root of trust used when validating a certificate
Record the root of trust used at the point that a certificate is validated, redefine validation as checking a certificate against a specific root of trust, and pass an explicit root of trust when creating a TLS connection. This allows a custom TLS connection to be used with a custom root of trust, without causing any validated certificates to be treated as valid for normal purposes. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
@@ -284,7 +284,7 @@ int ocsp_check ( struct x509_certificate *cert,
|
||||
/* Sanity checks */
|
||||
assert ( cert != NULL );
|
||||
assert ( issuer != NULL );
|
||||
assert ( x509_is_valid ( issuer ) );
|
||||
assert ( issuer->root != NULL );
|
||||
|
||||
/* Allocate and initialise check */
|
||||
*ocsp = zalloc ( sizeof ( **ocsp ) );
|
||||
@@ -915,7 +915,7 @@ int ocsp_validate ( struct ocsp_check *ocsp, time_t time ) {
|
||||
*/
|
||||
x509_invalidate ( signer );
|
||||
if ( ( rc = x509_validate ( signer, ocsp->issuer, time,
|
||||
NULL ) ) != 0 ) {
|
||||
ocsp->issuer->root ) ) != 0 ) {
|
||||
DBGC ( ocsp, "OCSP %p \"%s\" could not validate ",
|
||||
ocsp, x509_name ( ocsp->cert ) );
|
||||
DBGC ( ocsp, "signer \"%s\": %s\n",
|
||||
@@ -961,7 +961,7 @@ int ocsp_validate ( struct ocsp_check *ocsp, time_t time ) {
|
||||
|
||||
/* Validate certificate against issuer */
|
||||
if ( ( rc = x509_validate ( ocsp->cert, ocsp->issuer, time,
|
||||
NULL ) ) != 0 ) {
|
||||
ocsp->issuer->root ) ) != 0 ) {
|
||||
DBGC ( ocsp, "OCSP %p \"%s\" could not validate certificate: "
|
||||
"%s\n", ocsp, x509_name ( ocsp->cert ), strerror ( rc ));
|
||||
return rc;
|
||||
|
||||
Reference in New Issue
Block a user