Blob
1 #include <u.h>2 #include <libc.h>3 #include <mp.h>4 #include <libsec.h>6 void7 usage(void)8 {9 fprint(2, "usage: auth/dsagen [-t 'attr=value attr=value ...']\n");10 exits("usage");11 }13 void14 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 }ARGEND34 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 }