plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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 }