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