-static int vexp(dstr *v)
-{
- mp *m = *(mp **)v[0].buf;
- mp *a = *(mp **)v[1].buf;
- mp *b = *(mp **)v[2].buf;
- mp *r = *(mp **)v[3].buf;
- mp *mr;
- int ok = 1;
-
- mpbarrett mb;
- mpbarrett_create(&mb, m);
-
- mr = mpbarrett_exp(&mb, MP_NEW, a, b);
-
- if (!MP_EQ(mr, r)) {
- fputs("\n*** barrett modexp failed", stderr);
- fputs("\n m = ", stderr); mp_writefile(m, stderr, 10);
- fputs("\n a = ", stderr); mp_writefile(a, stderr, 10);
- fputs("\n e = ", stderr); mp_writefile(b, stderr, 10);
- fputs("\n r = ", stderr); mp_writefile(r, stderr, 10);
- fputs("\nmr = ", stderr); mp_writefile(mr, stderr, 10);
- fputc('\n', stderr);
- ok = 0;
- }
-
- mp_drop(m);
- mp_drop(a);
- mp_drop(b);
- mp_drop(r);
- mp_drop(mr);
- mpbarrett_destroy(&mb);
- assert(mparena_count(MPARENA_GLOBAL) == 0);
- return ok;
-}
-