mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-29 18:27:29 +02:00
sp_int.h and ecc.h: add one more to SP_INT_DIGITS and FP_SIZE_ECC, to accommodate extra digit used by sp_mul(), sp_mulmod(), sp_sqr(), and sp_sqrmod().
This commit is contained in:
@ -322,7 +322,8 @@ typedef struct ecc_set_type {
|
||||
#endif
|
||||
|
||||
/* determine buffer size */
|
||||
#define FP_SIZE_ECC (FP_MAX_BITS_ECC/DIGIT_BIT)
|
||||
/* Add one to accommodate extra digit used by sp_mul(), sp_mulmod(), sp_sqr(), and sp_sqrmod(). */
|
||||
#define FP_SIZE_ECC ((FP_MAX_BITS_ECC/DIGIT_BIT) + 1)
|
||||
|
||||
|
||||
/* This needs to match the size of the fp_int struct, except the
|
||||
|
@ -319,9 +319,10 @@ typedef struct sp_ecc_ctx {
|
||||
/* Calculate number of digits to have in an sp_int based maximum size of
|
||||
* numbers in bits that will be used.
|
||||
* Double the size to hold multiplication result.
|
||||
* Add one to accommodate extra digit used by sp_mul(), sp_mulmod(), sp_sqr(), and sp_sqrmod().
|
||||
*/
|
||||
#define SP_INT_DIGITS \
|
||||
(((SP_INT_BITS + (SP_WORD_SIZE - 1)) * 2 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
((((SP_INT_BITS + (SP_WORD_SIZE - 1)) * 2 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
|
||||
#ifndef SP_INT_DIGITS
|
||||
@ -331,41 +332,41 @@ typedef struct sp_ecc_ctx {
|
||||
#if !defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_HAVE_SP_DH) && \
|
||||
!defined(WOLFSSL_HAVE_SP_ECC)
|
||||
#if !defined(NO_RSA) || !defined(NO_DH) || !defined(NO_DSA)
|
||||
#define SP_INT_DIGITS ((6144 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((6144 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#elif defined(HAVE_ECC)
|
||||
#define SP_INT_DIGITS \
|
||||
((2 * ( 521 + SP_WORD_SIZE) + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
(((2 * ( 521 + SP_WORD_SIZE) + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#elif !defined(NO_PWDBASED) && defined(WOLFSSL_SHA512)
|
||||
#define SP_INT_DIGITS (( 512 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS ((( 512 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#else
|
||||
#define SP_INT_DIGITS (( 256 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS ((( 256 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
#elif !defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_HAVE_SP_DH)
|
||||
#ifdef WOLFSSL_SP_MATH_ALL
|
||||
#define SP_INT_DIGITS \
|
||||
((2 * ( 521 + SP_WORD_SIZE) + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
(((2 * ( 521 + SP_WORD_SIZE) + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#elif defined(WOLFSSL_SP_384)
|
||||
#define SP_INT_DIGITS (( 768 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS ((( 768 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#else
|
||||
#define SP_INT_DIGITS (( 512 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS ((( 512 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
#elif defined(WOLFSSL_SP_4096)
|
||||
#if defined(WOLFSSL_HAVE_SP_DH)
|
||||
#define SP_INT_DIGITS ((8192 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((8192 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#else
|
||||
#define SP_INT_DIGITS ((4096 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((4096 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
#elif !defined(WOLFSSL_SP_NO_3072)
|
||||
#if defined(WOLFSSL_HAVE_SP_DH)
|
||||
#define SP_INT_DIGITS ((6144 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((6144 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#else
|
||||
#define SP_INT_DIGITS ((3072 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((3072 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
#else
|
||||
#if defined(WOLFSSL_HAVE_SP_DH)
|
||||
#define SP_INT_DIGITS ((4096 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((4096 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#else
|
||||
#define SP_INT_DIGITS ((2048 + SP_WORD_SIZE) / SP_WORD_SIZE)
|
||||
#define SP_INT_DIGITS (((2048 + SP_WORD_SIZE) / SP_WORD_SIZE) + 1)
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user