17dd7cddfSDavid du Colombier #include "os.h"
27dd7cddfSDavid du Colombier #include <mp.h>
37dd7cddfSDavid du Colombier #include <libsec.h>
47dd7cddfSDavid du Colombier
57dd7cddfSDavid du Colombier void
testcrt(mpint ** p)67dd7cddfSDavid du Colombier testcrt(mpint **p)
77dd7cddfSDavid du Colombier {
87dd7cddfSDavid du Colombier CRTpre *crt;
97dd7cddfSDavid du Colombier CRTres *res;
107dd7cddfSDavid du Colombier mpint *m, *x, *y;
117dd7cddfSDavid du Colombier
122d8b52e8SDavid du Colombier fmtinstall('B', mpfmt);
137dd7cddfSDavid du Colombier
147dd7cddfSDavid du Colombier // get a modulus and a test number
157dd7cddfSDavid du Colombier m = mpnew(1024+160);
167dd7cddfSDavid du Colombier mpmul(p[0], p[1], m);
177dd7cddfSDavid du Colombier x = mpnew(1024+160);
187dd7cddfSDavid du Colombier mpadd(m, mpone, x);
197dd7cddfSDavid du Colombier
207dd7cddfSDavid du Colombier // do the precomputation for crt conversion
217dd7cddfSDavid du Colombier crt = crtpre(2, p);
227dd7cddfSDavid du Colombier
237dd7cddfSDavid du Colombier // convert x to residues
247dd7cddfSDavid du Colombier res = crtin(crt, x);
257dd7cddfSDavid du Colombier
267dd7cddfSDavid du Colombier // convert back
277dd7cddfSDavid du Colombier y = mpnew(1024+160);
287dd7cddfSDavid du Colombier crtout(crt, res, y);
297dd7cddfSDavid du Colombier print("x %B\ny %B\n", x, y);
307dd7cddfSDavid du Colombier mpfree(m);
317dd7cddfSDavid du Colombier mpfree(x);
327dd7cddfSDavid du Colombier mpfree(y);
337dd7cddfSDavid du Colombier }
347dd7cddfSDavid du Colombier
357dd7cddfSDavid du Colombier void
main(void)367dd7cddfSDavid du Colombier main(void)
377dd7cddfSDavid du Colombier {
387dd7cddfSDavid du Colombier int i;
397dd7cddfSDavid du Colombier mpint *p[2];
407dd7cddfSDavid du Colombier long start;
417dd7cddfSDavid du Colombier
427dd7cddfSDavid du Colombier start = time(0);
437dd7cddfSDavid du Colombier for(i = 0; i < 10; i++){
447dd7cddfSDavid du Colombier p[0] = mpnew(1024);
457dd7cddfSDavid du Colombier p[1] = mpnew(1024);
467dd7cddfSDavid du Colombier DSAprimes(p[0], p[1], nil);
477dd7cddfSDavid du Colombier testcrt(p);
487dd7cddfSDavid du Colombier mpfree(p[0]);
497dd7cddfSDavid du Colombier mpfree(p[1]);
507dd7cddfSDavid du Colombier }
51*033584b0SDavid du Colombier print("%ld secs with more\n", time(0)-start);
527dd7cddfSDavid du Colombier exits(0);
537dd7cddfSDavid du Colombier }
54