From 0ef85c7f4512570a02c4ff5d95a275ecf225702a Mon Sep 17 00:00:00 2001 From: Geoff Thorpe Date: Wed, 5 Nov 2003 19:30:29 +0000 Subject: [PATCH] This is a revert of my previous commit to "improve" the declaration of constant BIGNUMs. It turns out that this trips up different but equally useful compiler warnings to -Wcast-qual, and so wasn't worth the ugliness it created. (Thanks to Ulf for the forehead-slap.) --- crypto/bn/bn.h | 21 --------------------- crypto/bn/bn_lib.c | 8 -------- crypto/bn/bn_nist.c | 31 +++++++++++++++---------------- 3 files changed, 15 insertions(+), 45 deletions(-) diff --git a/crypto/bn/bn.h b/crypto/bn/bn.h index 5c648ea011..a46fe842cf 100644 --- a/crypto/bn/bn.h +++ b/crypto/bn/bn.h @@ -252,27 +252,6 @@ typedef struct bignum_st int flags; } BIGNUM; -/* Declaring static BIGNUMs as constant is tricky in C; the 'd' data can't be - * pre-declared const without having to cast away the const when declaring the - * BIGNUM. We use this alternative type for declaring const BIGNUMs. See - * bn_nist.c for examples. */ -typedef struct bignum_c_st - { - const BN_ULONG *d; - int top; - int dmax; - int neg; - int flags; - } BIGNUM_C; -#ifdef BN_DEBUG -/* Use a function to do this so that we can type-check the pointer we're - * casting */ -const BIGNUM *BIGNUM_CONST(const BIGNUM_C *bn); -#else -/* Use a macro instead */ -#define BIGNUM_CONST(bn) ((const BIGNUM *)bn) -#endif - /* Used for temp variables (declaration hidden in bn_lcl.h) */ typedef struct bignum_ctx BN_CTX; diff --git a/crypto/bn/bn_lib.c b/crypto/bn/bn_lib.c index 85b72e0eeb..1f45b09d08 100644 --- a/crypto/bn/bn_lib.c +++ b/crypto/bn/bn_lib.c @@ -887,11 +887,3 @@ int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b, } return bn_cmp_words(a,b,cl); } - -/* See the comments surrounding BIGNUM_C in bn.h */ -#ifdef BN_DEBUG -const BIGNUM *BIGNUM_CONST(const BIGNUM_C *bn) - { - return (const BIGNUM *)bn; - } -#endif diff --git a/crypto/bn/bn_nist.c b/crypto/bn/bn_nist.c index 79f7c2ef28..6aa196f6f8 100644 --- a/crypto/bn/bn_nist.c +++ b/crypto/bn/bn_nist.c @@ -127,40 +127,39 @@ const static BN_ULONG _nist_p_521[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0x01}; #endif -static const BIGNUM_C bn_nist_p_192 = - { _nist_p_192, BN_NIST_192_TOP, BN_NIST_192_TOP, 0, BN_FLG_STATIC_DATA }; -static const BIGNUM_C bn_nist_p_224 = - { _nist_p_224, BN_NIST_224_TOP, BN_NIST_224_TOP, 0, BN_FLG_STATIC_DATA }; -static const BIGNUM_C bn_nist_p_256 = - { _nist_p_256, BN_NIST_256_TOP, BN_NIST_256_TOP, 0, BN_FLG_STATIC_DATA }; -static const BIGNUM_C bn_nist_p_384 = - { _nist_p_384, BN_NIST_384_TOP, BN_NIST_384_TOP, 0, BN_FLG_STATIC_DATA }; -static const BIGNUM_C bn_nist_p_521 = - { _nist_p_521, BN_NIST_521_TOP, BN_NIST_521_TOP, 0, BN_FLG_STATIC_DATA }; - const BIGNUM *BN_get0_nist_prime_192(void) { - return BIGNUM_CONST(&bn_nist_p_192); + static BIGNUM const_nist_192 = { (BN_ULONG *)_nist_p_192, + BN_NIST_192_TOP, BN_NIST_192_TOP, 0, BN_FLG_STATIC_DATA }; + return &const_nist_192; } const BIGNUM *BN_get0_nist_prime_224(void) { - return BIGNUM_CONST(&bn_nist_p_224); + static BIGNUM const_nist_224 = { (BN_ULONG *)_nist_p_224, + BN_NIST_224_TOP, BN_NIST_224_TOP, 0, BN_FLG_STATIC_DATA }; + return &const_nist_224; } const BIGNUM *BN_get0_nist_prime_256(void) { - return BIGNUM_CONST(&bn_nist_p_256); + static BIGNUM const_nist_256 = { (BN_ULONG *)_nist_p_256, + BN_NIST_256_TOP, BN_NIST_256_TOP, 0, BN_FLG_STATIC_DATA }; + return &const_nist_256; } const BIGNUM *BN_get0_nist_prime_384(void) { - return BIGNUM_CONST(&bn_nist_p_384); + static BIGNUM const_nist_384 = { (BN_ULONG *)_nist_p_384, + BN_NIST_384_TOP, BN_NIST_384_TOP, 0, BN_FLG_STATIC_DATA }; + return &const_nist_384; } const BIGNUM *BN_get0_nist_prime_521(void) { - return BIGNUM_CONST(&bn_nist_p_521); + static BIGNUM const_nist_521 = { (BN_ULONG *)_nist_p_521, + BN_NIST_521_TOP, BN_NIST_521_TOP, 0, BN_FLG_STATIC_DATA }; + return &const_nist_521; } /* some misc internal functions */ -- 2.25.1