From d06196ab8760ec567a9f043b757a789755a6aed7 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Mon, 5 Feb 2018 03:21:51 +0100 Subject: [PATCH] auth/asn12rsa: also convert ASN.1 encoded public key to plan9 format --- sys/man/8/rsa | 2 +- sys/src/cmd/auth/asn12rsa.c | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/sys/man/8/rsa b/sys/man/8/rsa index 20b444b59..197028075 100644 --- a/sys/man/8/rsa +++ b/sys/man/8/rsa @@ -149,7 +149,7 @@ attributes if they are missing, and prints a full key. .PP .I Asn12rsa -reads an RSA private key stored as ASN.1 +reads an RSA private or public key stored as ASN.1 encoded in the binary Distinguished Encoding Rules (DER) and prints a Plan 9 RSA key, inserting diff --git a/sys/src/cmd/auth/asn12rsa.c b/sys/src/cmd/auth/asn12rsa.c index fa1682c9c..1a54bc22e 100644 --- a/sys/src/cmd/auth/asn12rsa.c +++ b/sys/src/cmd/auth/asn12rsa.c @@ -20,6 +20,7 @@ main(int argc, char **argv) long n, tot; char *tag, *file; RSApriv *key; + RSApub *pub; fmtinstall('B', mpfmt); @@ -54,16 +55,21 @@ main(int argc, char **argv) break; tot += n; } - key = asn1toRSApriv(buf, tot); - if(key == nil) - sysfatal("couldn't parse asn1 key"); - - s = smprint("key proto=rsa %s%ssize=%d ek=%B !dk=%B n=%B !p=%B !q=%B !kp=%B !kq=%B !c2=%B\n", - tag ? tag : "", tag ? " " : "", - mpsignif(key->pub.n), key->pub.ek, - key->dk, key->pub.n, key->p, key->q, - key->kp, key->kq, key->c2); + if(key != nil){ + s = smprint("key proto=rsa %s%ssize=%d ek=%B !dk=%B n=%B !p=%B !q=%B !kp=%B !kq=%B !c2=%B\n", + tag ? tag : "", tag ? " " : "", + mpsignif(key->pub.n), key->pub.ek, + key->dk, key->pub.n, key->p, key->q, + key->kp, key->kq, key->c2); + } else { + pub = asn1toRSApub(buf, tot); + if(pub == nil) + sysfatal("couldn't parse asn1 key"); + s = smprint("key proto=rsa %s%ssize=%d ek=%B n=%B\n", + tag ? tag : "", tag ? " " : "", + mpsignif(pub->n), pub->ek, pub->n); + } if(s == nil) sysfatal("smprint: %r"); write(1, s, strlen(s));