URI:
       tegdecrypt.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tegdecrypt.c (563B)
       ---
            1 #include "os.h"
            2 #include <mp.h>
            3 #include <libsec.h>
            4 
            5 mpint*
            6 egdecrypt(EGpriv *priv, mpint *in, mpint *out)
            7 {
            8         EGpub *pub = &priv->pub;
            9         mpint *gamma, *delta;
           10         mpint *p = pub->p;
           11         int plen = mpsignif(p)+1;
           12         int shift = ((plen+Dbits-1)/Dbits)*Dbits;
           13 
           14         if(out == nil)
           15                 out = mpnew(0);
           16         gamma = mpnew(0);
           17         delta = mpnew(0);
           18         mpright(in, shift, gamma);
           19         mpleft(gamma, shift, delta);
           20         mpsub(in, delta, delta);
           21         mpexp(gamma, priv->secret, p, out);
           22         mpinvert(out, p, gamma);
           23         mpmul(gamma, delta, out);
           24         mpmod(out, p, out);
           25         mpfree(gamma);
           26         mpfree(delta);
           27         return out;
           28 }