Document a change I'd already made, and at the same time, correct the

change to work properly; BN_zero() should set 'neg' to zero as well as
'top' to match the behaviour of BN_new().
This commit is contained in:
Geoff Thorpe 2004-03-13 22:10:15 +00:00
parent 30fbcaa213
commit 9e051bac13
3 changed files with 9 additions and 4 deletions

View File

@ -4,6 +4,10 @@
Changes between 0.9.7c and 0.9.8 [xx XXX xxxx] Changes between 0.9.7c and 0.9.8 [xx XXX xxxx]
*) BN_CTX_get() should return zero-valued bignums, providing the same
initialised value as BN_new().
[Geoff Thorpe, suggested by Ulf Möller]
*) Support for inhibitAnyPolicy certificate extension. *) Support for inhibitAnyPolicy certificate extension.
[Steve Henson] [Steve Henson]
@ -21,7 +25,7 @@
some point, these tighter rules will become openssl's default to improve some point, these tighter rules will become openssl's default to improve
maintainability, though the assert()s and other overheads will remain only maintainability, though the assert()s and other overheads will remain only
in debugging configurations. See bn.h for more details. in debugging configurations. See bn.h for more details.
[Geoff Thorpe] [Geoff Thorpe, Nils Larsch, Ulf Möller]
*) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure *) BN_CTX_init() has been deprecated, as BN_CTX is an opaque structure
that can only be obtained through BN_CTX_new() (which implicitly that can only be obtained through BN_CTX_new() (which implicitly

View File

@ -140,6 +140,7 @@ void BN_CTX_start(BN_CTX *ctx)
BIGNUM *BN_CTX_get(BN_CTX *ctx) BIGNUM *BN_CTX_get(BN_CTX *ctx)
{ {
BIGNUM *ret;
/* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically, /* Note: If BN_CTX_get is ever changed to allocate BIGNUMs dynamically,
* make sure that if BN_CTX_get fails once it will return NULL again * make sure that if BN_CTX_get fails once it will return NULL again
* until BN_CTX_end is called. (This is so that callers have to check * until BN_CTX_end is called. (This is so that callers have to check
@ -155,9 +156,10 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx)
} }
return NULL; return NULL;
} }
ret = ctx->bn + (ctx->tos++);
/* always return a 'zeroed' bignum */ /* always return a 'zeroed' bignum */
ctx->bn[ctx->tos].top = 0; BN_zero(ret);
return (&(ctx->bn[ctx->tos++])); return ret;
} }
void BN_CTX_end(BN_CTX *ctx) void BN_CTX_end(BN_CTX *ctx)

View File

@ -214,7 +214,6 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
res=BN_CTX_get(ctx); res=BN_CTX_get(ctx);
else res=dv; else res=dv;
if (sdiv == NULL || res == NULL) goto err; if (sdiv == NULL || res == NULL) goto err;
tmp->neg=0;
/* First we normalise the numbers */ /* First we normalise the numbers */
norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2);