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