Blob


1 #include <u.h>
2 #include <libc.h>
3 #include <mp.h>
4 #include <libsec.h>
6 void
7 usage(void)
8 {
9 fprint(2, "usage: auth/dsagen [-t 'attr=value attr=value ...']\n");
10 exits("usage");
11 }
13 void
14 main(int argc, char **argv)
15 {
16 char *s;
17 int bits;
18 char *tag;
19 DSApriv *key;
21 bits = 1024;
22 tag = nil;
23 key = nil;
24 fmtinstall('B', mpfmt);
26 ARGBEGIN{
27 case 't':
28 tag = EARGF(usage());
29 break;
30 default:
31 usage();
32 }ARGEND
34 if(argc != 0)
35 usage();
37 key = dsagen(nil);
39 s = smprint("key proto=dsa %s%sp=%lB q=%lB alpha=%lB key=%lB !secret=%lB\n",
40 tag ? tag : "", tag ? " " : "",
41 key->pub.p, key->pub.q, key->pub.alpha, key->pub.key,
42 key->secret);
43 if(s == nil)
44 sysfatal("smprint: %r");
46 if(write(1, s, strlen(s)) != strlen(s))
47 sysfatal("write: %r");
49 exits(nil);
50 }