From 57fcfc2a0b8ecd266ce130dab9a29b7ceb558d64 Mon Sep 17 00:00:00 2001 From: rsc Date: Sun, 13 Feb 2005 18:04:20 +0000 Subject: add others --- src/cmd/auth/asn12rsa.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/cmd/auth/asn12rsa.c (limited to 'src/cmd/auth/asn12rsa.c') diff --git a/src/cmd/auth/asn12rsa.c b/src/cmd/auth/asn12rsa.c new file mode 100644 index 00000000..a2df0447 --- /dev/null +++ b/src/cmd/auth/asn12rsa.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include +#include + +void +usage(void) +{ + fprint(2, "auth/asn12rsa [-t tag] [file]\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + char *s; + uchar *buf; + int fd; + long n, tot; + char *tag, *file; + RSApriv *key; + + fmtinstall('B', mpfmt); + + tag = nil; + ARGBEGIN{ + case 't': + tag = EARGF(usage()); + break; + default: + usage(); + }ARGEND + + if(argc != 0 && argc != 1) + usage(); + + if(argc == 1) + file = argv[0]; + else + file = "/dev/stdin"; + + if((fd = open(file, OREAD)) < 0) + sysfatal("open %s: %r", file); + buf = nil; + tot = 0; + for(;;){ + buf = realloc(buf, tot+8192); + if(buf == nil) + sysfatal("realloc: %r"); + if((n = read(fd, buf+tot, 8192)) < 0) + sysfatal("read: %r"); + if(n == 0) + 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(s == nil) + sysfatal("smprint: %r"); + write(1, s, strlen(s)); + exits(0); +} -- cgit v1.2.3