From 932f6ca7358aee875a5f6fc0c6a33ead4100fa30 Mon Sep 17 00:00:00 2001 From: mdw Date: Sat, 16 Jun 2001 13:00:04 +0000 Subject: [PATCH] Moved @mpmont_factor@ to . Documented interface change to @mpmont_expr@ and @mpmont_mexpr@ -- the arguments are now in Montgomery form. --- mpmont.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/mpmont.h b/mpmont.h index 120fa92..7544e70 100644 --- a/mpmont.h +++ b/mpmont.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: mpmont.h,v 1.4 1999/12/11 01:51:14 mdw Exp $ + * $Id: mpmont.h,v 1.5 2001/06/16 13:00:04 mdw Exp $ * * Montgomery reduction * @@ -30,6 +30,11 @@ /*----- Revision history --------------------------------------------------* * * $Log: mpmont.h,v $ + * Revision 1.5 2001/06/16 13:00:04 mdw + * Moved @mpmont_factor@ to . Documented interface change to + * @mpmont_expr@ and @mpmont_mexpr@ -- the arguments are now in Montgomery + * form. + * * Revision 1.4 1999/12/11 01:51:14 mdw * Use a Karatsuba-based reduction for large moduli. * @@ -103,13 +108,6 @@ typedef struct mpmont { mp *r, *r2; /* %$R \bmod m$%, %$R^2 \bmod m$% */ } mpmont; -/* --- A base/exponent pair for @mpmont_mexp@ --- */ - -typedef struct mpmont_factor { - mp *base; - mp *exp; -} mpmont_factor; - /*----- Functions provided ------------------------------------------------*/ /* --- @mpmont_create@ --- * @@ -166,8 +164,8 @@ extern mp *mpmont_mul(mpmont */*mm*/, mp */*d*/, mp */*a*/, mp */*b*/); * @mp *a@ = base * @mp *e@ = exponent * - * Returns: Result, %$a^e R \bmod m$%. This is useful if further modular - * arithmetic is to be performed on the result. + * Returns: Result, %$(a R^{-1})^e R \bmod m$%. This is useful if + * further modular arithmetic is to be performed on the result. */ extern mp *mpmont_expr(mpmont */*mm*/, mp */*d*/, mp */*a*/, mp */*e*/); @@ -188,24 +186,27 @@ extern mp *mpmont_exp(mpmont */*mm*/, mp */*d*/, mp */*a*/, mp */*e*/); * * Arguments: @mpmont *mm@ = pointer to Montgomery reduction context * @mp *d@ = fake destination - * @mpmont_factor *f@ = pointer to array of factors + * @mp_expfactor *f@ = pointer to array of factors * @size_t n@ = number of factors supplied * * Returns: If the bases are %$g_0, g_1, \ldots, g_{n-1}$% and the * exponents are %$e_0, e_1, \ldots, e_{n-1}$% then the result * is: * - * %$g_0^{e_0} g_1^{e_1} \ldots g_{n-1}^{e_{n-1}} R \bmod m$% + * %$g_0^{e_0} g_1^{e_1} \ldots g_{n-1}^{e_{n-1}} \bmod m$% + * + * + * except that the %$g_i$% and result are in Montgomery form. */ extern mp *mpmont_mexpr(mpmont */*mm*/, mp */*d*/, - mpmont_factor */*f*/, size_t /*n*/); + mp_expfactor */*f*/, size_t /*n*/); /* --- @mpmont_mexp@ --- * * * Arguments: @mpmont *mm@ = pointer to Montgomery reduction context * @mp *d@ = fake destination - * @mpmont_factor *f@ = pointer to array of factors + * @mp_expfactor *f@ = pointer to array of factors * @size_t n@ = number of factors supplied * * Returns: Product of bases raised to exponents, all mod @m@. @@ -214,7 +215,7 @@ extern mp *mpmont_mexpr(mpmont */*mm*/, mp */*d*/, */ extern mp *mpmont_mexp(mpmont */*mm*/, mp */*d*/, - mpmont_factor */*f*/, size_t /*n*/); + mp_expfactor */*f*/, size_t /*n*/); /*----- That's all, folks -------------------------------------------------*/ -- 2.11.0