I think the newly introduced RSA parameter check valid_ca_pkey() can
also be applied to the outside-TBS RSA signature in .cer files.

Am I using X509_get_X509_PUBKEY() properly?

OK?

Kind regards,

Job

Index: cert.c
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/cert.c,v
retrieving revision 1.104
diff -u -p -r1.104 cert.c
--- cert.c      6 Mar 2023 16:58:41 -0000       1.104
+++ cert.c      6 Mar 2023 22:15:18 -0000
@@ -651,6 +651,7 @@ cert_parse_pre(const char *fn, const uns
        const ASN1_OBJECT       *cobj;
        ASN1_OBJECT             *obj;
        EVP_PKEY                *pkey;
+       X509_PUBKEY             *pubkey;
        struct parse             p;
        int                      nid;
 
@@ -691,6 +692,17 @@ cert_parse_pre(const char *fn, const uns
                    OBJ_nid2ln(NID_sha256WithRSAEncryption));
                goto out;
        }
+
+       if ((pubkey = X509_get_X509_PUBKEY(x)) == NULL) {
+               warnx("%s: X509_get_X509_PUBKEY failed", fn);
+               goto out;
+       }
+       if ((pkey = X509_PUBKEY_get0(pubkey)) == NULL) {
+               warnx("%s: X509_PUBKEY_get failed", fn);
+               goto out;
+       }
+       if (!valid_ca_pkey(fn, pkey))
+               goto out;
 
        /* Look for X509v3 extensions. */
 

Reply via email to