pki: --pub also accepts public keys (i.e. to convert them to a different format)

This commit is contained in:
Tobias Brunner 2013-08-15 12:43:30 +02:00
parent 21626bdf77
commit 90afd2c929
2 changed files with 18 additions and 3 deletions

View File

@ -51,6 +51,11 @@ static int pub()
type = CRED_PRIVATE_KEY;
subtype = KEY_ECDSA;
}
else if (streq(arg, "pub"))
{
type = CRED_PUBLIC_KEY;
subtype = KEY_ANY;
}
else if (streq(arg, "pkcs10"))
{
type = CRED_CERTIFICATE;
@ -116,6 +121,15 @@ static int pub()
public = private->get_public_key(private);
private->destroy(private);
}
else if (type == CRED_PUBLIC_KEY)
{
public = cred;
if (!public)
{
fprintf(stderr, "parsing public key failed\n");
return 1;
}
}
else
{
cert = cred;
@ -157,7 +171,7 @@ static void __attribute__ ((constructor))reg()
command_register((command_t) {
pub, 'p', "pub",
"extract the public key from a private key/certificate",
{"[--in file|--keyid hex] [--type rsa|ecdsa|pkcs10|x509]",
{"[--in file|--keyid hex] [--type rsa|ecdsa|pub|pkcs10|x509]",
"[--outform der|pem|dnskey|sshkey]"},
{
{"help", 'h', 0, "show usage information"},

View File

@ -48,8 +48,9 @@ Input file. If not given the input is read from \fISTDIN\fR.
.TP
.BI "\-t, \-\-type " type
Type of input. One of \fIrsa\fR (RSA private key), \fIecdsa\fR (ECDSA
private key), \fIpkcs10\fR (PKCS#10 certificate request), \fIx509\fR (X.509
certificate), defaults to \fIrsa\fR.
private key), \fIpub\fR (public key),
\fIpkcs10\fR (PKCS#10 certificate request), or \fIx509\fR (X.509 certificate),
defaults to \fIrsa\fR.
.TP
.BI "\-f, \-\-outform " encoding
Encoding of the extracted public key. One of \fIder\fR (ASN.1 DER), \fIpem\fR