180ee5cbfSDavid du Colombier #include "os.h"
280ee5cbfSDavid du Colombier #include <mp.h>
380ee5cbfSDavid du Colombier #include <libsec.h>
480ee5cbfSDavid du Colombier #include <bio.h>
580ee5cbfSDavid du Colombier
680ee5cbfSDavid du Colombier void
main(void)780ee5cbfSDavid du Colombier main(void)
880ee5cbfSDavid du Colombier {
980ee5cbfSDavid du Colombier int n;
1080ee5cbfSDavid du Colombier vlong start;
11*43af371bSDavid du Colombier char *p;
12*43af371bSDavid du Colombier uchar buf[4096];
13*43af371bSDavid du Colombier Biobuf b;
14*43af371bSDavid du Colombier RSApriv *rsa;
15*43af371bSDavid du Colombier mpint *clr, *enc, *clr2;
1680ee5cbfSDavid du Colombier
17*43af371bSDavid du Colombier fmtinstall('B', mpfmt);
1880ee5cbfSDavid du Colombier
1980ee5cbfSDavid du Colombier rsa = rsagen(1024, 16, 0);
2080ee5cbfSDavid du Colombier if(rsa == nil)
2180ee5cbfSDavid du Colombier sysfatal("rsagen");
2280ee5cbfSDavid du Colombier Binit(&b, 0, OREAD);
2380ee5cbfSDavid du Colombier clr = mpnew(0);
2480ee5cbfSDavid du Colombier clr2 = mpnew(0);
2580ee5cbfSDavid du Colombier enc = mpnew(0);
2680ee5cbfSDavid du Colombier
2780ee5cbfSDavid du Colombier strtomp("123456789abcdef123456789abcdef123456789abcdef123456789abcdef", nil, 16, clr);
2880ee5cbfSDavid du Colombier rsaencrypt(&rsa->pub, clr, enc);
2980ee5cbfSDavid du Colombier
3080ee5cbfSDavid du Colombier start = nsec();
3180ee5cbfSDavid du Colombier for(n = 0; n < 10; n++)
3280ee5cbfSDavid du Colombier rsadecrypt(rsa, enc, clr);
3380ee5cbfSDavid du Colombier print("%lld\n", nsec()-start);
3480ee5cbfSDavid du Colombier
3580ee5cbfSDavid du Colombier start = nsec();
3680ee5cbfSDavid du Colombier for(n = 0; n < 10; n++)
3780ee5cbfSDavid du Colombier mpexp(enc, rsa->dk, rsa->pub.n, clr2);
3880ee5cbfSDavid du Colombier print("%lld\n", nsec()-start);
3980ee5cbfSDavid du Colombier
4080ee5cbfSDavid du Colombier if(mpcmp(clr, clr2) != 0)
4180ee5cbfSDavid du Colombier print("%B != %B\n", clr, clr2);
4280ee5cbfSDavid du Colombier
4380ee5cbfSDavid du Colombier print("> ");
4480ee5cbfSDavid du Colombier while(p = Brdline(&b, '\n')){
4580ee5cbfSDavid du Colombier n = Blinelen(&b);
4680ee5cbfSDavid du Colombier letomp((uchar*)p, n, clr);
4780ee5cbfSDavid du Colombier print("clr %B\n", clr);
4880ee5cbfSDavid du Colombier rsaencrypt(&rsa->pub, clr, enc);
4980ee5cbfSDavid du Colombier print("enc %B\n", enc);
5080ee5cbfSDavid du Colombier rsadecrypt(rsa, enc, clr);
5180ee5cbfSDavid du Colombier print("clr %B\n", clr);
5280ee5cbfSDavid du Colombier n = mptole(clr, buf, sizeof(buf), nil);
5380ee5cbfSDavid du Colombier write(1, buf, n);
5480ee5cbfSDavid du Colombier print("> ");
5580ee5cbfSDavid du Colombier }
5680ee5cbfSDavid du Colombier }
57