tls: get rid of address obfuscation trick in P256

function                                             old     new   delta
addr_mask                                              8       -      -8
sp_256_ecc_mulmod_10                                1363    1330     -33
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 0/1 up/down: 0/-41)             Total: -41 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2021-04-26 14:40:21 +02:00
parent 074b33bf16
commit 166363f47d

View File

@ -72,9 +72,6 @@ static const sp_digit p256_mod[10] = {
#define p256_mp_mod ((sp_digit)0x000001) #define p256_mp_mod ((sp_digit)0x000001)
/* Mask for address to obfuscate which of the two address will be used. */
static const size_t addr_mask[2] = { 0, (size_t)-1 };
/* The base point of curve P256. */ /* The base point of curve P256. */
static const sp_point p256_base = { static const sp_point p256_base = {
/* X ordinate */ /* X ordinate */
@ -831,14 +828,9 @@ static void sp_256_ecc_mulmod_10(sp_point* r, const sp_point* g, const sp_digit*
n <<= 1; n <<= 1;
sp_256_proj_point_add_10(t[y^1], t[0], t[1], tmp); sp_256_proj_point_add_10(t[y^1], t[0], t[1], tmp);
///FIXME type (or rewrite - get rid of t[] array) memcpy(t[2], t[y], sizeof(sp_point));
memcpy(t[2], (void*)(((size_t)t[0] & addr_mask[y^1]) +
((size_t)t[1] & addr_mask[y])),
sizeof(sp_point));
sp_256_proj_point_dbl_10(t[2], t[2], tmp); sp_256_proj_point_dbl_10(t[2], t[2], tmp);
memcpy((void*)(((size_t)t[0] & addr_mask[y^1]) + memcpy(t[y], t[2], sizeof(sp_point));
((size_t)t[1] & addr_mask[y])), t[2],
sizeof(sp_point));
} }
if (map) if (map)