| #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"); |
| } |