/*- * gnutls_openpgp_get_raw_key_expiration_time: * @cert: the raw data that contains the OpenPGP public key. * * Returns the time when the OpenPGP key expires. A value of '0' means * that the key doesn't expire at all. -*/ time_t _gnutls_openpgp_get_raw_key_expiration_time(const gnutls_datum_t * cert) { gnutls_openpgp_crt_t key; int ret; time_t tim; ret = gnutls_openpgp_crt_init(&key); if (ret < 0) { gnutls_assert(); return ret; } ret = gnutls_openpgp_crt_import(key, cert, GNUTLS_OPENPGP_FMT_RAW); if (ret < 0) { gnutls_assert(); return ret; } tim = gnutls_openpgp_crt_get_expiration_time(key); gnutls_openpgp_crt_deinit(key); return tim; }
static void print_key_times(gnutls_buffer_st * str, gnutls_openpgp_crt_t cert, int idx) { time_t tim; adds(str, _("\tTime stamps:\n")); if (idx == -1) tim = gnutls_openpgp_crt_get_creation_time(cert); else tim = gnutls_openpgp_crt_get_subkey_creation_time(cert, idx); { char s[42]; size_t max = sizeof(s); struct tm t; if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long) tim); else if (strftime(s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long) tim); else addf(str, _("\t\tCreation: %s\n"), s); } if (idx == -1) tim = gnutls_openpgp_crt_get_expiration_time(cert); else tim = gnutls_openpgp_crt_get_subkey_expiration_time(cert, idx); { char s[42]; size_t max = sizeof(s); struct tm t; if (tim == 0) { adds(str, _("\t\tExpiration: Never\n")); } else { if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld)\n", (unsigned long) tim); else if (strftime (s, max, "%a %b %d %H:%M:%S UTC %Y", &t) == 0) addf(str, "error: strftime (%ld)\n", (unsigned long) tim); else addf(str, _("\t\tExpiration: %s\n"), s); } } }
static void print_oneline(gnutls_buffer_st * str, gnutls_openpgp_crt_t cert) { int err, i; i = 0; do { char *dn; size_t dn_size = 0; err = gnutls_openpgp_crt_get_name(cert, i, NULL, &dn_size); if (err != GNUTLS_E_SHORT_MEMORY_BUFFER && err != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && err != GNUTLS_E_OPENPGP_UID_REVOKED) addf(str, "unknown name (%s), ", gnutls_strerror(err)); else { dn = gnutls_malloc(dn_size); if (!dn) addf(str, "unknown name (%s), ", gnutls_strerror (GNUTLS_E_MEMORY_ERROR)); else { err = gnutls_openpgp_crt_get_name(cert, i, dn, &dn_size); if (err < 0 && err != GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE && err != GNUTLS_E_OPENPGP_UID_REVOKED) addf(str, "unknown name (%s), ", gnutls_strerror(err)); else if (err >= 0) addf(str, _("name[%d]: %s, "), i, dn); else if (err == GNUTLS_E_OPENPGP_UID_REVOKED) addf(str, _("revoked name[%d]: %s, "), i, dn); gnutls_free(dn); } } i++; } while (err >= 0); { char fpr[128]; size_t fpr_size = sizeof(fpr); int err; err = gnutls_openpgp_crt_get_fingerprint(cert, fpr, &fpr_size); if (err < 0) addf(str, "error: get_fingerprint: %s\n", gnutls_strerror(err)); else { adds(str, _("fingerprint: ")); _gnutls_buffer_hexprint(str, fpr, fpr_size); addf(str, ", "); } } { time_t tim; tim = gnutls_openpgp_crt_get_creation_time(cert); { char s[42]; size_t max = sizeof(s); struct tm t; if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld), ", (unsigned long) tim); else if (strftime (s, max, "%Y-%m-%d %H:%M:%S UTC", &t) == 0) addf(str, "error: strftime (%ld), ", (unsigned long) tim); else addf(str, _("created: %s, "), s); } tim = gnutls_openpgp_crt_get_expiration_time(cert); { char s[42]; size_t max = sizeof(s); struct tm t; if (tim == 0) adds(str, _("never expires, ")); else { if (gmtime_r(&tim, &t) == NULL) addf(str, "error: gmtime_r (%ld), ", (unsigned long) tim); else if (strftime (s, max, "%Y-%m-%d %H:%M:%S UTC", &t) == 0) addf(str, "error: strftime (%ld), ", (unsigned long) tim); else addf(str, _("expires: %s, "), s); } } } { unsigned int bits = 0; gnutls_pk_algorithm_t algo = gnutls_openpgp_crt_get_pk_algorithm(cert, &bits); const char *algostr = gnutls_pk_algorithm_get_name(algo); if (algostr) addf(str, _("key algorithm %s (%d bits)"), algostr, bits); else addf(str, _("unknown key algorithm (%d)"), algo); } }