Merge pull request #5579 from douzzer/20220911-fixes-re-multi-test

20220911-fixes-re-multi-test
This commit is contained in:
Sean Parkinson
2022-09-16 08:29:41 +10:00
committed by GitHub
3 changed files with 51 additions and 38 deletions

View File

@ -61,9 +61,9 @@ libwolfssl.ko:
@mkdir -p linuxkm src wolfcrypt/src wolfcrypt/test @mkdir -p linuxkm src wolfcrypt/src wolfcrypt/test
@if test ! -h $(SRC_TOP)/Kbuild; then ln -s $(MODULE_TOP)/Kbuild $(SRC_TOP)/Kbuild; fi @if test ! -h $(SRC_TOP)/Kbuild; then ln -s $(MODULE_TOP)/Kbuild $(SRC_TOP)/Kbuild; fi
ifeq "$(ENABLED_LINUXKM_PIE)" "yes" ifeq "$(ENABLED_LINUXKM_PIE)" "yes"
+$(MAKE) -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP) CC_FLAGS_FTRACE= +$(MAKE) -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP) $(KBUILD_EXTRA_FLAGS) CC_FLAGS_FTRACE=
else else
+$(MAKE) -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP) +$(MAKE) -C $(KERNEL_ROOT) M=$(MODULE_TOP) src=$(SRC_TOP) $(KBUILD_EXTRA_FLAGS)
endif endif
libwolfssl.ko.signed: libwolfssl.ko libwolfssl.ko.signed: libwolfssl.ko

View File

@ -4352,13 +4352,45 @@ static int _sp_mont_red(sp_int* a, sp_int* m, sp_int_digit mp);
*/ */
static void _sp_zero(sp_int* a) static void _sp_zero(sp_int* a)
{ {
a->used = 0; sp_int_minimal* am = (sp_int_minimal *)a;
a->dp[0] = 0; am->used = 0;
am->dp[0] = 0;
#ifdef WOLFSSL_SP_INT_NEGATIVE #ifdef WOLFSSL_SP_INT_NEGATIVE
a->sign = MP_ZPOS; am->sign = MP_ZPOS;
#endif #endif
} }
/* Initialize the multi-precision number to be zero with a given max size.
*
* @param [out] a SP integer.
* @param [in] size Number of words to say are available.
*
* @return MP_OKAY on success.
* @return MP_VAL when a is NULL.
*/
int sp_init_size(sp_int* a, int size)
{
sp_int_minimal* am = (sp_int_minimal *)a;
int err = MP_OKAY;
if (a == NULL) {
err = MP_VAL;
}
if (err == MP_OKAY) {
#ifdef HAVE_WOLF_BIGINT
wc_bigint_init(&am->raw);
#endif
_sp_zero(a);
}
if (err == MP_OKAY) {
am->size = size;
}
return err;
}
/* Initialize the multi-precision number to be zero. /* Initialize the multi-precision number to be zero.
* *
* @param [out] a SP integer. * @param [out] a SP integer.
@ -4368,39 +4400,7 @@ static void _sp_zero(sp_int* a)
*/ */
int sp_init(sp_int* a) int sp_init(sp_int* a)
{ {
int err = MP_OKAY; return sp_init_size(a, SP_INT_DIGITS);
if (a == NULL) {
err = MP_VAL;
}
if (err == MP_OKAY) {
#ifdef HAVE_WOLF_BIGINT
wc_bigint_init(&a->raw);
#endif
_sp_zero(a);
a->size = SP_INT_DIGITS;
}
return err;
}
/* Initialize the multi-precision number to be zero and have a maximum size.
*
* @param [out] a SP integer.
* @param [in] size Number of words to say are available.
*
* @return MP_OKAY on success.
* @return MP_VAL when a is NULL.
*/
int sp_init_size(sp_int* a, int size)
{
int err = sp_init(a);
if (err == MP_OKAY) {
a->size = size;
}
return err;
} }
#if !defined(WOLFSSL_RSA_PUBLIC_ONLY) || !defined(NO_DH) || defined(HAVE_ECC) #if !defined(WOLFSSL_RSA_PUBLIC_ONLY) || !defined(NO_DH) || defined(HAVE_ECC)

View File

@ -778,6 +778,19 @@ typedef struct sp_int {
sp_int_digit dp[SP_INT_DIGITS]; sp_int_digit dp[SP_INT_DIGITS];
} sp_int; } sp_int;
typedef struct sp_int_minimal {
int used;
int size;
#ifdef WOLFSSL_SP_INT_NEGATIVE
int sign;
#endif
#ifdef HAVE_WOLF_BIGINT
struct WC_BIGINT raw;
#endif
/** First digit of number. */
sp_int_digit dp[1];
} sp_int_minimal;
/* Multi-precision integer type is SP integer type. */ /* Multi-precision integer type is SP integer type. */
typedef sp_int mp_int; typedef sp_int mp_int;
/* Multi-precision integer digit type is SP integer digit type. /* Multi-precision integer digit type is SP integer digit type.