This diff adds the print functions from the regress test to rpki-client.
Currently not hooked up in rpki-client itself but that will follow soon.

-- 
:wq Claudio

Index: usr.sbin/rpki-client/extern.h
===================================================================
RCS file: /cvs/src/usr.sbin/rpki-client/extern.h,v
retrieving revision 1.76
diff -u -p -r1.76 extern.h
--- usr.sbin/rpki-client/extern.h       24 Oct 2021 12:06:16 -0000      1.76
+++ usr.sbin/rpki-client/extern.h       24 Oct 2021 17:37:20 -0000
@@ -558,6 +558,13 @@ char               *x509_crl_get_aki(X509_CRL *, cons
 char           *x509_get_pubkey(X509 *, const char *);
 enum cert_purpose       x509_get_purpose(X509 *, const char *);
 
+/* printers */
+void           tal_print(const struct tal *);
+void           cert_print(const struct cert *);
+void           mft_print(const struct mft *);
+void           roa_print(const struct roa *);
+void           gbr_print(const struct gbr *);
+
 /* Output! */
 
 extern int      outformats;
Index: usr.sbin/rpki-client/print.c
===================================================================
RCS file: usr.sbin/rpki-client/print.c
diff -N usr.sbin/rpki-client/print.c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ usr.sbin/rpki-client/print.c        24 Oct 2021 17:30:47 -0000
@@ -0,0 +1,169 @@
+/*     $OpenBSD$ */
+/*
+ * Copyright (c) 2021 Claudio Jeker <clau...@openbsd.org>
+ * Copyright (c) 2019 Kristaps Dzonsons <krist...@bsd.lv>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <arpa/inet.h>
+
+#include <err.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#include "extern.h"
+
+static const char *
+pretty_key_id(char *hex)
+{
+       static char buf[128];   /* bigger than SHA_DIGEST_LENGTH * 3 */
+       size_t i;
+
+       for (i = 0; i < sizeof(buf) && *hex != '\0'; i++) {
+               if  (i % 3 == 2 && *hex != '\0')
+                       buf[i] = ':';
+               else
+                       buf[i] = *hex++;
+       }
+       if (i == sizeof(buf))
+               memcpy(buf + sizeof(buf) - 4, "...", 4);
+       return buf;
+}
+
+void
+tal_print(const struct tal *p)
+{
+       size_t   i;
+
+       for (i = 0; i < p->urisz; i++)
+               printf("%5zu: URI: %s\n", i + 1, p->uri[i]);
+}
+
+void
+cert_print(const struct cert *p)
+{
+       size_t   i;
+       char     buf1[64], buf2[64];
+       int      sockt;
+       char     tbuf[21];
+
+       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
+       if (p->aki != NULL)
+               printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
+       if (p->aia != NULL)
+               printf("Authority info access: %s\n", p->aia);
+       if (p->mft != NULL)
+               printf("Manifest: %s\n", p->mft);
+       if (p->repo != NULL)
+               printf("caRepository: %s\n", p->repo);
+       if (p->notify != NULL)
+               printf("Notify URL: %s\n", p->notify);
+       if (p->pubkey != NULL)
+               printf("BGPsec P-256 ECDSA public key: %s\n", p->pubkey);
+       strftime(tbuf, sizeof(tbuf), "%FT%TZ", gmtime(&p->expires));
+       printf("Valid until: %s\n", tbuf);
+
+       printf("Subordinate Resources:\n");
+
+       for (i = 0; i < p->asz; i++)
+               switch (p->as[i].type) {
+               case CERT_AS_ID:
+                       printf("%5zu: AS: %u\n", i + 1, p->as[i].id);
+                       break;
+               case CERT_AS_INHERIT:
+                       printf("%5zu: AS: inherit\n", i + 1);
+                       break;
+               case CERT_AS_RANGE:
+                       printf("%5zu: AS: %u -- %u\n", i + 1,
+                               p->as[i].range.min, p->as[i].range.max);
+                       break;
+               }
+
+       for (i = 0; i < p->ipsz; i++)
+               switch (p->ips[i].type) {
+               case CERT_IP_INHERIT:
+                       printf("%5zu: IP: inherit\n", i + 1);
+                       break;
+               case CERT_IP_ADDR:
+                       ip_addr_print(&p->ips[i].ip,
+                               p->ips[i].afi, buf1, sizeof(buf1));
+                       printf("%5zu: IP: %s\n", i + 1, buf1);
+                       break;
+               case CERT_IP_RANGE:
+                       sockt = (p->ips[i].afi == AFI_IPV4) ?
+                               AF_INET : AF_INET6;
+                       inet_ntop(sockt, p->ips[i].min, buf1, sizeof(buf1));
+                       inet_ntop(sockt, p->ips[i].max, buf2, sizeof(buf2));
+                       printf("%5zu: IP: %s -- %s\n", i + 1, buf1, buf2);
+                       break;
+               }
+
+}
+
+void
+mft_print(const struct mft *p)
+{
+       size_t i;
+       char *hash;
+
+       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
+       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
+       printf("Authority info access: %s\n", p->aia);
+       printf("Manifest Number: %s\n", p->seqnum);
+       for (i = 0; i < p->filesz; i++) {
+               if (base64_encode(p->files[i].hash, sizeof(p->files[i].hash),
+                   &hash) == -1)
+                       errx(1, "base64_encode failure");
+               printf("%5zu: %s\n", i + 1, p->files[i].file);
+               printf("\thash %s\n", hash);
+               free(hash);
+       }
+}
+
+void
+roa_print(const struct roa *p)
+{
+       char     buf[128];
+       size_t   i;
+       char     tbuf[21];
+
+       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
+       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
+       printf("Authority info access: %s\n", p->aia);
+       strftime(tbuf, sizeof(tbuf), "%FT%TZ", gmtime(&p->expires));
+       printf("ROA valid until: %s\n", tbuf);
+       
+       printf("asID: %u\n", p->asid);
+       for (i = 0; i < p->ipsz; i++) {
+               ip_addr_print(&p->ips[i].addr,
+                       p->ips[i].afi, buf, sizeof(buf));
+               printf("%5zu: %s maxlen: %zu\n", i + 1,
+                       buf, p->ips[i].maxlength);
+       }
+}
+
+void
+gbr_print(const struct gbr *p)
+{
+       char     buf[128];
+       size_t   i;
+
+       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
+       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
+       printf("Authority info access: %s\n", p->aia);
+       printf("vcard:\n%s", p->vcard);
+}
Index: regress/usr.sbin/rpki-client/Makefile.inc
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/Makefile.inc,v
retrieving revision 1.14
diff -u -p -r1.14 Makefile.inc
--- regress/usr.sbin/rpki-client/Makefile.inc   11 Oct 2021 17:32:27 -0000      
1.14
+++ regress/usr.sbin/rpki-client/Makefile.inc   24 Oct 2021 17:41:04 -0000
@@ -17,7 +17,7 @@ CFLAGS+=      -I${.CURDIR}/.. -I${.CURDIR}/..
 LDADD+=                -lcrypto -lutil
 DPADD+=                ${LIBCRYPTO} ${LIBUTIL}
 
