From c1a8310d56c9b59e1bd7fd2f5c7f3d48a1f7094d Mon Sep 17 00:00:00 2001 From: tb Date: Mon, 24 Oct 2022 10:26:59 +0000 Subject: [PATCH] Make x509_init_oid() table based Reduces the amount of copy-paste and makes things easier on the eye. ok claudio job --- usr.sbin/rpki-client/x509.c | 105 +++++++++++++++++++++++------------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/usr.sbin/rpki-client/x509.c b/usr.sbin/rpki-client/x509.c index 19c60798464..5114b3ed7cc 100644 --- a/usr.sbin/rpki-client/x509.c +++ b/usr.sbin/rpki-client/x509.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509.c,v 1.50 2022/09/03 14:40:09 job Exp $ */ +/* $OpenBSD: x509.c,v 1.51 2022/10/24 10:26:59 tb Exp $ */ /* * Copyright (c) 2022 Theo Buehler * Copyright (c) 2021 Claudio Jeker @@ -46,45 +46,78 @@ ASN1_OBJECT *bin_sign_time_oid; /* pkcs-9 id-aa-binarySigningTime */ ASN1_OBJECT *rsc_oid; /* id-ct-signedChecklist */ ASN1_OBJECT *aspa_oid; /* id-ct-ASPA */ +static const struct { + const char *oid; + ASN1_OBJECT **ptr; +} oid_table[] = { + { + .oid = "1.3.6.1.5.5.7.14.2", + .ptr = &certpol_oid, + }, + { + .oid = "1.3.6.1.5.5.7.48.5", + .ptr = &carepo_oid, + }, + { + .oid = "1.3.6.1.5.5.7.48.10", + .ptr = &manifest_oid, + }, + { + .oid = "1.3.6.1.5.5.7.48.13", + .ptr = ¬ify_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.1.24", + .ptr = &roa_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.1.26", + .ptr = &mft_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.1.35", + .ptr = &gbr_oid, + }, + { + .oid = "1.3.6.1.5.5.7.3.30", + .ptr = &bgpsec_oid, + }, + { + .oid = "1.2.840.113549.1.9.3", + .ptr = &cnt_type_oid, + }, + { + .oid = "1.2.840.113549.1.9.4", + .ptr = &msg_dgst_oid, + }, + { + .oid = "1.2.840.113549.1.9.5", + .ptr = &sign_time_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.2.46", + .ptr = &bin_sign_time_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.1.48", + .ptr = &rsc_oid, + }, + { + .oid = "1.2.840.113549.1.9.16.1.49", + .ptr = &aspa_oid, + }, +}; + void x509_init_oid(void) { + size_t i; - if ((certpol_oid = OBJ_txt2obj("1.3.6.1.5.5.7.14.2", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.3.6.1.5.5.7.14.2"); - if ((carepo_oid = OBJ_txt2obj("1.3.6.1.5.5.7.48.5", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.3.6.1.5.5.7.48.5"); - if ((manifest_oid = OBJ_txt2obj("1.3.6.1.5.5.7.48.10", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.3.6.1.5.5.7.48.10"); - if ((notify_oid = OBJ_txt2obj("1.3.6.1.5.5.7.48.13", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.3.6.1.5.5.7.48.13"); - if ((roa_oid = OBJ_txt2obj("1.2.840.113549.1.9.16.1.24", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.1.24"); - if ((mft_oid = OBJ_txt2obj("1.2.840.113549.1.9.16.1.26", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.1.26"); - if ((gbr_oid = OBJ_txt2obj("1.2.840.113549.1.9.16.1.35", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.1.35"); - if ((bgpsec_oid = OBJ_txt2obj("1.3.6.1.5.5.7.3.30", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.3.6.1.5.5.7.3.30"); - if ((cnt_type_oid = OBJ_txt2obj("1.2.840.113549.1.9.3", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.2.840.113549.1.9.3"); - if ((msg_dgst_oid = OBJ_txt2obj("1.2.840.113549.1.9.4", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.2.840.113549.1.9.4"); - if ((sign_time_oid = OBJ_txt2obj("1.2.840.113549.1.9.5", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", "1.2.840.113549.1.9.5"); - if ((bin_sign_time_oid = - OBJ_txt2obj("1.2.840.113549.1.9.16.2.46", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.2.46"); - if ((rsc_oid = OBJ_txt2obj("1.2.840.113549.1.9.16.1.48", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.1.48"); - if ((aspa_oid = OBJ_txt2obj("1.2.840.113549.1.9.16.1.49", 1)) == NULL) - errx(1, "OBJ_txt2obj for %s failed", - "1.2.840.113549.1.9.16.1.49"); + for (i = 0; i < sizeof(oid_table) / sizeof(oid_table[0]); i++) { + *oid_table[i].ptr = OBJ_txt2obj(oid_table[i].oid, 1); + if (*oid_table[i].ptr == NULL) + errx(1, "OBJ_txt2obj for %s failed", oid_table[i].oid); + } } /* -- 2.20.1