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