-SRCS_test-ip=  test-ip.c ip.c io.c
+SRCS_test-ip=  test-ip.c ip.c io.c encoding.c print.c
 run-regress-test-ip: test-ip
        ./test-ip
 
@@ -26,24 +26,27 @@ TALARGS += ta/apnic-rpki-root-iana-origi
 TALARGS += ta/ripe-ncc-ta.cer                  tal/ripe.tal
 
 SRCS_test-cert+=       test-cert.c cert.c cms.c x509.c ip.c as.c io.c \
-                       log.c tal.c validate.c encoding.c
+                       log.c tal.c validate.c encoding.c print.c
 run-regress-test-cert: test-cert
        ./test-cert -v ${.CURDIR}/../cer/*.cer
        ./test-cert -vt ${TALARGS:S,,${.CURDIR}/../&,}
 
-SRCS_test-mft+=        test-mft.c mft.c cms.c x509.c io.c log.c validate.c \
-               encoding.c dummy.c
+SRCS_test-mft+=        test-mft.c mft.c cms.c x509.c ip.c io.c log.c 
validate.c \
+               encoding.c print.c dummy.c
 run-regress-test-mft: test-mft
        ./test-mft -v ${.CURDIR}/../mft/*.mft
 
-SRCS_test-roa+=        test-roa.c roa.c cms.c x509.c ip.c as.c io.c log.c 
encoding.c
+SRCS_test-roa+=        test-roa.c roa.c cms.c x509.c ip.c as.c io.c log.c \
+               encoding.c print.c
 run-regress-test-roa: test-roa
        ./test-roa -v ${.CURDIR}/../roa/*.roa
 
-SRCS_test-gbr+=        test-gbr.c gbr.c cms.c x509.c io.c log.c encoding.c
+SRCS_test-gbr+=        test-gbr.c gbr.c cms.c x509.c ip.c io.c log.c \
+               encoding.c print.c
 run-regress-test-gbr: test-gbr
        ./test-gbr -v ${.CURDIR}/../gbr/*.gbr
 
-SRCS_test-tal+=        test-tal.c tal.c io.c log.c validate.c encoding.c 
dummy.c
+SRCS_test-tal+=        test-tal.c tal.c ip.c io.c log.c validate.c \
+               encoding.c print.c dummy.c
 run-regress-test-tal: test-tal
        ./test-tal -v ${.CURDIR}/../tal/*.tal
Index: regress/usr.sbin/rpki-client/dummy.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/dummy.c,v
retrieving revision 1.1
diff -u -p -r1.1 dummy.c
--- regress/usr.sbin/rpki-client/dummy.c        5 Mar 2021 17:28:09 -0000       
1.1
+++ regress/usr.sbin/rpki-client/dummy.c        24 Oct 2021 17:35:22 -0000
@@ -17,18 +17,3 @@ as_check_covered(uint32_t min, uint32_t 
 {
        return -1;
 }
-
-int
-ip_addr_check_covered(enum afi afi,
-    const unsigned char *min, const unsigned char *max,
-    const struct cert_ip *ips, size_t ipsz)
-{
-       return -1;
-}
-
-void
-ip_addr_print(const struct ip_addr *addr,
-    enum afi afi, char *buf, size_t bufsz)
-{
-}
-
Index: regress/usr.sbin/rpki-client/test-cert.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/test-cert.c,v
retrieving revision 1.13
diff -u -p -r1.13 test-cert.c
--- regress/usr.sbin/rpki-client/test-cert.c    13 Oct 2021 06:56:07 -0000      
1.13
+++ regress/usr.sbin/rpki-client/test-cert.c    24 Oct 2021 17:26:01 -0000
@@ -32,74 +32,7 @@
 
 #include "extern.h"
 
-#include "test-common.c"
-
 int verbose;
-
-static void
-cert_print(const struct cert *p)
-{
-       size_t   i;
-       char     buf1[64], buf2[64];
-       int      sockt;
-       char     tbuf[21];
-
-       assert(p != NULL);
-
-       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
-       if (p->aki != NULL)
-               printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
-       if (p->aia != NULL)
-               printf("Authority info access: %s\n", p->aia);
-       if (p->mft != NULL)
-               printf("Manifest: %s\n", p->mft);
-       if (p->repo != NULL)
-               printf("caRepository: %s\n", p->repo);
-       if (p->notify != NULL)
-               printf("Notify URL: %s\n", p->notify);
-       if (p->pubkey != NULL)
-               printf("BGPsec P-256 ECDSA public key: %s\n", p->pubkey);
-       strftime(tbuf, sizeof(tbuf), "%FT%TZ", gmtime(&p->expires));
-       printf("Valid until: %s\n", tbuf);
-
-       printf("Subordinate Resources:\n");
-
-       for (i = 0; i < p->asz; i++)
-               switch (p->as[i].type) {
-               case CERT_AS_ID:
-                       printf("%5zu: AS: %"
-                               PRIu32 "\n", i + 1, p->as[i].id);
-                       break;
-               case CERT_AS_INHERIT:
-                       printf("%5zu: AS: inherit\n", i + 1);
-                       break;
-               case CERT_AS_RANGE:
-                       printf("%5zu: AS: %"
-                               PRIu32 "--%" PRIu32 "\n", i + 1,
-                               p->as[i].range.min, p->as[i].range.max);
-                       break;
-               }
-
-       for (i = 0; i < p->ipsz; i++)
-               switch (p->ips[i].type) {
-               case CERT_IP_INHERIT:
-                       printf("%5zu: IP: inherit\n", i + 1);
-                       break;
-               case CERT_IP_ADDR:
-                       ip_addr_print(&p->ips[i].ip,
-                               p->ips[i].afi, buf1, sizeof(buf1));
-                       printf("%5zu: IP: %s\n", i + 1, buf1);
-                       break;
-               case CERT_IP_RANGE:
-                       sockt = (p->ips[i].afi == AFI_IPV4) ?
-                               AF_INET : AF_INET6;
-                       inet_ntop(sockt, p->ips[i].min, buf1, sizeof(buf1));
-                       inet_ntop(sockt, p->ips[i].max, buf2, sizeof(buf2));
-                       printf("%5zu: IP: %s--%s\n", i + 1, buf1, buf2);
-                       break;
-               }
-
-}
 
 int
 main(int argc, char *argv[])
Index: regress/usr.sbin/rpki-client/test-common.c
===================================================================
RCS file: regress/usr.sbin/rpki-client/test-common.c
diff -N regress/usr.sbin/rpki-client/test-common.c
--- regress/usr.sbin/rpki-client/test-common.c  29 Mar 2021 15:47:34 -0000      
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,33 +0,0 @@
-/*     $OpenBSD: test-common.c,v 1.1 2021/03/29 15:47:34 claudio Exp $ */
-/*
- * Copyright (c) 2021 Claudio Jeker <clau...@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-const char *
-pretty_key_id(char *hex)
-{
-       static char buf[128];   /* bigger than SHA_DIGEST_LENGTH * 3 */
-       size_t i;
-
-       for (i = 0; i < sizeof(buf) && *hex != '\0'; i++) {
-               if  (i % 3 == 2 && *hex != '\0')
-                       buf[i] = ':';
-               else
-                       buf[i] = *hex++;
-       }
-       if (i == sizeof(buf))
-               memcpy(buf + sizeof(buf) - 4, "...", 4);
-       return buf;
-}
Index: regress/usr.sbin/rpki-client/test-gbr.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/test-gbr.c,v
retrieving revision 1.3
diff -u -p -r1.3 test-gbr.c
--- regress/usr.sbin/rpki-client/test-gbr.c     29 Mar 2021 15:47:34 -0000      
1.3
+++ regress/usr.sbin/rpki-client/test-gbr.c     24 Oct 2021 17:26:07 -0000
@@ -30,23 +30,7 @@
 
 #include "extern.h"
 
