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

  man pages->Tru64 Unix man pages -> BN_mod_mul_reciprocal (3)              



NAME    [Toc]    [Back]

       BN_mod_mul_reciprocal,    BN_div_recp,    BN_RECP_CTX_new,
       BN_RECP_CTX_init, BN_RECP_CTX_free, BN_RECP_CTX_set - Modular
 multiplication using reciprocal

SYNOPSIS    [Toc]    [Back]

       #include <openssl/bn.h>

       BN_RECP_CTX *BN_RECP_CTX_new(
               void ); void BN_RECP_CTX_init(
               BN_RECP_CTX *recp ); void BN_RECP_CTX_free(
               BN_RECP_CTX *recp ); int BN_RECP_CTX_set(
               BN_RECP_CTX *recp, const BIGNUM *m, BN_CTX *ctx );
       int BN_div_recp(
               BIGNUM *dv, BIGNUM *rem,  BIGNUM  *a,  BN_RECP_CTX
       *recp,          BN_CTX *ctx ); int BN_mod_mul_reciprocal(
               BIGNUM  *r,  BIGNUM  *a,  BIGNUM  *b,  BN_RECP_CTX
       *recp, BN_CTX *ctx );

DESCRIPTION    [Toc]    [Back]

       The BN_mod_mul_reciprocal() function can be used  to  perform
  an  efficient BN_mod_mul() operation when the operation
 will be performed repeatedly with the  same  modulus.
       It  computes  r=(a*b)%m  using  recp=1/m,  which is set as
       described below.  ctx is  a  previously  allocated  BN_CTX
       used for temporary variables.

       The BN_RECP_CTX_new() function allocates and initializes a
       BN_RECP structure. The  BN_RECP_CTX_init()  function  initializes
 an existing uninitialized BN_RECP.

       The  BN_RECP_CTX_free()  function  frees the components of
       the BN_RECP, and, if it was created by  BN_RECP_CTX_new(),
       also the structure itself.

       The  BN_RECP_CTX_set()  function stores m in recp and sets
       it  up  for  computing  1/m  and  shifting  it   left   by
       BN_num_bits(m)+1 to make it an integer. The result and the
       number of bits it was shifted left will later be stored in

       The  BN_div_recp()  function divides a by m using recp. It
       places the quotient in dv and the remainder in rem.

       The BN_RECP_CTX structure is defined as follows:
        typedef struct bn_recp_ctx_st       {       BIGNUM  N; /*
       the  divisor  */       BIGNUM Nr;     /* the reciprocal */
            int num_bits;      int shift;      int flags;       }

       It cannot be shared between threads.

RETURN VALUES    [Toc]    [Back]

       The BN_RECP_CTX_new() function returns the newly allocated
       BN_RECP_CTX, and NULL on error.

       The BN_RECP_CTX_init()  and  BN_RECP_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


HISTORY    [Toc]    [Back]

       The BN_RECP_CTX  structure  was  added  in  SSLeay  0.9.0.
       Before   that,   the  BN_reciprocal()  function  was  used
       instead, and the  BN_mod_mul_reciprocal()  arguments  were

SEE ALSO    [Toc]    [Back]

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

[ Back ]
 Similar pages
Name OS Title
GEOM FreeBSD modular disk I/O request transformation framework.
geom FreeBSD modular disk I/O request transformation framework.
BN_mod_mul_montgomery OpenBSD Montgomery multiplication
BN_to_montgomery OpenBSD Montgomery multiplication
BN_from_montgomery OpenBSD Montgomery multiplication
BN_MONT_CTX_set OpenBSD Montgomery multiplication
BN_MONT_CTX_new OpenBSD Montgomery multiplication
BN_MONT_CTX_init OpenBSD Montgomery multiplication
BN_MONT_CTX_free OpenBSD Montgomery multiplication
BN_mod_mul_montgomery NetBSD Montgomery multiplication
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service