On Wed, Jan 05, 2022 at 11:45:55AM +0100, Claudio Jeker wrote:
> This changes the last proc_parser function over to not pass the entity to
> the function. In this case apart from file we also need to pass the public
> key of the TA and the tal identifier.
> 
> Change is mechanical and makes all callers work the same way.

ok tb

> -- 
> :wq Claudio
> 
> Index: parser.c
> ===================================================================
> RCS file: /cvs/src/usr.sbin/rpki-client/parser.c,v
> retrieving revision 1.32
> diff -u -p -r1.32 parser.c
> --- parser.c  4 Jan 2022 18:41:32 -0000       1.32
> +++ parser.c  5 Jan 2022 09:49:07 -0000
> @@ -246,8 +246,7 @@ proc_parser_mft(char *file, const unsign
>   * parse failure.
>   */
>  static struct cert *
> -proc_parser_cert(char *file, const unsigned char *der,
> -    size_t len)
> +proc_parser_cert(char *file, const unsigned char *der, size_t len)
>  {
>       struct cert             *cert;
>       X509                    *x509;
> @@ -325,8 +324,8 @@ proc_parser_cert(char *file, const unsig
>   * parse failure.
>   */
>  static struct cert *
> -proc_parser_root_cert(const struct entity *entp, const unsigned char *der,
> -    size_t len)
> +proc_parser_root_cert(char *file, const unsigned char *der, size_t len,
> +    unsigned char *pkey, size_t pkeysz, int talid)
>  {
>       char                    subject[256];
>       ASN1_TIME               *notBefore, *notAfter;
> @@ -334,52 +333,49 @@ proc_parser_root_cert(const struct entit
>       struct cert             *cert;
>       X509                    *x509;
>  
> -     assert(entp->data != NULL);
> -
>       /* Extract certificate data and X509. */
>  
> -     cert = ta_parse(&x509, entp->file, der, len, entp->data, entp->datasz);
> +     cert = ta_parse(&x509, file, der, len, pkey, pkeysz);
>       if (cert == NULL)
>               return NULL;
>  
>       if ((name = X509_get_subject_name(x509)) == NULL) {
> -             warnx("%s Unable to get certificate subject", entp->file);
> +             warnx("%s Unable to get certificate subject", file);
>               goto badcert;
>       }
>       if (X509_NAME_oneline(name, subject, sizeof(subject)) == NULL) {
> -             warnx("%s: Unable to parse certificate subject name",
> -                 entp->file);
> +             warnx("%s: Unable to parse certificate subject name", file);
>               goto badcert;
>       }
>       if ((notBefore = X509_get_notBefore(x509)) == NULL) {
>               warnx("%s: certificate has invalid notBefore, subject='%s'",
> -                 entp->file, subject);
> +                 file, subject);
>               goto badcert;
>       }
>       if ((notAfter = X509_get_notAfter(x509)) == NULL) {
>               warnx("%s: certificate has invalid notAfter, subject='%s'",
> -                 entp->file, subject);
> +                 file, subject);
>               goto badcert;
>       }
>       if (X509_cmp_current_time(notBefore) != -1) {
> -             warnx("%s: certificate not yet valid, subject='%s'", entp->file,
> +             warnx("%s: certificate not yet valid, subject='%s'", file,
>                   subject);
>               goto badcert;
>       }
>       if (X509_cmp_current_time(notAfter) != 1)  {
> -             warnx("%s: certificate has expired, subject='%s'", entp->file,
> +             warnx("%s: certificate has expired, subject='%s'", file,
>                   subject);
>               goto badcert;
>       }
> -     if (!valid_ta(entp->file, &auths, cert)) {
> +     if (!valid_ta(file, &auths, cert)) {
>               warnx("%s: certificate not a valid ta, subject='%s'",
> -                 entp->file, subject);
> +                 file, subject);
>               goto badcert;
>       }
>  
>       X509_free(x509);
>  
> -     cert->talid = entp->talid;
> +     cert->talid = talid;
>  
>       /*
>        * Add valid roots to the RPKI auth tree.
> @@ -589,7 +585,9 @@ parse_entity(struct entityq *q, struct m
>                       break;
>               case RTYPE_CER:
>                       if (entp->data != NULL)
> -                             cert = proc_parser_root_cert(entp, f, flen);
> +                             cert = proc_parser_root_cert(entp->file,
> +                                 f, flen, entp->data, entp->datasz,
> +                                 entp->talid);
>                       else
>                               cert = proc_parser_cert(entp->file, f, flen);
>                       c = (cert != NULL);
> 

Reply via email to