-#include "test-common.c"
-
 int verbose;
-
-static void
-gbr_print(const struct gbr *p)
-{
-       char     buf[128];
-       size_t   i;
-
-       assert(p != NULL);
-
-       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
-       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
-       printf("Authority info access: %s\n", p->aia);
-       printf("vcard:\n%s", p->vcard);
-}
 
 int
 main(int argc, char *argv[])
Index: regress/usr.sbin/rpki-client/test-mft.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/test-mft.c,v
retrieving revision 1.15
diff -u -p -r1.15 test-mft.c
--- regress/usr.sbin/rpki-client/test-mft.c     9 Oct 2021 18:43:49 -0000       
1.15
+++ regress/usr.sbin/rpki-client/test-mft.c     24 Oct 2021 17:26:17 -0000
@@ -33,30 +33,7 @@
 
 #include "extern.h"
 
-#include "test-common.c"
-
 int verbose;
-
-static void
-mft_print(const struct mft *p)
-{
-       size_t   i;
-       char hash[256];
-
-       assert(p != NULL);
-
-       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
-       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
-       printf("Authority info access: %s\n", p->aia);
-       printf("Manifest Number: %s\n", p->seqnum);
-       for (i = 0; i < p->filesz; i++) {
-               b64_ntop(p->files[i].hash, sizeof(p->files[i].hash),
-                   hash, sizeof(hash));
-               printf("%5zu: %s\n", i + 1, p->files[i].file);
-               printf("\thash %s\n", hash);
-       }
-}
-
 
 int
 main(int argc, char *argv[])
