xref: /plan9/sys/src/cmd/unix/drawterm/libsec/rsatest.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
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