diff options
Diffstat (limited to 'src/cmd/auth/dsagen.c')
-rw-r--r-- | src/cmd/auth/dsagen.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/cmd/auth/dsagen.c b/src/cmd/auth/dsagen.c new file mode 100644 index 00000000..5fa9f99a --- /dev/null +++ b/src/cmd/auth/dsagen.c @@ -0,0 +1,50 @@ +#include <u.h> +#include <libc.h> +#include <mp.h> +#include <libsec.h> + +void +usage(void) +{ + fprint(2, "usage: auth/dsagen [-t 'attr=value attr=value ...']\n"); + exits("usage"); +} + +void +main(int argc, char **argv) +{ + char *s; + int bits; + char *tag; + DSApriv *key; + + bits = 1024; + tag = nil; + key = nil; + fmtinstall('B', mpfmt); + + ARGBEGIN{ + case 't': + tag = EARGF(usage()); + break; + default: + usage(); + }ARGEND + + if(argc != 0) + usage(); + + key = dsagen(nil); + + s = smprint("key proto=dsa %s%sp=%B q=%B alpha=%B key=%B !secret=%B\n", + tag ? tag : "", tag ? " " : "", + key->pub.p, key->pub.q, key->pub.alpha, key->pub.key, + key->secret); + if(s == nil) + sysfatal("smprint: %r"); + + if(write(1, s, strlen(s)) != strlen(s)) + sysfatal("write: %r"); + + exits(nil); +} |