Hello, This change introduces a function _gcry_mpih_add_1_lli for one limb addition with least leak.
diff --git a/mpi/mpi-inline.h b/mpi/mpi-inline.h index 090e8a94..6954affb 100644 --- a/mpi/mpi-inline.h +++ b/mpi/mpi-inline.h @@ -68,6 +68,28 @@ _gcry_mpih_add_1( mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, } +/* Do same calculation as _gcry_mpih_add_1 does (under the condition + of RES_PTR == S1_PTR), Least Leak Intended. */ +static inline mpi_limb_t +_gcry_mpih_add_1_lli (mpi_ptr_t s1_ptr, mpi_size_t s1_size, mpi_limb_t s2_limb) +{ + mpi_limb_t x; + mpi_limb_t cy; + + x = *s1_ptr; + s2_limb += x; + *s1_ptr++ = s2_limb; + cy = (s2_limb < x); + while ( --s1_size ) + { + x = *s1_ptr + cy; + *s1_ptr++ = x; + cy = mpih_limb_is_zero (x) & mpih_limb_is_not_zero (cy); + } + + return cy; +} + G10_MPI_INLINE_DECL mpi_limb_t _gcry_mpih_add(mpi_ptr_t res_ptr, mpi_ptr_t s1_ptr, mpi_size_t s1_size, -- _______________________________________________ Gcrypt-devel mailing list Gcrypt-devel@gnupg.org https://lists.gnupg.org/mailman/listinfo/gcrypt-devel