From 1939187922a8240b3dd18c455da3636ac754983d Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Tue, 28 Oct 2014 23:16:06 +0000 Subject: [PATCH] Make bn opaque Reviewed-by: Tim Hudson --- crypto/bn/bn.h | 55 ---------------------------------------------- crypto/bn/bn_lcl.h | 54 +++++++++++++++++++++++++++++++++++++++++++++ util/libeay.num | 8 +++---- 3 files changed, 58 insertions(+), 59 deletions(-) diff --git a/crypto/bn/bn.h b/crypto/bn/bn.h index cdfc0ef6a8..55d5b9e4bd 100644 --- a/crypto/bn/bn.h +++ b/crypto/bn/bn.h @@ -292,55 +292,6 @@ typedef struct bn_recp_ctx_st BN_RECP_CTX; typedef struct bn_gencb_st BN_GENCB; #endif -struct bignum_st - { - BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */ - int top; /* Index of last used d +1. */ - /* The next are internal book keeping for bn_expand. */ - int dmax; /* Size of the d array. */ - int neg; /* one if the number is negative */ - int flags; - }; - -/* Used for montgomery multiplication */ -struct bn_mont_ctx_st - { - int ri; /* number of bits in R */ - BIGNUM RR; /* 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[2];/* least significant word(s) of Ni; - (type changed with 0.9.9, was "BN_ULONG n0;" before) */ - int flags; - }; - -/* Used for reciprocal division/mod functions - * It cannot be shared between threads - */ -struct bn_recp_ctx_st - { - BIGNUM N; /* the divisor */ - BIGNUM Nr; /* the reciprocal */ - int num_bits; - int shift; - int flags; - }; - -/* Used for slow "generation" functions. */ -struct bn_gencb_st - { - unsigned int ver; /* To handle binary (in)compatibility */ - void *arg; /* callback-specific data */ - union - { - /* if(ver==1) - handles old style callbacks */ - void (*cb_1)(int, int, void *); - /* if(ver==2) - new callback style */ - int (*cb_2)(int, int, BN_GENCB *); - } cb; - }; - /* Wrapper function to make using BN_GENCB easier, */ int BN_GENCB_call(BN_GENCB *cb, int a, int b); @@ -400,9 +351,6 @@ void BN_zero_ex(BIGNUM *a); const BIGNUM *BN_value_one(void); char * BN_options(void); BN_CTX *BN_CTX_new(void); -#ifndef OPENSSL_NO_DEPRECATED -void BN_CTX_init(BN_CTX *c); -#endif void BN_CTX_free(BN_CTX *c); void BN_CTX_start(BN_CTX *ctx); BIGNUM *BN_CTX_get(BN_CTX *ctx); @@ -415,7 +363,6 @@ int BN_num_bits(const BIGNUM *a); int BN_num_bits_word(BN_ULONG l); int BN_security_bits(int L, int N); BIGNUM *BN_new(void); -void BN_init(BIGNUM *); void BN_clear_free(BIGNUM *a); BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); void BN_swap(BIGNUM *a, BIGNUM *b); @@ -548,7 +495,6 @@ int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BN_GENCB *cb); BN_MONT_CTX *BN_MONT_CTX_new(void ); -void BN_MONT_CTX_init(BN_MONT_CTX *ctx); int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b, BN_MONT_CTX *mont, BN_CTX *ctx); int BN_to_montgomery(BIGNUM *r,const BIGNUM *a, BN_MONT_CTX *mont, BN_CTX *ctx); @@ -589,7 +535,6 @@ void BN_set_params(int mul,int high,int low,int mont); int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */ #endif -void BN_RECP_CTX_init(BN_RECP_CTX *recp); BN_RECP_CTX *BN_RECP_CTX_new(void); void BN_RECP_CTX_free(BN_RECP_CTX *recp); int BN_RECP_CTX_set(BN_RECP_CTX *recp,const BIGNUM *rdiv,BN_CTX *ctx); diff --git a/crypto/bn/bn_lcl.h b/crypto/bn/bn_lcl.h index 116dac458c..5ca1b9c911 100644 --- a/crypto/bn/bn_lcl.h +++ b/crypto/bn/bn_lcl.h @@ -119,6 +119,56 @@ extern "C" { #endif +struct bignum_st + { + BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */ + int top; /* Index of last used d +1. */ + /* The next are internal book keeping for bn_expand. */ + int dmax; /* Size of the d array. */ + int neg; /* one if the number is negative */ + int flags; + }; + +/* Used for montgomery multiplication */ +struct bn_mont_ctx_st + { + int ri; /* number of bits in R */ + BIGNUM RR; /* 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[2];/* least significant word(s) of Ni; + (type changed with 0.9.9, was "BN_ULONG n0;" before) */ + int flags; + }; + +/* Used for reciprocal division/mod functions + * It cannot be shared between threads + */ +struct bn_recp_ctx_st + { + BIGNUM N; /* the divisor */ + BIGNUM Nr; /* the reciprocal */ + int num_bits; + int shift; + int flags; + }; + +/* Used for slow "generation" functions. */ +struct bn_gencb_st + { + unsigned int ver; /* To handle binary (in)compatibility */ + void *arg; /* callback-specific data */ + union + { + /* if(ver==1) - handles old style callbacks */ + void (*cb_1)(int, int, void *); + /* if(ver==2) - new callback style */ + int (*cb_2)(int, int, BN_GENCB *); + } cb; + }; + + /* * BN_window_bits_for_exponent_size -- macro for sliding window mod_exp functions * @@ -506,6 +556,10 @@ extern "C" { } #endif /* !BN_LLONG */ +void BN_init(BIGNUM *a); +void BN_RECP_CTX_init(BN_RECP_CTX *recp); +void BN_MONT_CTX_init(BN_MONT_CTX *ctx); + void bn_mul_normal(BN_ULONG *r,BN_ULONG *a,int na,BN_ULONG *b,int nb); void bn_mul_comba8(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b); void bn_mul_comba4(BN_ULONG *r,BN_ULONG *a,BN_ULONG *b); diff --git a/util/libeay.num b/util/libeay.num index 7d483f3b8a..3f4396f0bd 100755 --- a/util/libeay.num +++ b/util/libeay.num @@ -1064,7 +1064,7 @@ asn1_add_error 1091 EXIST::FUNCTION: d2i_ASN1_BMPSTRING 1092 EXIST::FUNCTION: i2d_ASN1_BMPSTRING 1093 EXIST::FUNCTION: BIO_f_ber 1094 NOEXIST::FUNCTION: -BN_init 1095 EXIST::FUNCTION: +BN_init 1095 NOEXIST::FUNCTION: COMP_CTX_new 1096 EXIST::FUNCTION: COMP_CTX_free 1097 EXIST::FUNCTION: COMP_CTX_compress_block 1098 NOEXIST::FUNCTION: @@ -1097,15 +1097,15 @@ bn_mul_recursive 1124 NOEXIST::FUNCTION: bn_mul_part_recursive 1125 NOEXIST::FUNCTION: bn_sqr_recursive 1126 NOEXIST::FUNCTION: bn_mul_low_normal 1127 NOEXIST::FUNCTION: -BN_RECP_CTX_init 1128 EXIST::FUNCTION: +BN_RECP_CTX_init 1128 NOEXIST::FUNCTION: BN_RECP_CTX_new 1129 EXIST::FUNCTION: BN_RECP_CTX_free 1130 EXIST::FUNCTION: BN_RECP_CTX_set 1131 EXIST::FUNCTION: BN_mod_mul_reciprocal 1132 EXIST::FUNCTION: BN_mod_exp_recp 1133 EXIST::FUNCTION: BN_div_recp 1134 EXIST::FUNCTION: -BN_CTX_init 1135 EXIST::FUNCTION:DEPRECATED -BN_MONT_CTX_init 1136 EXIST::FUNCTION: +BN_CTX_init 1135 NOEXIST::FUNCTION: +BN_MONT_CTX_init 1136 NOEXIST::FUNCTION: RAND_get_rand_method 1137 EXIST::FUNCTION: PKCS7_add_attribute 1138 EXIST::FUNCTION: PKCS7_add_signed_attribute 1139 EXIST::FUNCTION: -- 2.34.1