1 #include "os.h"
2 #include <mp.h>
3 #include <libsec.h>
4 #include <bio.h>
5
6 void
main(void)7 main(void)
8 {
9 int n;
10 vlong start;
11 char *p;
12 uchar buf[4096];
13 Biobuf b;
14 RSApriv *rsa;
15 mpint *clr, *enc, *clr2;
16
17 fmtinstall('B', mpfmt);
18
19 rsa = rsagen(1024, 16, 0);
20 if(rsa == nil)
21 sysfatal("rsagen");
22 Binit(&b, 0, OREAD);
23 clr = mpnew(0);
24 clr2 = mpnew(0);
25 enc = mpnew(0);
26
27 strtomp("123456789abcdef123456789abcdef123456789abcdef123456789abcdef", nil, 16, clr);
28 rsaencrypt(&rsa->pub, clr, enc);
29
30 start = nsec();
31 for(n = 0; n < 10; n++)
32 rsadecrypt(rsa, enc, clr);
33 print("%lld\n", nsec()-start);
34
35 start = nsec();
36 for(n = 0; n < 10; n++)
37 mpexp(enc, rsa->dk, rsa->pub.n, clr2);
38 print("%lld\n", nsec()-start);
39
40 if(mpcmp(clr, clr2) != 0)
41 print("%B != %B\n", clr, clr2);
42
43 print("> ");
44 while(p = Brdline(&b, '\n')){
45 n = Blinelen(&b);
46 letomp((uchar*)p, n, clr);
47 print("clr %B\n", clr);
48 rsaencrypt(&rsa->pub, clr, enc);
49 print("enc %B\n", enc);
50 rsadecrypt(rsa, enc, clr);
51 print("clr %B\n", clr);
52 n = mptole(clr, buf, sizeof(buf), nil);
53 write(1, buf, n);
54 print("> ");
55 }
56 }
57