From 37cb916de5c8806b43bfbc859f27fe03624f297e Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Thu, 14 May 2020 02:22:05 +0300 Subject: certtool: use gnutls_pkcs7_print_signature_info Use new function to remove code duplication. Signed-off-by: Dmitry Baryshkov --- src/certtool.c | 88 +++++----------------------------------------------------- 1 file changed, 7 insertions(+), 81 deletions(-) diff --git a/src/certtool.c b/src/certtool.c index b65359c27c..a46f774114 100644 --- a/src/certtool.c +++ b/src/certtool.c @@ -2624,94 +2624,20 @@ void verify_crl(common_info_st * cinfo) app_exit(rc); } -static void print_dn(const char *prefix, const gnutls_datum_t *raw) -{ - gnutls_x509_dn_t dn = NULL; - gnutls_datum_t str = {NULL, 0}; - int ret; - - ret = gnutls_x509_dn_init(&dn); - if (ret < 0) - return; - - ret = gnutls_x509_dn_import(dn, raw); - if (ret < 0) - goto cleanup; - - ret = gnutls_x509_dn_get_str2(dn, &str, 0); - if (ret < 0) - goto cleanup; - - fprintf(outfile, "%s: %s\n", prefix, str.data); - - cleanup: - gnutls_x509_dn_deinit(dn); - gnutls_free(str.data); -} - -static void print_raw(const char *prefix, const gnutls_datum_t *raw) +static void print_pkcs7_sig_info(gnutls_pkcs7_signature_info_st *info, common_info_st *cinfo) { int ret; - gnutls_datum_t tmp; + gnutls_datum_t str; - if (raw->data == NULL || raw->size == 0) - return; - - ret = gnutls_hex_encode2(raw, &tmp); + ret = gnutls_pkcs7_print_signature_info(info, GNUTLS_CRT_PRINT_COMPACT, &str); if (ret < 0) { - fprintf(stderr, "gnutls_hex_encode2: %s\n", - gnutls_strerror(ret)); + fprintf(stderr, "printing error: %s\n", + gnutls_strerror(ret)); app_exit(1); } - fprintf(outfile, "%s: %s\n", prefix, tmp.data); - gnutls_free(tmp.data); -} - -static void print_pkcs7_sig_info(gnutls_pkcs7_signature_info_st *info, common_info_st *cinfo) -{ - unsigned i; - char *oid; - gnutls_datum_t data; - char prefix[128]; - int ret; - char timebuf[SIMPLE_CTIME_BUF_SIZE]; - - print_dn("\tSigner's issuer DN", &info->issuer_dn); - print_raw("\tSigner's serial", &info->signer_serial); - print_raw("\tSigner's issuer key ID", &info->issuer_keyid); - if (info->signing_time != -1) - fprintf(outfile, "\tSigning time: %s\n", simple_ctime(&info->signing_time, timebuf)); - - fprintf(outfile, "\tSignature Algorithm: %s\n", gnutls_sign_get_name(info->algo)); - - if (info->signed_attrs) { - for (i=0;;i++) { - ret = gnutls_pkcs7_get_attr(info->signed_attrs, i, &oid, &data, 0); - if (ret < 0) - break; - if (i==0) - fprintf(outfile, "\tSigned Attributes:\n"); - - snprintf(prefix, sizeof(prefix), "\t\t%s", oid); - print_raw(prefix, &data); - gnutls_free(data.data); - } - } - if (info->unsigned_attrs) { - for (i=0;;i++) { - ret = gnutls_pkcs7_get_attr(info->unsigned_attrs, i, &oid, &data, 0); - if (ret < 0) - break; - if (i==0) - fprintf(outfile, "\tUnsigned Attributes:\n"); - - snprintf(prefix, sizeof(prefix), "\t\t%s", oid); - print_raw(prefix, &data); - gnutls_free(data.data); - } - } - fprintf(outfile, "\n"); + fprintf(outfile, "%s", str.data); + gnutls_free(str.data); } void verify_pkcs7(common_info_st * cinfo, const char *purpose, unsigned display_data) -- cgit v1.2.1