*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> BN_mod_mul_montgomery (3)              
Title
Content
Arch
Section
 

BN_mod_mul_montgomery(3)

Contents


NAME    [Toc]    [Back]

       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

SYNOPSIS    [Toc]    [Back]

       #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 );

DESCRIPTION    [Toc]    [Back]

       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.

RETURN VALUES    [Toc]    [Back]

       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().

HISTORY    [Toc]    [Back]

       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.

SEE ALSO    [Toc]    [Back]

      
      
       Functions: bn(3), err(3), BN_add(3), BN_CTX_new(3)



                                         BN_mod_mul_montgomery(3)
[ Back ]
 Similar pages
Name OS Title
BN_RECP_CTX_set OpenBSD modular multiplication using reciprocal
BN_div_recp OpenBSD modular multiplication using reciprocal
BN_mod_mul_reciprocal Tru64 Modular multiplication using reciprocal
BN_mod_mul_reciprocal OpenBSD modular multiplication using reciprocal
BN_mod_mul_reciprocal NetBSD modular multiplication using reciprocal
BN_RECP_CTX_new OpenBSD modular multiplication using reciprocal
BN_RECP_CTX_init OpenBSD modular multiplication using reciprocal
BN_RECP_CTX_init Tru64 Modular multiplication using reciprocal
BN_RECP_CTX_free Tru64 Modular multiplication using reciprocal
BN_RECP_CTX_set Tru64 Modular multiplication using reciprocal
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service