1 #include "os.h" 2 #include <mp.h> 3 #include <libsec.h> 4 5 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