|  | #include "os.h" | 
|  | #include <mp.h> | 
|  | #include <libsec.h> | 
|  |  | 
|  | void | 
|  | main(void) | 
|  | { | 
|  | EGpriv *sk; | 
|  | mpint *m, *gamma, *delta, *in, *out; | 
|  | int plen, shift; | 
|  |  | 
|  | fmtinstall('B', mpconv); | 
|  |  | 
|  | sk = egprivalloc(); | 
|  | sk->pub.p = uitomp(2357, nil); | 
|  | sk->pub.alpha = uitomp(2, nil); | 
|  | sk->pub.key = uitomp(1185, nil); | 
|  | sk->secret = uitomp(1751, nil); | 
|  |  | 
|  | m = uitomp(2035, nil); | 
|  |  | 
|  | plen = mpsignif(sk->pub.p)+1; | 
|  | shift = ((plen+Dbits-1)/Dbits)*Dbits; | 
|  | gamma = uitomp(1430, nil); | 
|  | delta = uitomp(697, nil); | 
|  | out = mpnew(0); | 
|  | in = mpnew(0); | 
|  | mpleft(gamma, shift, in); | 
|  | mpadd(delta, in, in); | 
|  | egdecrypt(sk, in, out); | 
|  |  | 
|  | if(mpcmp(m, out) != 0) | 
|  | print("decrypt failed to recover message\n"); | 
|  | } |