Blame


1 57fcfc2a 2005-02-13 devnull #include <u.h>
2 57fcfc2a 2005-02-13 devnull #include <libc.h>
3 57fcfc2a 2005-02-13 devnull #include <mp.h>
4 57fcfc2a 2005-02-13 devnull #include <libsec.h>
5 57fcfc2a 2005-02-13 devnull
6 57fcfc2a 2005-02-13 devnull void
7 57fcfc2a 2005-02-13 devnull usage(void)
8 57fcfc2a 2005-02-13 devnull {
9 57fcfc2a 2005-02-13 devnull fprint(2, "usage: auth/rsagen [-b bits] [-t 'attr=value attr=value ...']\n");
10 57fcfc2a 2005-02-13 devnull exits("usage");
11 57fcfc2a 2005-02-13 devnull }
12 57fcfc2a 2005-02-13 devnull
13 57fcfc2a 2005-02-13 devnull void
14 57fcfc2a 2005-02-13 devnull main(int argc, char **argv)
15 57fcfc2a 2005-02-13 devnull {
16 57fcfc2a 2005-02-13 devnull char *s;
17 57fcfc2a 2005-02-13 devnull int bits;
18 57fcfc2a 2005-02-13 devnull char *tag;
19 57fcfc2a 2005-02-13 devnull RSApriv *key;
20 57fcfc2a 2005-02-13 devnull
21 57fcfc2a 2005-02-13 devnull bits = 1024;
22 57fcfc2a 2005-02-13 devnull tag = nil;
23 57fcfc2a 2005-02-13 devnull key = nil;
24 57fcfc2a 2005-02-13 devnull fmtinstall('B', mpfmt);
25 57fcfc2a 2005-02-13 devnull
26 57fcfc2a 2005-02-13 devnull ARGBEGIN{
27 57fcfc2a 2005-02-13 devnull case 'b':
28 57fcfc2a 2005-02-13 devnull bits = atoi(EARGF(usage()));
29 57fcfc2a 2005-02-13 devnull if(bits == 0)
30 57fcfc2a 2005-02-13 devnull usage();
31 57fcfc2a 2005-02-13 devnull break;
32 57fcfc2a 2005-02-13 devnull case 't':
33 57fcfc2a 2005-02-13 devnull tag = EARGF(usage());
34 57fcfc2a 2005-02-13 devnull break;
35 57fcfc2a 2005-02-13 devnull default:
36 57fcfc2a 2005-02-13 devnull usage();
37 57fcfc2a 2005-02-13 devnull }ARGEND
38 57fcfc2a 2005-02-13 devnull
39 57fcfc2a 2005-02-13 devnull if(argc != 0)
40 57fcfc2a 2005-02-13 devnull usage();
41 57fcfc2a 2005-02-13 devnull
42 57fcfc2a 2005-02-13 devnull do{
43 57fcfc2a 2005-02-13 devnull if(key)
44 57fcfc2a 2005-02-13 devnull rsaprivfree(key);
45 57fcfc2a 2005-02-13 devnull key = rsagen(bits, 6, 0);
46 57fcfc2a 2005-02-13 devnull }while(mpsignif(key->pub.n) != bits);
47 57fcfc2a 2005-02-13 devnull
48 6acff93f 2005-02-13 devnull s = smprint("key proto=rsa %s%ssize=%d ek=%lB !dk=%lB n=%lB !p=%lB !q=%lB !kp=%lB !kq=%lB !c2=%lB\n",
49 57fcfc2a 2005-02-13 devnull tag ? tag : "", tag ? " " : "",
50 57fcfc2a 2005-02-13 devnull mpsignif(key->pub.n), key->pub.ek,
51 57fcfc2a 2005-02-13 devnull key->dk, key->pub.n, key->p, key->q,
52 57fcfc2a 2005-02-13 devnull key->kp, key->kq, key->c2);
53 57fcfc2a 2005-02-13 devnull if(s == nil)
54 57fcfc2a 2005-02-13 devnull sysfatal("smprint: %r");
55 57fcfc2a 2005-02-13 devnull
56 57fcfc2a 2005-02-13 devnull if(write(1, s, strlen(s)) != strlen(s))
57 57fcfc2a 2005-02-13 devnull sysfatal("write: %r");
58 fa325e9b 2020-01-10 cross
59 57fcfc2a 2005-02-13 devnull exits(nil);
60 57fcfc2a 2005-02-13 devnull }