From 55525742f4c2bf416013fc3a75ec642775d97f80 Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Mon, 11 Jun 2007 16:33:03 +0000 Subject: [PATCH] Privatize BN_*_no_branch. --- crypto/bn/bn.h | 4 ---- crypto/bn/bn_div.c | 8 +++++--- crypto/bn/bn_gcd.c | 4 +++- util/libeay.num | 2 -- 4 files changed, 8 insertions(+), 10 deletions(-) diff --git a/crypto/bn/bn.h b/crypto/bn/bn.h index 68ed77eaab..83f87ffea6 100644 --- a/crypto/bn/bn.h +++ b/crypto/bn/bn.h @@ -446,8 +446,6 @@ void BN_set_negative(BIGNUM *b, int n); int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); -int BN_div_no_branch(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, - const BIGNUM *d, BN_CTX *ctx); #define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, BN_CTX *ctx); @@ -517,8 +515,6 @@ int BN_gcd(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx); int BN_kronecker(const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx); /* returns -2 for error */ BIGNUM *BN_mod_inverse(BIGNUM *ret, const BIGNUM *a, const BIGNUM *n,BN_CTX *ctx); -BIGNUM *BN_mod_inverse_no_branch(BIGNUM *ret, - const BIGNUM *A, const BIGNUM *n,BN_CTX *ctx); BIGNUM *BN_mod_sqrt(BIGNUM *ret, const BIGNUM *a, const BIGNUM *n,BN_CTX *ctx); diff --git a/crypto/bn/bn_div.c b/crypto/bn/bn_div.c index 514b2c2c82..8655eb118e 100644 --- a/crypto/bn/bn_div.c +++ b/crypto/bn/bn_div.c @@ -169,13 +169,15 @@ int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, #endif /* OPENSSL_NO_ASM */ -/* BN_div computes dv := num / divisor, rounding towards zero, and sets up - * rm such that dv*divisor + rm = num holds. +/* BN_div[_no_branch] computes dv := num / divisor, rounding towards + * zero, and sets up rm such that dv*divisor + rm = num holds. * Thus: * dv->neg == num->neg ^ divisor->neg (unless the result is zero) * rm->neg == num->neg (unless the remainder is zero) * If 'dv' or 'rm' is NULL, the respective value is not returned. */ +static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, + const BIGNUM *divisor, BN_CTX *ctx); int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, BN_CTX *ctx) { @@ -406,7 +408,7 @@ err: /* BN_div_no_branch is a special version of BN_div. It does not contain * branches that may leak sensitive information. */ -int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, +static int BN_div_no_branch(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, BN_CTX *ctx) { int norm_shift,i,loop; diff --git a/crypto/bn/bn_gcd.c b/crypto/bn/bn_gcd.c index 85e4b50c10..4a352119ba 100644 --- a/crypto/bn/bn_gcd.c +++ b/crypto/bn/bn_gcd.c @@ -203,6 +203,8 @@ err: /* solves ax == 1 (mod n) */ +static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); BIGNUM *BN_mod_inverse(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx) { @@ -501,7 +503,7 @@ err: /* BN_mod_inverse_no_branch is a special version of BN_mod_inverse. * It does not contain branches that may leak sensitive information. */ -BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in, +static BIGNUM *BN_mod_inverse_no_branch(BIGNUM *in, const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx) { BIGNUM *A,*B,*X,*Y,*M,*D,*T,*R=NULL; diff --git a/util/libeay.num b/util/libeay.num index 9b9cf7c954..805b2af5f6 100755 --- a/util/libeay.num +++ b/util/libeay.num @@ -3909,8 +3909,6 @@ BIO_f_asn1 4289 EXIST::FUNCTION: BIO_asn1_set_suffix 4290 EXIST::FUNCTION: BIO_asn1_get_suffix 4291 EXIST::FUNCTION: PKCS7_stream 4292 EXIST::FUNCTION: -BN_div_no_branch 4293 EXIST::FUNCTION: -BN_mod_inverse_no_branch 4294 EXIST::FUNCTION: SEED_decrypt 4295 EXIST::FUNCTION:SEED SEED_encrypt 4296 EXIST::FUNCTION:SEED SEED_cbc_encrypt 4297 EXIST::FUNCTION:SEED -- 2.25.1