提交 9e051bac 编写于 作者: G Geoff Thorpe

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().
上级 30fbcaa2
...@@ -4,6 +4,10 @@ ...@@ -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 @@ ...@@ -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
......
...@@ -140,6 +140,7 @@ void BN_CTX_start(BN_CTX *ctx) ...@@ -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) ...@@ -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)
......
...@@ -214,7 +214,6 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor, ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册