]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[ocsp] Handle OCSP responses that don't provide certificates
authorAlexander Chernyakhovsky <achernya@google.com>
Tue, 15 Oct 2013 20:03:11 +0000 (16:03 -0400)
committerMichael Brown <mcb30@ipxe.org>
Tue, 25 Mar 2014 16:30:43 +0000 (16:30 +0000)
Certificate authorities are not required to send the certificate used
to sign the OCSP response if the response is signed by the original
issuer.

Modified-by: Michael Brown <mcb30@ipxe.org>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/crypto/ocsp.c

index 9c56688850b871259df6d5452cad46df33228980..27c0080cb11a371256fb4aac45506ee57190cb2c 100644 (file)
@@ -867,12 +867,17 @@ static int ocsp_check_signature ( struct ocsp_check *ocsp,
  */
 int ocsp_validate ( struct ocsp_check *ocsp, time_t time ) {
        struct ocsp_response *response = &ocsp->response;
-       struct x509_certificate *signer = response->signer;
+       struct x509_certificate *signer;
        int rc;
 
        /* Sanity checks */
        assert ( response->data != NULL );
-       assert ( signer != NULL );
+
+       /* The response may include a signer certificate; if this is
+        * not present then the response must have been signed
+        * directly by the issuer.
+        */
+       signer = ( response->signer ? response->signer : ocsp->issuer );
 
        /* Validate signer, if applicable.  If the signer is not the
         * issuer, then it must be signed directly by the issuer.