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