186df3a655
fiat-crypto only generates fe_mul and fe_sq, but the original Ed25519 implementation we had also had fe_sq2 for computing 2*f^2. Previously, we inlined a version of fe_mul. Instead, we could implement it with fe_sq and fe_add. Performance-wise, this seems to not regress. If anything, it makes it faster? Before (clang, run for 10 seconds): Did 243000 Ed25519 key generation operations in 10025910us (24237.2 ops/sec) Did 250000 Ed25519 signing operations in 10035580us (24911.4 ops/sec) Did 73305 Ed25519 verify operations in 10071101us (7278.7 ops/sec) Did 184000 Curve25519 base-point multiplication operations in 10040138us (18326.4 ops/sec) Did 186000 Curve25519 arbitrary point multiplication operations in 10052721us (18502.5 ops/sec) After (clang, run for 10 seconds): Did 242424 Ed25519 key generation operations in 10013117us (24210.6 ops/sec) Did 253000 Ed25519 signing operations in 10011744us (25270.3 ops/sec) Did 73899 Ed25519 verify operations in 10048040us (7354.6 ops/sec) Did 194000 Curve25519 base-point multiplication operations in 10005389us (19389.6 ops/sec) Did 195000 Curve25519 arbitrary point multiplication operations in 10028443us (19444.7 ops/sec) Before (clang + OPENSSL_SMALL, run for 10 seconds): Did 144000 Ed25519 key generation operations in 10019344us (14372.2 ops/sec) Did 146000 Ed25519 signing operations in 10011653us (14583.0 ops/sec) Did 74052 Ed25519 verify operations in 10005789us (7400.9 ops/sec) Did 150000 Curve25519 base-point multiplication operations in 10007468us (14988.8 ops/sec) Did 91392 Curve25519 arbitrary point multiplication operations in 10057678us (9086.8 ops/sec) After (clang + OPENSSL_SMALL, run for 10 seconds): Did 144000 Ed25519 key generation operations in 10066724us (14304.6 ops/sec) Did 148000 Ed25519 signing operations in 10062043us (14708.7 ops/sec) Did 74820 Ed25519 verify operations in 10058557us (7438.4 ops/sec) Did 151000 Curve25519 base-point multiplication operations in 10063492us (15004.7 ops/sec) Did 90402 Curve25519 arbitrary point multiplication operations in 10049141us (8996.0 ops/sec) Change-Id: I31e9f61833492c3ff2dfd78e1dee5e06f43c850f Reviewed-on: https://boringssl-review.googlesource.com/24724 Reviewed-by: Adam Langley <agl@google.com> |
||
---|---|---|
.. | ||
android-cmake | ||
fiat | ||
googletest |