in some new file names the first 8 characters were not unique
[openssl.git] / doc / crypto / bn.pod
index 1a0e38b24cd2691460809eb63f12c39df0a94647..1504a1c92dfd1de33519d64ba77e8621fbd29862 100644 (file)
@@ -2,7 +2,7 @@
 
 =head1 NAME
 
 
 =head1 NAME
 
-bn - Multiprecision integer arithmetics
+bn - multiprecision integer arithmetics
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
@@ -43,7 +43,7 @@ bn - Multiprecision integer arithmetics
  int BN_sub_word(BIGNUM *a, BN_ULONG w);
  int BN_mul_word(BIGNUM *a, BN_ULONG w);
  BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
  int BN_sub_word(BIGNUM *a, BN_ULONG w);
  int BN_mul_word(BIGNUM *a, BN_ULONG w);
  BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
- BN_ULONG BN_mod_word(BIGNUM *a, BN_ULONG w);
+ BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
 
  int BN_cmp(BIGNUM *a, BIGNUM *b);
  int BN_ucmp(BIGNUM *a, BIGNUM *b);
 
  int BN_cmp(BIGNUM *a, BIGNUM *b);
  int BN_ucmp(BIGNUM *a, BIGNUM *b);
@@ -58,12 +58,13 @@ bn - Multiprecision integer arithmetics
  int BN_set_word(BIGNUM *a, unsigned long w);
  unsigned long BN_get_word(BIGNUM *a);
 
  int BN_set_word(BIGNUM *a, unsigned long w);
  unsigned long BN_get_word(BIGNUM *a);
 
- int BN_rand(BIGNUM *rnd, int bits, int top,int bottom);
+ int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
+ int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
 
 
- BIGNUM *BN_generate_prime(BIGNUM *ret,int bits,int safe,BIGNUM *add,
-         BIGNUM *rem,void (*callback)(int,int,void *),void *cb_arg);
- int BN_is_prime(BIGNUM *p,int nchecks,void (*callback)(int,int,void *),
-         BN_CTX *ctx,void *cb_arg);
+ BIGNUM *BN_generate_prime(BIGNUM *ret, int bits,int safe, BIGNUM *add,
+         BIGNUM *rem, void (*callback)(int, int, void *), void *cb_arg);
+ int BN_is_prime(const BIGNUM *p, int nchecks,
+         void (*callback)(int, int, void *), BN_CTX *ctx, void *cb_arg);
 
  int BN_set_bit(BIGNUM *a, int n);
  int BN_clear_bit(BIGNUM *a, int n);
 
  int BN_set_bit(BIGNUM *a, int n);
  int BN_clear_bit(BIGNUM *a, int n);
@@ -80,8 +81,8 @@ bn - Multiprecision integer arithmetics
  char *BN_bn2dec(const BIGNUM *a);
  int BN_hex2bn(BIGNUM **a, const char *str);
  int BN_dec2bn(BIGNUM **a, const char *str);
  char *BN_bn2dec(const BIGNUM *a);
  int BN_hex2bn(BIGNUM **a, const char *str);
  int BN_dec2bn(BIGNUM **a, const char *str);
- int BN_print_fp(FILE *fp, BIGNUM *a);
  int BN_print(BIO *fp, const BIGNUM *a);
  int BN_print(BIO *fp, const BIGNUM *a);
+ int BN_print_fp(FILE *fp, const BIGNUM *a);
  int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
  BIGNUM *BN_mpi2bn(unsigned char *s, int len, BIGNUM *ret);
 
  int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
  BIGNUM *BN_mpi2bn(unsigned char *s, int len, BIGNUM *ret);
 
@@ -123,53 +124,25 @@ The basic object in this library is a B<BIGNUM>. It is used to hold a
 single large integer. This type should be considered opaque and fields
 should not be modified or accessed directly.
 
 single large integer. This type should be considered opaque and fields
 should not be modified or accessed directly.
 
