xref: /plan9/sys/src/libsec/port/rsatest.c (revision 43af371b8d63420d32d0cb0b58914db16dcd7715)
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