Index: regress/usr.sbin/rpki-client/test-roa.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/test-roa.c,v
retrieving revision 1.12
diff -u -p -r1.12 test-roa.c
--- regress/usr.sbin/rpki-client/test-roa.c     7 Oct 2021 10:34:39 -0000       
1.12
+++ regress/usr.sbin/rpki-client/test-roa.c     24 Oct 2021 17:26:21 -0000
@@ -30,33 +30,7 @@
 
 #include "extern.h"
 
-#include "test-common.c"
-
 int verbose;
-
-static void
-roa_print(const struct roa *p)
-{
-       char     buf[128];
-       size_t   i;
-       char     tbuf[21];
-
-       assert(p != NULL);
-
-       printf("Subject key identifier: %s\n", pretty_key_id(p->ski));
-       printf("Authority key identifier: %s\n", pretty_key_id(p->aki));
-       printf("Authority info access: %s\n", p->aia);
-       strftime(tbuf, sizeof(tbuf), "%FT%TZ", gmtime(&p->expires));
-       printf("ROA valid until: %s\n", tbuf);
-       
-       printf("asID: %" PRIu32 "\n", p->asid);
-       for (i = 0; i < p->ipsz; i++) {
-               ip_addr_print(&p->ips[i].addr,
-                       p->ips[i].afi, buf, sizeof(buf));
-               printf("%5zu: %s (max: %zu)\n", i + 1,
-                       buf, p->ips[i].maxlength);
-       }
-}
 
 int
 main(int argc, char *argv[])
Index: regress/usr.sbin/rpki-client/test-tal.c
===================================================================
RCS file: /cvs/src/regress/usr.sbin/rpki-client/test-tal.c,v
retrieving revision 1.6
diff -u -p -r1.6 test-tal.c
--- regress/usr.sbin/rpki-client/test-tal.c     9 Nov 2020 16:13:02 -0000       
1.6
+++ regress/usr.sbin/rpki-client/test-tal.c     24 Oct 2021 17:21:01 -0000
@@ -31,17 +31,6 @@
 
 int verbose;
 
-static void
-tal_print(const struct tal *p)
-{
-       size_t   i;
-
-       assert(p != NULL);
-
-       for (i = 0; i < p->urisz; i++)
-               printf("%5zu: URI: %s\n", i + 1, p->uri[i]);
-}
-
 int
 main(int argc, char *argv[])
 {

Reply via email to