Manuel Pégourié-Gonnard
|
2a2ae642d8
|
Fix forgotten curves in #ifdef
|
2014-02-24 10:29:21 +01:00 |
|
Paul Bakker
|
7dc4c44267
|
Library files moved to use platform layer
|
2014-02-06 13:20:16 +01:00 |
|
Manuel Pégourié-Gonnard
|
ac7194133e
|
Renamings and other fixes
|
2014-02-06 10:28:38 +01:00 |
|
Gergely Budai
|
e40c469ad3
|
The default ECDH curve list will be dynamically built in the ecp module based on ecp_supported_curves[].
|
2014-02-06 10:28:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
6e8e34d61e
|
Fix ecp_gen_keypair()
Too few tries caused failures for some curves (esp. secp224k1)
|
2014-02-05 15:53:45 +01:00 |
|
Paul Bakker
|
bf98c3dd11
|
Merged deterministic ECDSA
Conflicts:
library/ecdsa.c
|
2014-01-23 15:48:01 +01:00 |
|
Manuel Pégourié-Gonnard
|
9bcff3905b
|
Add OIDs and TLS IDs for prime Koblitz curves
|
2014-01-10 18:32:31 +01:00 |
|
Manuel Pégourié-Gonnard
|
c9573998ca
|
Fix unchecked error codes in ecp_gen_keypair()
|
2014-01-06 11:01:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
79f73b96d9
|
Remove bias in EC private key generation
|
2014-01-06 10:19:35 +01:00 |
|
Paul Bakker
|
c73879139e
|
Merged ECP memory usage optimizations
|
2013-12-31 10:33:47 +01:00 |
|
Manuel Pégourié-Gonnard
|
26bc1c0f5d
|
Fix a few unchecked return codes in EC
|
2013-12-30 19:33:33 +01:00 |
|
Manuel Pégourié-Gonnard
|
9e4191c3e7
|
Add another option to reduce EC memory usage
Also document speed/memory trade-offs better.
|
2013-12-30 19:16:05 +01:00 |
|
Paul Bakker
|
ec4bea7eee
|
Forced cast to unsigned int for %u format in ecp_selftest()
|
2013-12-30 19:04:47 +01:00 |
|
Manuel Pégourié-Gonnard
|
1f789b8348
|
Lessen peak memory usage in EC by freeing earlier
Cuts peak usage by 25% :)
|
2013-12-30 17:36:54 +01:00 |
|
Manuel Pégourié-Gonnard
|
72c172a13d
|
Save some small memory allocations inside ecp_mul()
|
2013-12-30 16:04:55 +01:00 |
|
Paul Bakker
|
92bcadb110
|
Removed 'z' length modifier from low-value size_t in ecp_selftest()
|
2013-12-30 15:37:17 +01:00 |
|
Manuel Pégourié-Gonnard
|
1f82b041e7
|
Adapt ecp_group_free() to static constants
|
2013-12-17 11:27:20 +01:00 |
|
Manuel Pégourié-Gonnard
|
73cc01d7fa
|
Remove last non-static parts of known EC groups
|
2013-12-17 11:27:20 +01:00 |
|
Manuel Pégourié-Gonnard
|
731d08b406
|
Start using constants from ROM for EC groups
|
2013-12-17 11:27:20 +01:00 |
|
Manuel Pégourié-Gonnard
|
93f41dbdfd
|
Fix possible issue in corner-case for ecp_mul_mx()
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
7a949d3f5b
|
Update comments
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
d962273594
|
Add #ifdef's for curve types
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
7c94d8bcab
|
WIP #ifdef's
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
b6f45a616c
|
Avoid potential leak in ecp_mul_mxz()
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
97871ef236
|
Some operations are not supported with Curve25519
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
357ff65a51
|
Details in ecp_mul_mxz()
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
fe0af405f9
|
Adapt ecp_gen_keypair() to Curve25519
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
a0179b8c4a
|
Change ecp_mul to handle Curve25519 too
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
312d2e8ea2
|
Adapt key checking functions for Curve25519
|
2013-12-05 15:58:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
3afa07f05b
|
Add coordinate randomization for Curve25519
|
2013-12-05 15:58:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
d9ea82e7d9
|
Add basic arithmetic for Curve25519
|
2013-12-05 15:58:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
3c0b4ea97e
|
Rename a few functions
|
2013-12-05 15:58:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
d5e0fbe1a3
|
Remove now useless function
|
2013-12-02 17:20:39 +01:00 |
|
Manuel Pégourié-Gonnard
|
32b04c1237
|
Split ecp.c
|
2013-12-02 16:36:11 +01:00 |
|
Manuel Pégourié-Gonnard
|
43863eeffc
|
Declare internal variables static in ecp.c
|
2013-12-02 16:34:24 +01:00 |
|
Manuel Pégourié-Gonnard
|
d35e191434
|
Drop useless include in ecp.c
|
2013-12-02 16:34:24 +01:00 |
|
Manuel Pégourié-Gonnard
|
0267e3dc9b
|
Add ecp_curve_info_from_name()
|
2013-11-30 15:10:14 +01:00 |
|
Manuel Pégourié-Gonnard
|
104ee1d1f6
|
Add ecp_genkey(), prettier wrapper
|
2013-11-30 14:35:07 +01:00 |
|
Manuel Pégourié-Gonnard
|
c57b654a3e
|
Use t_uint rather than uintXX_t when appropriate
|
2013-11-26 15:19:56 +01:00 |
|
Manuel Pégourié-Gonnard
|
96c7a92b08
|
Change mpi_safe_cond_assign() for more const-ness
|
2013-11-25 18:28:53 +01:00 |
|
Manuel Pégourié-Gonnard
|
918148193d
|
Enhance ecp_selftest
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
d728350cee
|
Make memory access pattern constant
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
aade42fd88
|
Change method for making M odd in ecp_mul()
- faster
- avoids M >= N (if m = N-1 or N-2)
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
36daa13d76
|
Misc details
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
469a209334
|
Rm subtraction from ecp_add_mixed()
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
01fca5e882
|
Do point inversion without leaking information
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
44aab79022
|
Update bibliographic references
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
7f762319ad
|
Use mpi_shrink() in ecp_precompute()
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
e282012219
|
Spare some memory
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
edc1a1f482
|
Small code cleanups
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
ff27b7c968
|
Tighten ecp_mul() validity checks
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
09ceaf49d0
|
Rm multiplication using NAF
Comb method is at most 1% slower for random points,
and is way faster for fixed point (repeated).
|
2013-11-21 21:56:38 +01:00 |
|
Manuel Pégourié-Gonnard
|
04a0225388
|
Optimize w in the comb method
|
2013-11-21 21:56:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
70c14372c6
|
Add coordinate randomization back
|
2013-11-21 21:56:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
c30200e4ce
|
Fix bound issues
|
2013-11-21 21:56:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
101a39f55f
|
Improve comb method (less precomputed points)
|
2013-11-21 21:56:37 +01:00 |
|
Manuel Pégourié-Gonnard
|
d1c1ba90ca
|
First version of ecp_mul_comb()
|
2013-11-21 21:56:20 +01:00 |
|
Paul Bakker
|
6a6087e71d
|
Added missing inline definition for MSCV and ARM environments
|
2013-10-28 18:53:08 +01:00 |
|
Manuel Pégourié-Gonnard
|
9fcceac943
|
Add a comment about modules coupling
|
2013-10-23 20:56:12 +02:00 |
|
Manuel Pégourié-Gonnard
|
b21c81fb41
|
Use less memory in fix_negative()
|
2013-10-23 20:45:04 +02:00 |
|
Manuel Pégourié-Gonnard
|
cae6f3ed45
|
Reorganize code in ecp.c
|
2013-10-23 20:19:57 +02:00 |
|
Manuel Pégourié-Gonnard
|
5779cbe582
|
Make mod_p{224,256,384] a bit faster
Speedup is roughly 25%, giving a 6% speedup on ecp_mul() for these curves.
|
2013-10-23 20:17:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
c04c530a98
|
Make NIST curves optimisation an option
|
2013-10-23 16:11:52 +02:00 |
|
Manuel Pégourié-Gonnard
|
0f9149cb0a
|
Add mod_p384
|
2013-10-23 15:06:37 +02:00 |
|
Manuel Pégourié-Gonnard
|
ec655c908c
|
Add mod_p256
|
2013-10-23 14:50:39 +02:00 |
|
Manuel Pégourié-Gonnard
|
210b458ddc
|
Document and slightly reorganize mod_pXXX
|
2013-10-23 14:27:58 +02:00 |
|
Manuel Pégourié-Gonnard
|
2a08c0debc
|
mod_p224 now working with 8-bit and 16-bit ints
|
2013-10-23 13:24:55 +02:00 |
|
Manuel Pégourié-Gonnard
|
a47e7058ea
|
mod_p224 now endian-neutral
|
2013-10-23 13:24:55 +02:00 |
|
Manuel Pégourié-Gonnard
|
e783f06f73
|
Start working on mod_p224
(Prototype, works only on 32-bit and little-endian 64-bit.)
|
2013-10-23 13:24:55 +02:00 |
|
Manuel Pégourié-Gonnard
|
cc67aee9c8
|
Make ecp_mod_p521 a bit faster
|
2013-10-23 13:24:55 +02:00 |
|
Manuel Pégourié-Gonnard
|
c9e387ca9e
|
Optimize ecp_modp()
Makes it 22% faster, for a 5% gain on ecp_mul()
|
2013-10-23 13:24:55 +02:00 |
|
Manuel Pégourié-Gonnard
|
d1e7a45fdd
|
Rework ecp_mod_p192()
On x86_64, this makes it 5x faster, and ecp_mul() 17% faster for this curve.
The code is shorter too.
|
2013-10-23 13:24:55 +02:00 |
|
Paul Bakker
|
b9cfaa0c7f
|
Explicit conversions and minor changes to prevent MSVC compiler warnings
|
2013-10-14 15:50:40 +02:00 |
|
Manuel Pégourié-Gonnard
|
0cd6f98c0f
|
Don't special-case a = -3, not worth it
|
2013-10-10 15:55:39 +02:00 |
|
Manuel Pégourié-Gonnard
|
b8012fca5f
|
Adjust dependencies
|
2013-10-10 15:40:49 +02:00 |
|
Manuel Pégourié-Gonnard
|
0ace4b3154
|
Use much less variables in ecp_double_jac_gen()
|
2013-10-10 13:21:48 +02:00 |
|
Manuel Pégourié-Gonnard
|
1c4aa24df1
|
Add brainpool support for ecp_mul()
|
2013-10-10 12:56:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
cd7458aafd
|
Support brainpool curves in ecp_check_pubkey()
|
2013-10-10 12:56:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
a070ada6d4
|
Add brainpool curves to ecp_use_kown_dp()
|
2013-10-10 12:56:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
cec4a53c98
|
Add domain parameters for Brainpool curves
|
2013-10-10 12:56:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
8195c1a567
|
Add identifiers for Brainpool curves
|
2013-10-10 12:56:00 +02:00 |
|
Manuel Pégourié-Gonnard
|
f24b4a7316
|
Interface change in ECP info functions
ecp_named_curve_from_grp_id() -> ecp_curve_info_from_grp_id()
ecp_grp_id_from_named_curve() -> ecp_curve_info_from_tls_id()
|
2013-09-24 21:25:53 +02:00 |
|
Manuel Pégourié-Gonnard
|
da179e4870
|
Add ecp_curve_list(), hide ecp_supported_curves
|
2013-09-18 15:37:44 +02:00 |
|
Manuel Pégourié-Gonnard
|
161ef968db
|
Cache pre-computed points for ecp_mul()
Up to 1.25 speedup on ECDSA sign for small curves, but mainly useful as a
preparation for fixed-point mult (a few prototypes changed in constness).
|
2013-09-18 15:37:44 +02:00 |
|
Manuel Pégourié-Gonnard
|
56cd319f0e
|
Add human-friendly name in ecp_curve_info
|
2013-09-18 15:37:44 +02:00 |
|
Manuel Pégourié-Gonnard
|
a79d123a55
|
Make ecp_supported_curves constant
|
2013-09-18 14:35:57 +02:00 |
|
Manuel Pégourié-Gonnard
|
c972770f78
|
Prepare ecp_group for future extensions
|
2013-09-18 14:35:53 +02:00 |
|
Manuel Pégourié-Gonnard
|
456d3b9b0b
|
Make ECP error codes more specific
|
2013-09-18 14:35:53 +02:00 |
|
Manuel Pégourié-Gonnard
|
568c9cf878
|
Add ecp_supported_curves and simplify some code
|
2013-09-18 14:34:34 +02:00 |
|
Manuel Pégourié-Gonnard
|
7038039f2e
|
Dissociate TLS and internal EC curve identifiers
Allows to add new curves before they get a TLS number
|
2013-09-18 14:34:34 +02:00 |
|
Manuel Pégourié-Gonnard
|
07de4b1d08
|
Implement randomized coordinates in ecp_mul()
|
2013-09-02 16:26:04 +02:00 |
|
Manuel Pégourié-Gonnard
|
e09d2f8261
|
Change ecp_mul() prototype to allow randomization
(Also improve an error code while at it.)
|
2013-09-02 14:29:09 +02:00 |
|
Manuel Pégourié-Gonnard
|
e09631b7c4
|
Create ecp_group_copy() and use it
|
2013-08-20 20:08:29 +02:00 |
|
Manuel Pégourié-Gonnard
|
b694b4896c
|
Add ecdsa_{read,write}_signature()
|
2013-08-20 20:04:16 +02:00 |
|
Manuel Pégourié-Gonnard
|
96f3a4e1b3
|
Rm ecp_keypair.alg
Avoid duplicating information already present in pk_context.
|
2013-07-17 15:59:44 +02:00 |
|
Manuel Pégourié-Gonnard
|
de44a4aecf
|
Rename ecp_check_prvkey with a 'i' for consistency
|
2013-07-09 16:42:34 +02:00 |
|
Manuel Pégourié-Gonnard
|
c8dc295e83
|
Add ecp_check_prvkey, with test
Also group key checking and generation functions in ecp.h and ecp.c.
|
2013-07-08 15:31:18 +02:00 |
|
Manuel Pégourié-Gonnard
|
b8c6e0e3e9
|
Add ecp_keypair struct, init/free and constants
|
2013-07-08 15:31:18 +02:00 |
|
Paul Bakker
|
6e339b52e8
|
Memory-allocation abstraction layer and buffer-based allocator added
|
2013-07-03 17:22:31 +02:00 |
|
Paul Bakker
|
fd3eac5786
|
Cleaned up ECP error codes
|
2013-06-29 23:31:33 +02:00 |
|