mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Added new "WOLFSSL_DEBUG_MATH", which enables use of "mp_dump" to display information about an mp_int.
This commit is contained in:
@@ -40,6 +40,10 @@
|
||||
|
||||
#include <wolfssl/wolfcrypt/integer.h>
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
#ifndef NO_WOLFSSL_SMALL_STACK
|
||||
#ifndef WOLFSSL_SMALL_STACK
|
||||
#define WOLFSSL_SMALL_STACK
|
||||
@@ -4628,7 +4632,8 @@ int mp_read_radix (mp_int * a, const char *str, int radix)
|
||||
}
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY)
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \
|
||||
defined(WOLFSSL_DEBUG_MATH)
|
||||
|
||||
/* returns size of ASCII representation */
|
||||
int mp_radix_size (mp_int *a, int radix, int *size)
|
||||
@@ -4739,7 +4744,36 @@ int mp_toradix (mp_int *a, char *str, int radix)
|
||||
return MP_OKAY;
|
||||
}
|
||||
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) */
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
void mp_dump(const char* desc, mp_int* a, byte verbose)
|
||||
{
|
||||
char *buffer;
|
||||
int size = a->alloc;
|
||||
|
||||
buffer = (char*)XMALLOC(size * 2, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (buffer == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
printf("%s: ptr=%p, used=%d, sign=%d, size=%d, mpd=%d\n",
|
||||
desc, a, a->used, a->sign, size, (int)sizeof(mp_digit));
|
||||
|
||||
mp_toradix(a, buffer, 16);
|
||||
printf(" %s\n ", buffer);
|
||||
|
||||
if (verbose) {
|
||||
int i;
|
||||
for(i=0; i<a->alloc * (int)sizeof(mp_digit); i++) {
|
||||
printf("%02x ", *(((byte*)a->dp) + i));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
XFREE(buffer, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
#endif /* WOLFSSL_DEBUG_MATH */
|
||||
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(WOLFSSL_DEBUG_MATH) */
|
||||
|
||||
#endif /* USE_FAST_MATH */
|
||||
|
||||
|
@@ -50,6 +50,10 @@
|
||||
#include <wolfssl/wolfcrypt/tfm.h>
|
||||
#include <wolfcrypt/src/asm.c> /* will define asm MACROS or C ones */
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
#include <stdio.h>
|
||||
#endif
|
||||
|
||||
|
||||
/* math settings check */
|
||||
word32 CheckRunTimeSettings(void)
|
||||
@@ -2328,7 +2332,8 @@ int mp_montgomery_calc_normalization(mp_int *a, mp_int *b)
|
||||
#endif /* WOLFSSL_KEYGEN || HAVE_ECC */
|
||||
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY)
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \
|
||||
defined(WOLFSSL_DEBUG_MATH)
|
||||
|
||||
static const int lnz[16] = {
|
||||
4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
|
||||
@@ -2475,7 +2480,7 @@ int mp_mod_d(fp_int *a, fp_digit b, fp_digit *c)
|
||||
return fp_mod_d(a, b, c);
|
||||
}
|
||||
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) */
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(WOLFSSL_DEBUG_MATH) */
|
||||
|
||||
#ifdef WOLFSSL_KEY_GEN
|
||||
|
||||
@@ -2918,7 +2923,8 @@ int mp_cnt_lsb(fp_int* a)
|
||||
|
||||
#endif /* HAVE_ECC */
|
||||
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY)
|
||||
#if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \
|
||||
defined(WOLFSSL_DEBUG_MATH)
|
||||
|
||||
/* returns size of ASCII representation */
|
||||
int mp_radix_size (mp_int *a, int radix, int *size)
|
||||
@@ -3026,7 +3032,32 @@ int mp_toradix (mp_int *a, char *str, int radix)
|
||||
return FP_OKAY;
|
||||
}
|
||||
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) */
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
void mp_dump(const char* desc, mp_int* a, byte verbose)
|
||||
{
|
||||
char buffer[FP_SIZE * sizeof(fp_digit) * 2];
|
||||
int size = FP_SIZE;
|
||||
|
||||
#ifdef ALT_ECC_SIZE
|
||||
size = a->size;
|
||||
#endif
|
||||
|
||||
printf("%s: ptr=%p, used=%d, sign=%d, size=%d, fpd=%d\n",
|
||||
desc, a, a->used, a->sign, size, (int)sizeof(fp_digit));
|
||||
|
||||
mp_toradix(a, buffer, 16);
|
||||
printf(" %s\n ", buffer);
|
||||
|
||||
if (verbose) {
|
||||
int i;
|
||||
for(i=0; i<size * (int)sizeof(fp_digit); i++) {
|
||||
printf("%x ", *(((byte*)a->dp) + i));
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
#endif /* WOLFSSL_DEBUG_MATH */
|
||||
|
||||
#endif /* defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || defined(WOLFSSL_DEBUG_MATH) */
|
||||
|
||||
#endif /* USE_FAST_MATH */
|
||||
|
||||
|
@@ -310,6 +310,12 @@ int mp_init_multi(mp_int* a, mp_int* b, mp_int* c, mp_int* d, mp_int* e,
|
||||
int mp_toradix (mp_int *a, char *str, int radix);
|
||||
int mp_radix_size (mp_int * a, int radix, int *size);
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
void mp_dump(const char* desc, mp_int* a, byte verbose);
|
||||
#else
|
||||
#define mp_dump(desc, a, verbose)
|
||||
#endif
|
||||
|
||||
#if defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN)
|
||||
int mp_sqrmod(mp_int* a, mp_int* b, mp_int* c);
|
||||
#endif
|
||||
|
@@ -645,6 +645,12 @@ void mp_rshb(mp_int *a, int x);
|
||||
int mp_toradix (mp_int *a, char *str, int radix);
|
||||
int mp_radix_size (mp_int * a, int radix, int *size);
|
||||
|
||||
#ifdef WOLFSSL_DEBUG_MATH
|
||||
void mp_dump(const char* desc, mp_int* a, byte verbose);
|
||||
#else
|
||||
#define mp_dump(desc, a, verbose)
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
int mp_read_radix(mp_int* a, const char* str, int radix);
|
||||
void mp_set(fp_int *a, fp_digit b);
|
||||
|
Reference in New Issue
Block a user