| 
|  | BN_mod_mul_montgomery(3)Contents |  
        BN_mod_mul_montgomery,  BN_MONT_CTX_new, BN_MONT_CTX_init,
       BN_MONT_CTX_free,    BN_MONT_CTX_set,    BN_MONT_CTX_copy,
       BN_from_montgomery,  BN_to_montgomery  - Montgomery multiplication
       #include <openssl/bn.h>
       BN_MONT_CTX *BN_MONT_CTX_new(
               void ); void BN_MONT_CTX_init(
               BN_MONT_CTX *ctx ); void BN_MONT_CTX_free(
               BN_MONT_CTX *mont ); int BN_MONT_CTX_set(
               BN_MONT_CTX *mont, const BIGNUM *m, BN_CTX *ctx );
       BN_MONT_CTX *BN_MONT_CTX_copy(
               BN_MONT_CTX   *to,   BN_MONT_CTX   *from   );  int
       BN_mod_mul_montgomery(
               BIGNUM  *r,  BIGNUM  *a,  BIGNUM  *b,  BN_MONT_CTX
       *mont, BN_CTX *ctx ); int BN_from_montgomery(
               BIGNUM  *r,  BIGNUM  *a, BN_MONT_CTX *mont, BN_CTX
       *ctx ); int BN_to_montgomery(
               BIGNUM *r, BIGNUM *a,  BN_MONT_CTX  *mont,  BN_CTX
       *ctx );
       These  functions implement Montgomery multiplication. They
       are used automatically when BN_mod_exp()  is  called  with
       suitable input, but they may be useful when several operations
 are performed using the same modulus.
       The BN_MONT_CTX_new() function allocates and initializes a
       BN_MONT_CTX  structure.  The  BN_MONT_CTX_init()  function
       initializes an existing uninitialized BN_MONT_CTX.
       The BN_MONT_CTX_set() function sets up the mont  structure
       from the modulus m by precomputing its inverse and a value
       R.
       The BN_MONT_CTX_copy()  function  copies  the  BN_MONT_CTX
       from to to.
       The  BN_MONT_CTX_free()  function  frees the components of
       the   BN_MONT_CTX,   and,   if   it   was    created    by
       BN_MONT_CTX_new(), also the structure itself.
       The      BN_mod_mul_montgomery()     function     computes
       Mont(a,b):=a*b*R^-1 and places the result in r.
       The BN_from_montgomery() function performs the  Montgomery
       reduction r = a*R^-1.
       The BN_to_montgomery() function computes Mont(a,R^2), i.e.
       a*R.
       For all functions, ctx is a  previously  allocated  BN_CTX
       used for temporary variables.
       The BN_MONT_CTX structure is defined as follows:
        typedef struct bn_mont_ctx_st
               {
               int ri;         /* number of bits in R */
               BIGNUM   RR;       /*  R^2  (used  to  convert  to
       Montgomery form) */
               BIGNUM N;       /* The modulus */
               BIGNUM Ni;      /* R*(1/R mod N) - N*Ni = 1
                                * (Ni is only stored  for  bignum
       algorithm) */
               BN_ULONG n0;    /* least significant word of Ni */
               int flags;
               } BN_MONT_CTX;
       BN_to_montgomery() is a macro.
       The BN_MONT_CTX_new() function returns the newly allocated
       BN_MONT_CTX, and NULL on error.
       The  BN_MONT_CTX_init()  and  BN_MONT_CTX_free() functions
       have no return values.
       For the other functions, 1 is returned for success,  0  on
       error.   The   error   codes  can  be  obtained  by  using
       ERR_get_error().
       The         BN_MONT_CTX_new(),         BN_MONT_CTX_free(),
       BN_MONT_CTX_set(),  BN_mod_mul_montgomery(), BN_from_montgomery(),
 and BN_to_montgomery() functions  are  available
       in all versions of SSLeay and OpenSSL.
       The  BN_MONT_CTX_init()  and  BN_MONT_CTX_copy() functions
       were added in SSLeay 0.9.1b.
       Functions: bn(3), err(3), BN_add(3), BN_CTX_new(3)
                                         BN_mod_mul_montgomery(3)
[ Back ] |