summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2014-12-31 10:00:11 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2014-12-31 10:00:11 +0200
commit99e2539b2707cc760a796193f99355f116b31733 (patch)
treef71596a035ee1c761377734d592ef82f0328a965 /src
parentf46b12dba883960c2b51909f362243ccb56fccec (diff)
downloadgnutls-99e2539b2707cc760a796193f99355f116b31733.tar.gz
certtool: --pubkey-info will load a public key from stdin
Diffstat (limited to 'src')
-rw-r--r--src/certtool.c26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/certtool.c b/src/certtool.c
index e0f47192b5..ce1e11deb8 100644
--- a/src/certtool.c
+++ b/src/certtool.c
@@ -3389,7 +3389,31 @@ void pubkey_info(gnutls_x509_crt_t crt, common_info_st * cinfo)
}
} else {
gnutls_pubkey_deinit(pubkey);
- pubkey = load_pubkey(1, cinfo);
+ pubkey = load_pubkey(0, cinfo);
+
+ if (pubkey == NULL) { /* load from stdin */
+ gnutls_datum_t pem;
+
+ pem.data = (void *) fread_file(infile, &size);
+ pem.size = size;
+
+ ret = gnutls_pubkey_init(&pubkey);
+ if (ret < 0) {
+ fprintf(stderr,
+ "pubkey_init: %s\n",
+ gnutls_strerror(ret));
+ exit(1);
+ }
+
+ ret = gnutls_pubkey_import(pubkey, &pem, GNUTLS_X509_FMT_PEM);
+ if (ret < 0) {
+ fprintf(stderr,
+ "pubkey_import: %s\n",
+ gnutls_strerror(ret));
+ exit(1);
+ }
+ }
+
}
}