xref: /plan9/sys/src/libsec/port/egtest.c (revision 80ee5cbfe36716af62da8896207e9763b8e3d760)
1*80ee5cbfSDavid du Colombier #include "os.h"
2*80ee5cbfSDavid du Colombier #include <mp.h>
3*80ee5cbfSDavid du Colombier #include <libsec.h>
4*80ee5cbfSDavid du Colombier 
5*80ee5cbfSDavid du Colombier void
main(void)6*80ee5cbfSDavid du Colombier main(void)
7*80ee5cbfSDavid du Colombier {
8*80ee5cbfSDavid du Colombier 	EGpriv *sk;
9*80ee5cbfSDavid du Colombier 	mpint *m, *gamma, *delta, *in, *out;
10*80ee5cbfSDavid du Colombier 	int plen, shift;
11*80ee5cbfSDavid du Colombier 
12*80ee5cbfSDavid du Colombier 	fmtinstall('B', mpconv);
13*80ee5cbfSDavid du Colombier 
14*80ee5cbfSDavid du Colombier 	sk = egprivalloc();
15*80ee5cbfSDavid du Colombier 	sk->pub.p = uitomp(2357, nil);
16*80ee5cbfSDavid du Colombier 	sk->pub.alpha = uitomp(2, nil);
17*80ee5cbfSDavid du Colombier 	sk->pub.key = uitomp(1185, nil);
18*80ee5cbfSDavid du Colombier 	sk->secret = uitomp(1751, nil);
19*80ee5cbfSDavid du Colombier 
20*80ee5cbfSDavid du Colombier 	m = uitomp(2035, nil);
21*80ee5cbfSDavid du Colombier 
22*80ee5cbfSDavid du Colombier 	plen = mpsignif(sk->pub.p)+1;
23*80ee5cbfSDavid du Colombier 	shift = ((plen+Dbits-1)/Dbits)*Dbits;
24*80ee5cbfSDavid du Colombier 	gamma = uitomp(1430, nil);
25*80ee5cbfSDavid du Colombier 	delta = uitomp(697, nil);
26*80ee5cbfSDavid du Colombier 	out = mpnew(0);
27*80ee5cbfSDavid du Colombier 	in = mpnew(0);
28*80ee5cbfSDavid du Colombier 	mpleft(gamma, shift, in);
29*80ee5cbfSDavid du Colombier 	mpadd(delta, in, in);
30*80ee5cbfSDavid du Colombier 	egdecrypt(sk, in, out);
31*80ee5cbfSDavid du Colombier 
32*80ee5cbfSDavid du Colombier 	if(mpcmp(m, out) != 0)
33*80ee5cbfSDavid du Colombier 		print("decrypt failed to recover message\n");
34*80ee5cbfSDavid du Colombier }
35