-The creation of B<BIGNUM> objects is described in L<BN_new(3)>;
-L<BN_add(3)> describes most of the arithmetic operations.
-Comparision is described in L<BN_cmp(3)>; L<BN_zero(3)> describes
-certain assignments, L<BN_rand(3)> the generation of random numbers,
-L<BN_generate_prime(3)> deals with prime numbers and L<BN_set_bit(3)>
-with bit operations. The conversion of B<BIGNUM>s to external
-formats is described in L<BN_bn2bin(3)>.
-
-=head1 INTERNALS
-
-The following description is based on the SSLeay documentation:
-
- typedef struct bignum_st
-        {
-        int top;        /* Index of last used d. */
-        BN_ULONG *d;    /* Pointer to an array of 'BITS2' bit chunks. */
-        int max;        /* Size of the d array. */
-        int neg;
-        } BIGNUM;
-
-The big number is stored in B<d>, a malloc()ed array of B<BN_ULONG>s.
-A B<BN_ULONG> can be either 16, 32 or 64 bits in size, depending on
-the 'number of bits' specified in bn.h.
-
-B<max> is the size of the B<d> array that has been allocated.  B<top>
-is the 'last' entry being used, so for a value of 4, bn.d[0]=4 and
-bn.top=1. B<neg> is 1 if the number is negative.  When a BIGNUM is
-'0', the B<d> field can be NULL and B<top> == 0.  Various routines in
-this library require the use of temporary B<BIGNUM> variables during
-their execution.  Since dynamic memory allocation to create B<BIGNUM>s
-is rather expensive when used in conjunction with repeated subroutine
-calls, the B<BN_CTX> structure is used.  This structure contains
-B<BN_CTX_NUM> B<BIGNUM>s.  B<BN_CTX_NUM> is the maximum number of
-temporary B<BIGNUM>s any publicly exported function will use.
-
- #define BN_CTX_NUM  12
- typedef struct bignum_ctx
-        {
-        int tos;                    /* top of stack */
-        BIGNUM *bn[BN_CTX_NUM];     /* The variables */
-        } BN_CTX;
+The creation of B<BIGNUM> objects is described in L<BN_new(3)|BN_new(3)>;
+L<BN_add(3)|BN_add(3)> describes most of the arithmetic operations.
+Comparison is described in L<BN_cmp(3)|BN_cmp(3)>; L<BN_zero(3)|BN_zero(3)>
+describes certain assignments, L<BN_rand(3)|BN_rand(3)> the generation of
+random numbers, L<BN_generate_prime(3)|BN_generate_prime(3)> deals with prime
+numbers and L<BN_set_bit(3)|BN_set_bit(3)> with bit operations. The conversion
+of B<BIGNUM>s to external formats is described in L<BN_bn2bin(3)|BN_bn2bin(3)>.
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-dh(3), err(3), rand(3), rsa(3), BN_new(3), BN_CTX_new(3), BN_copy(3),
-BN_num_bytes(3), BN_add(3), BN_add_word(3), BN_cmp(3), BN_zero(3),
-BN_rand(3), BN_generate_prime(3), BN_set_bit(3), BN_bn2bin(3),
-BN_mod_inverse(3), BN_mod_mul_reciprocal(3), BN_mod_mul_montgomery(3)
+L<bn_internal(3)|bn_internal(3)>,
+L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>,
+L<BN_new(3)|BN_new(3)>, L<BN_CTX_new(3)|BN_CTX_new(3)>,
+L<BN_copy(3)|BN_copy(3)>, L<BN_num_bytes(3)|BN_num_bytes(3)>,
+L<BN_add(3)|BN_add(3)>, L<BN_add_word(3)|BN_add_word(3)>,
+L<BN_cmp(3)|BN_cmp(3)>, L<BN_zero(3)|BN_zero(3)>, L<BN_rand(3)|BN_rand(3)>,
+L<BN_generate_prime(3)|BN_generate_prime(3)>, L<BN_set_bit(3)|BN_set_bit(3)>,
+L<BN_bn2bin(3)|BN_bn2bin(3)>, L<BN_mod_inverse(3)|BN_mod_inverse(3)>,
+L<BN_mod_mul_reciprocal(3)|BN_mod_mul_reciprocal(3)>,
+L<BN_mod_mul_montgomery(3)|BN_mod_mul_montgomery(3)> 
 
 =cut
 
 =cut