From b0b682aa5f6174deb5bde83701b191556986fe05 Mon Sep 17 00:00:00 2001 From: mdw Date: Sat, 16 Jun 2001 12:56:38 +0000 Subject: [PATCH] Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. --- dh-check.c | 10 ++++++++-- dsa-verify.c | 7 +++++-- mp-modsqrt.c | 10 ++++++++-- rabin.c | 8 ++++++-- rho.c | 11 +++++++---- rsa-priv.c | 6 +++++- rsa-recover.c | 8 ++++++-- 7 files changed, 45 insertions(+), 15 deletions(-) diff --git a/dh-check.c b/dh-check.c index 8956bd1..f9317f5 100644 --- a/dh-check.c +++ b/dh-check.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: dh-check.c,v 1.1 2001/02/03 16:08:24 mdw Exp $ + * $Id: dh-check.c,v 1.2 2001/06/16 12:56:38 mdw Exp $ * * Checks Diffie-Hellman group parameters * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: dh-check.c,v $ + * Revision 1.2 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.1 2001/02/03 16:08:24 mdw * Add consistency checking for public keys. * @@ -66,6 +69,7 @@ int dh_checkparam(keycheck *kc, const dh_param *dp, mp **v, size_t n) mpmont mm; mp *pm1 = MP_NEW; mp *q = MP_NEW; + mp *x; mpmul mu; size_t i; @@ -96,7 +100,9 @@ int dh_checkparam(keycheck *kc, const dh_param *dp, mp **v, size_t n) goto fail; q = mp_odd(q, dp->q, &i); mpmont_create(&mm, dp->p); - q = mpmont_expr(&mm, q, dp->g, q); + x = mpmont_mul(&mm, MP_NEW, dp->g, mm.r2); + q = mpmont_expr(&mm, q, x, q); + mp_drop(x); do { if (mp_eq(q, mm.r) != !i) { if (keycheck_report(kc, KCSEV_ERR, "order of g != q")) { diff --git a/dsa-verify.c b/dsa-verify.c index 3f77039..a39c11b 100644 --- a/dsa-verify.c +++ b/dsa-verify.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: dsa-verify.c,v 1.5 2000/10/08 12:13:17 mdw Exp $ + * $Id: dsa-verify.c,v 1.6 2001/06/16 12:56:38 mdw Exp $ * * DSA signature verification * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: dsa-verify.c,v $ + * Revision 1.6 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.5 2000/10/08 12:13:17 mdw * Use @MP_EQ@ instead of @MP_CMP@. * @@ -71,7 +74,7 @@ int dsa_vrfy(const dsa_param *dp, mp *y, mp *m, mp *r, mp *s) { mpmont pm, qm; mp *w; - mpmont_factor f[2]; + mp_expfactor f[2]; int ok; /* --- Ensure that all of the signature bits are in range --- */ diff --git a/mp-modsqrt.c b/mp-modsqrt.c index 6c21dc4..df60aba 100644 --- a/mp-modsqrt.c +++ b/mp-modsqrt.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mp-modsqrt.c,v 1.3 2001/02/03 12:00:29 mdw Exp $ + * $Id: mp-modsqrt.c,v 1.4 2001/06/16 12:56:38 mdw Exp $ * * Compute square roots modulo a prime * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: mp-modsqrt.c,v $ + * Revision 1.4 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.3 2001/02/03 12:00:29 mdw * Now @mp_drop@ checks its argument is non-NULL before attempting to free * it. Note that the macro version @MP_DROP@ doesn't do this. @@ -111,10 +114,13 @@ mp *mp_modsqrt(mp *d, mp *a, mp *p) /* --- Now to really get going --- */ mpmont_create(&mm, p); + b = mpmont_mul(&mm, b, b, mm.r2); c = mpmont_expr(&mm, b, b, t); t = mp_add(t, t, MP_ONE); t = mp_lsr(t, t, 1); - r = mpmont_expr(&mm, t, a, t); + dd = mpmont_mul(&mm, MP_NEW, a, mm.r2); + r = mpmont_expr(&mm, t, dd, t); + mp_drop(dd); ainv = mpmont_mul(&mm, ainv, ainv, mm.r2); mone = mp_sub(MP_NEW, p, mm.r); diff --git a/rabin.c b/rabin.c index a5ebdcc..e6cd488 100644 --- a/rabin.c +++ b/rabin.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: rabin.c,v 1.5 2000/10/08 12:11:22 mdw Exp $ + * $Id: rabin.c,v 1.6 2001/06/16 12:56:38 mdw Exp $ * * Miller-Rabin primality test * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: rabin.c,v $ + * Revision 1.6 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.5 2000/10/08 12:11:22 mdw * Use @MP_EQ@ instead of @MP_CMP@. * @@ -120,7 +123,8 @@ int rabin_test(rabin *r, mp *g) * @y@ here has an extra factor of %$R$%. */ - y = mpmont_expr(&r->mm, MP_NEW, g, r->r); + y = mpmont_mul(&r->mm, MP_NEW, g, r->mm.r2); + y = mpmont_expr(&r->mm, y, y, r->r); if (MP_EQ(y, r->mm.r) || MP_EQ(y, r->m1)) { rc = PGEN_PASS; goto done; diff --git a/rho.c b/rho.c index 2ff20a6..aae4951 100644 --- a/rho.c +++ b/rho.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: rho.c,v 1.2 2000/10/08 12:11:22 mdw Exp $ + * $Id: rho.c,v 1.3 2001/06/16 12:56:38 mdw Exp $ * * Pollard's rho algorithm for discrete logs * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: rho.c,v $ + * Revision 1.3 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.2 2000/10/08 12:11:22 mdw * Use @MP_EQ@ instead of @MP_CMP@. * @@ -240,14 +243,14 @@ mp *rho_prime(mp *g, mp *a, mp *n, mp *p) /* --- The main loop --- */ while ((l = rho(&cc, &x, &y, aa, bb)) == 0) { - mpmont_factor f[2]; + mp_expfactor f[2]; if (!r) r = fibrand_create(0); aa = mprand_range(MP_NEW, n, r, 0); bb = mprand_range(MP_NEW, n, r, 0); - f[0].base = g; f[0].exp = aa; - f[1].base = a; f[1].exp = bb; + f[0].base = cc.g; f[0].exp = aa; + f[1].base = cc.a; f[1].exp = bb; x = mpmont_mexpr(&mm, MP_NEW, f, 2); y = MP_COPY(x); } diff --git a/rsa-priv.c b/rsa-priv.c index 255a6b5..a529f0b 100644 --- a/rsa-priv.c +++ b/rsa-priv.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: rsa-priv.c,v 1.2 2000/10/08 12:11:22 mdw Exp $ + * $Id: rsa-priv.c,v 1.3 2001/06/16 12:56:38 mdw Exp $ * * RSA private-key operations * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: rsa-priv.c,v $ + * Revision 1.3 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.2 2000/10/08 12:11:22 mdw * Use @MP_EQ@ instead of @MP_CMP@. * @@ -141,6 +144,7 @@ mp *rsa_privop(rsa_privctx *rd, mp *d, mp *c) k = mprand_range(k, rp->n, rd->r, 0); mp_gcd(&g, 0, &ki, rp->n, k); } while (!MP_EQ(g, MP_ONE)); + k = mpmont_mul(&rd->nm, k, k, rd->nm.r2); k = mpmont_expr(&rd->nm, k, k, rp->e); c = mpmont_mul(&rd->nm, c, c, k); mp_drop(k); diff --git a/rsa-recover.c b/rsa-recover.c index 03e88b2..8052ddc 100644 --- a/rsa-recover.c +++ b/rsa-recover.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: rsa-recover.c,v 1.5 2000/10/08 12:11:22 mdw Exp $ + * $Id: rsa-recover.c,v 1.6 2001/06/16 12:56:38 mdw Exp $ * * Recover RSA parameters * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: rsa-recover.c,v $ + * Revision 1.6 2001/06/16 12:56:38 mdw + * Fixes for interface change to @mpmont_expr@ and @mpmont_mexpr@. + * * Revision 1.5 2000/10/08 12:11:22 mdw * Use @MP_EQ@ instead of @MP_CMP@. * @@ -141,7 +144,8 @@ int rsa_recover(rsa_priv *rp) */ aw = primetab[i++]; - z = mpmont_expr(&mm, z, &a, t); + z = mpmont_mul(&mm, z, &a, mm.r2); + z = mpmont_expr(&mm, z, z, t); if (MP_EQ(z, mm.r) || MP_EQ(z, m1)) continue; -- 2.11.0