Blob


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