diff --git a/wolfcrypt/src/sp_arm32.c b/wolfcrypt/src/sp_arm32.c index d0a850577..99d4935c7 100644 --- a/wolfcrypt/src/sp_arm32.c +++ b/wolfcrypt/src/sp_arm32.c @@ -37517,7 +37517,7 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_256 p[2]; #endif sp_point_256* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -37544,6 +37544,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 8, qX); sp_256_from_mp(q->y, 8, qY); sp_256_from_mp(q->z, 8, qZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); + q->infinity = sp_256_iszero_8(q->x) & + sp_256_iszero_8(q->y); sp_256_proj_point_add_8(p, p, q, tmp); } @@ -37610,6 +37614,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_proj_point_dbl_8(p, p, tmp); } @@ -37672,6 +37678,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_map_8(p, p, tmp); } @@ -46794,7 +46802,7 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_384 p[2]; #endif sp_point_384* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -46821,6 +46829,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 12, qX); sp_384_from_mp(q->y, 12, qY); sp_384_from_mp(q->z, 12, qZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); + q->infinity = sp_384_iszero_12(q->x) & + sp_384_iszero_12(q->y); sp_384_proj_point_add_12(p, p, q, tmp); } @@ -46887,6 +46899,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_proj_point_dbl_12(p, p, tmp); } @@ -46949,6 +46963,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_map_12(p, p, tmp); } diff --git a/wolfcrypt/src/sp_arm64.c b/wolfcrypt/src/sp_arm64.c index 88b0fc90c..478c39ed6 100644 --- a/wolfcrypt/src/sp_arm64.c +++ b/wolfcrypt/src/sp_arm64.c @@ -39072,7 +39072,7 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_256 p[2]; #endif sp_point_256* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -39099,6 +39099,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 4, qX); sp_256_from_mp(q->y, 4, qY); sp_256_from_mp(q->z, 4, qZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); + q->infinity = sp_256_iszero_4(q->x) & + sp_256_iszero_4(q->y); sp_256_proj_point_add_4(p, p, q, tmp); } @@ -39165,6 +39169,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 4, pX); sp_256_from_mp(p->y, 4, pY); sp_256_from_mp(p->z, 4, pZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); sp_256_proj_point_dbl_4(p, p, tmp); } @@ -39227,6 +39233,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 4, pX); sp_256_from_mp(p->y, 4, pY); sp_256_from_mp(p->z, 4, pZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); sp_256_map_4(p, p, tmp); } @@ -64708,7 +64716,7 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_384 p[2]; #endif sp_point_384* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -64735,6 +64743,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 6, qX); sp_384_from_mp(q->y, 6, qY); sp_384_from_mp(q->z, 6, qZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); + q->infinity = sp_384_iszero_6(q->x) & + sp_384_iszero_6(q->y); sp_384_proj_point_add_6(p, p, q, tmp); } @@ -64801,6 +64813,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 6, pX); sp_384_from_mp(p->y, 6, pY); sp_384_from_mp(p->z, 6, pZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); sp_384_proj_point_dbl_6(p, p, tmp); } @@ -64863,6 +64877,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 6, pX); sp_384_from_mp(p->y, 6, pY); sp_384_from_mp(p->z, 6, pZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); sp_384_map_6(p, p, tmp); } diff --git a/wolfcrypt/src/sp_armthumb.c b/wolfcrypt/src/sp_armthumb.c index 42909b897..0cd63fff2 100644 --- a/wolfcrypt/src/sp_armthumb.c +++ b/wolfcrypt/src/sp_armthumb.c @@ -41942,7 +41942,7 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_256 p[2]; #endif sp_point_256* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -41969,6 +41969,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 8, qX); sp_256_from_mp(q->y, 8, qY); sp_256_from_mp(q->z, 8, qZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); + q->infinity = sp_256_iszero_8(q->x) & + sp_256_iszero_8(q->y); sp_256_proj_point_add_8(p, p, q, tmp); } @@ -42035,6 +42039,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_proj_point_dbl_8(p, p, tmp); } @@ -42097,6 +42103,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_map_8(p, p, tmp); } @@ -52340,7 +52348,7 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_384 p[2]; #endif sp_point_384* q = NULL; - int err; + int err = MP_OKAY; #if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC) if (err == MP_OKAY) { @@ -52367,6 +52375,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 12, qX); sp_384_from_mp(q->y, 12, qY); sp_384_from_mp(q->z, 12, qZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); + q->infinity = sp_384_iszero_12(q->x) & + sp_384_iszero_12(q->y); sp_384_proj_point_add_12(p, p, q, tmp); } @@ -52433,6 +52445,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_proj_point_dbl_12(p, p, tmp); } @@ -52495,6 +52509,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_map_12(p, p, tmp); } diff --git a/wolfcrypt/src/sp_c32.c b/wolfcrypt/src/sp_c32.c index 087d6e16a..390a6b767 100644 --- a/wolfcrypt/src/sp_c32.c +++ b/wolfcrypt/src/sp_c32.c @@ -19143,6 +19143,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 10, qX); sp_256_from_mp(q->y, 10, qY); sp_256_from_mp(q->z, 10, qZ); + p->infinity = sp_256_iszero_10(p->x) & + sp_256_iszero_10(p->y); + q->infinity = sp_256_iszero_10(q->x) & + sp_256_iszero_10(q->y); sp_256_proj_point_add_10(p, p, q, tmp); } @@ -19209,6 +19213,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 10, pX); sp_256_from_mp(p->y, 10, pY); sp_256_from_mp(p->z, 10, pZ); + p->infinity = sp_256_iszero_10(p->x) & + sp_256_iszero_10(p->y); sp_256_proj_point_dbl_10(p, p, tmp); } @@ -19271,6 +19277,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 10, pX); sp_256_from_mp(p->y, 10, pY); sp_256_from_mp(p->z, 10, pZ); + p->infinity = sp_256_iszero_10(p->x) & + sp_256_iszero_10(p->y); sp_256_map_10(p, p, tmp); } @@ -26872,6 +26880,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 15, qX); sp_384_from_mp(q->y, 15, qY); sp_384_from_mp(q->z, 15, qZ); + p->infinity = sp_384_iszero_15(p->x) & + sp_384_iszero_15(p->y); + q->infinity = sp_384_iszero_15(q->x) & + sp_384_iszero_15(q->y); sp_384_proj_point_add_15(p, p, q, tmp); } @@ -26938,6 +26950,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 15, pX); sp_384_from_mp(p->y, 15, pY); sp_384_from_mp(p->z, 15, pZ); + p->infinity = sp_384_iszero_15(p->x) & + sp_384_iszero_15(p->y); sp_384_proj_point_dbl_15(p, p, tmp); } @@ -27000,6 +27014,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 15, pX); sp_384_from_mp(p->y, 15, pY); sp_384_from_mp(p->z, 15, pZ); + p->infinity = sp_384_iszero_15(p->x) & + sp_384_iszero_15(p->y); sp_384_map_15(p, p, tmp); } diff --git a/wolfcrypt/src/sp_c64.c b/wolfcrypt/src/sp_c64.c index 6172e8023..5983b9816 100644 --- a/wolfcrypt/src/sp_c64.c +++ b/wolfcrypt/src/sp_c64.c @@ -18926,6 +18926,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 5, qX); sp_256_from_mp(q->y, 5, qY); sp_256_from_mp(q->z, 5, qZ); + p->infinity = sp_256_iszero_5(p->x) & + sp_256_iszero_5(p->y); + q->infinity = sp_256_iszero_5(q->x) & + sp_256_iszero_5(q->y); sp_256_proj_point_add_5(p, p, q, tmp); } @@ -18992,6 +18996,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 5, pX); sp_256_from_mp(p->y, 5, pY); sp_256_from_mp(p->z, 5, pZ); + p->infinity = sp_256_iszero_5(p->x) & + sp_256_iszero_5(p->y); sp_256_proj_point_dbl_5(p, p, tmp); } @@ -19054,6 +19060,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 5, pX); sp_256_from_mp(p->y, 5, pY); sp_256_from_mp(p->z, 5, pZ); + p->infinity = sp_256_iszero_5(p->x) & + sp_256_iszero_5(p->y); sp_256_map_5(p, p, tmp); } @@ -26126,6 +26134,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 7, qX); sp_384_from_mp(q->y, 7, qY); sp_384_from_mp(q->z, 7, qZ); + p->infinity = sp_384_iszero_7(p->x) & + sp_384_iszero_7(p->y); + q->infinity = sp_384_iszero_7(q->x) & + sp_384_iszero_7(q->y); sp_384_proj_point_add_7(p, p, q, tmp); } @@ -26192,6 +26204,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 7, pX); sp_384_from_mp(p->y, 7, pY); sp_384_from_mp(p->z, 7, pZ); + p->infinity = sp_384_iszero_7(p->x) & + sp_384_iszero_7(p->y); sp_384_proj_point_dbl_7(p, p, tmp); } @@ -26254,6 +26268,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 7, pX); sp_384_from_mp(p->y, 7, pY); sp_384_from_mp(p->z, 7, pZ); + p->infinity = sp_384_iszero_7(p->x) & + sp_384_iszero_7(p->y); sp_384_map_7(p, p, tmp); } diff --git a/wolfcrypt/src/sp_cortexm.c b/wolfcrypt/src/sp_cortexm.c index 7abd4dc61..d3607ab33 100644 --- a/wolfcrypt/src/sp_cortexm.c +++ b/wolfcrypt/src/sp_cortexm.c @@ -22888,6 +22888,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 8, qX); sp_256_from_mp(q->y, 8, qY); sp_256_from_mp(q->z, 8, qZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); + q->infinity = sp_256_iszero_8(q->x) & + sp_256_iszero_8(q->y); sp_256_proj_point_add_8(p, p, q, tmp); } @@ -22954,6 +22958,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_proj_point_dbl_8(p, p, tmp); } @@ -23016,6 +23022,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 8, pX); sp_256_from_mp(p->y, 8, pY); sp_256_from_mp(p->z, 8, pZ); + p->infinity = sp_256_iszero_8(p->x) & + sp_256_iszero_8(p->y); sp_256_map_8(p, p, tmp); } @@ -30111,6 +30119,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 12, qX); sp_384_from_mp(q->y, 12, qY); sp_384_from_mp(q->z, 12, qZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); + q->infinity = sp_384_iszero_12(q->x) & + sp_384_iszero_12(q->y); sp_384_proj_point_add_12(p, p, q, tmp); } @@ -30177,6 +30189,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_proj_point_dbl_12(p, p, tmp); } @@ -30239,6 +30253,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 12, pX); sp_384_from_mp(p->y, 12, pY); sp_384_from_mp(p->z, 12, pZ); + p->infinity = sp_384_iszero_12(p->x) & + sp_384_iszero_12(p->y); sp_384_map_12(p, p, tmp); } diff --git a/wolfcrypt/src/sp_x86_64.c b/wolfcrypt/src/sp_x86_64.c index 19436d0f6..c4e26e1b8 100644 --- a/wolfcrypt/src/sp_x86_64.c +++ b/wolfcrypt/src/sp_x86_64.c @@ -24591,7 +24591,7 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_256 p[2]; #endif sp_point_256* q = NULL; - int err; + int err = MP_OKAY; #ifdef HAVE_INTEL_AVX2 word32 cpuid_flags = cpuid_get_flags(); #endif @@ -24621,6 +24621,10 @@ int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(q->x, 4, qX); sp_256_from_mp(q->y, 4, qY); sp_256_from_mp(q->z, 4, qZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); + q->infinity = sp_256_iszero_4(q->x) & + sp_256_iszero_4(q->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) @@ -24695,6 +24699,8 @@ int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, sp_256_from_mp(p->x, 4, pX); sp_256_from_mp(p->y, 4, pY); sp_256_from_mp(p->z, 4, pZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) @@ -24765,6 +24771,8 @@ int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ) sp_256_from_mp(p->x, 4, pX); sp_256_from_mp(p->y, 4, pY); sp_256_from_mp(p->z, 4, pZ); + p->infinity = sp_256_iszero_4(p->x) & + sp_256_iszero_4(p->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) @@ -49165,7 +49173,7 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_point_384 p[2]; #endif sp_point_384* q = NULL; - int err; + int err = MP_OKAY; #ifdef HAVE_INTEL_AVX2 word32 cpuid_flags = cpuid_get_flags(); #endif @@ -49195,6 +49203,10 @@ int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(q->x, 6, qX); sp_384_from_mp(q->y, 6, qY); sp_384_from_mp(q->z, 6, qZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); + q->infinity = sp_384_iszero_6(q->x) & + sp_384_iszero_6(q->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) @@ -49269,6 +49281,8 @@ int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, sp_384_from_mp(p->x, 6, pX); sp_384_from_mp(p->y, 6, pY); sp_384_from_mp(p->z, 6, pZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags)) @@ -49339,6 +49353,8 @@ int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ) sp_384_from_mp(p->x, 6, pX); sp_384_from_mp(p->y, 6, pY); sp_384_from_mp(p->z, 6, pZ); + p->infinity = sp_384_iszero_6(p->x) & + sp_384_iszero_6(p->y); #ifdef HAVE_INTEL_AVX2 if (IS_INTEL_BMI2(cpuid_flags) && IS_INTEL_ADX(cpuid_flags))