diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/cmd/auth/rsagen.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/cmd/auth/rsagen.c')
-rwxr-xr-x | sys/src/cmd/auth/rsagen.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/sys/src/cmd/auth/rsagen.c b/sys/src/cmd/auth/rsagen.c new file mode 100755 index 000000000..d05f562ef --- /dev/null +++ b/sys/src/cmd/auth/rsagen.c @@ -0,0 +1,60 @@ +#include <u.h> +#include <libc.h> +#include <mp.h> +#include <libsec.h> + +void +usage(void) +{ + fprint(2, "usage: auth/rsagen [-b bits] [-t 'attr=value attr=value ...']\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + char *s; + int bits; + char *tag; + RSApriv *key; + + bits = 1024; + tag = nil; + key = nil; + fmtinstall('B', mpfmt); + + ARGBEGIN{ + case 'b': + bits = atoi(EARGF(usage())); + if(bits == 0) + usage(); + break; + case 't': + tag = EARGF(usage()); + break; + default: + usage(); + }ARGEND + + if(argc != 0) + usage(); + + do{ + if(key) + rsaprivfree(key); + key = rsagen(bits, 6, 0); + }while(mpsignif(key->pub.n) != bits); + + 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"); + + if(write(1, s, strlen(s)) != strlen(s)) + sysfatal("write: %r"); + + exits(nil); +} |