Hanno Becker ee95f6c4c9 Don't allow Z coordinate being unset in ecp_add_mixed()
Previously, ecp_add_mixed(), commputing say P+Q, would allow for the
Q parameter to have an unset Z coordinate as a shortcut for Z == 1.
This was leveraged during computation and usage of the T-table
(storing low multiples of the to-be-multiplied point on the curve).
It is a potentially error-prone corner case, though, since an MPIs
with unset data pointer coordinate and limb size 0 is also a valid
representation of the number 0.

As a first step towards removing ECP points with unset Z coordinate,
the constant time T-array getter ecp_select_comb() has previously
been modified to return 'full' mbedtls_ecp_point structures,
including a 1-initialized Z-coordinate.

Similarly, this commit ...

- Modifies ecp_normalize_jac_many() to set the Z coordinates
  of the points it operates on to 1 instead of freeing them.

- Frees the Z-coordinates of the T[]-array explicitly
  once the computation and normalization of the T-table has finished.

  As a minimal functional difference between old and new code,
  the new code also frees the Z-coordinate of T[0]=P, which the
  old code did not.

- Modifies ecp_add_mixed() to no longer allow unset Z coordinates.

Except for the post-precomputation storage form of the T[] array,
the code does therefore no longer use EC points with unset Z coordinate.

Signed-off-by: Hanno Becker <hanno.becker@arm.com>
2022-01-09 05:52:40 +00:00
..
2021-12-15 12:55:33 +01:00
2021-09-27 16:22:08 +02:00
2021-03-10 12:52:37 +00:00
2021-06-28 09:24:07 +01:00
2021-08-19 09:55:41 +01:00
2021-10-21 11:33:37 +02:00
2021-06-17 21:46:29 +02:00
2021-09-27 16:22:08 +02:00
2021-06-25 12:46:40 +01:00
2021-06-08 16:45:41 +02:00
2021-08-19 09:31:55 +01:00
2021-06-28 09:24:07 +01:00
2021-06-16 10:34:25 +02:00
2021-04-07 12:45:35 +01:00
2021-03-29 14:20:18 +01:00
2021-03-29 14:20:18 +01:00
2021-04-07 12:45:35 +01:00
2021-06-16 10:34:25 +02:00
2021-03-10 12:52:37 +00:00
2021-06-28 09:24:07 +01:00
2021-06-08 16:45:41 +02:00
2021-04-15 11:19:47 +01:00
2021-12-02 18:03:12 +00:00
2021-09-08 22:04:13 +05:30
2020-11-25 13:10:50 +01:00
2021-12-06 07:50:27 +01:00
2021-08-19 09:31:55 +01:00
2021-08-19 09:31:55 +01:00
2021-08-19 09:31:55 +01:00
2021-08-19 09:56:47 +01:00
2021-12-03 18:55:33 +01:00
2021-12-03 18:55:33 +01:00
2021-08-31 22:54:27 +02:00
2021-12-15 12:56:54 +01:00
2021-12-02 06:36:27 +00:00
2021-12-15 12:56:54 +01:00
2021-12-13 14:38:40 +01:00
2021-06-28 09:28:33 +01:00