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