108 Commits

Author SHA1 Message Date
Mamy André-Ratsimbazafy
bb8dc579ea
conditional arithmetic prefixed with c: cadd, csub. Also use ccopy instead of cmov to avoid potential confusion like in https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/issues/210 2020-02-25 01:26:21 +01:00
Mamy André-Ratsimbazafy
6b05c69652
Rename Fq -> Fp 2020-02-24 17:10:09 +01:00
Mamy Ratsimbazafy
3bd70991d4
reorg the codebase + add/update READMEs in folders with research (#12)
* reorg the codebase + add/update READMEs in folders with research

* fix readme

* update pairing implementation papers

* Seperate hash-to-curve in its own folder, distinguish between norms, research and presentations

* Better markdown line breaks

* Add in-depth analysis of towers of extension fields for BN curve

* Fix Colm Ó hÉigeartaigh name and add Hash-to-Curve reference
2020-02-24 10:50:19 +01:00
Mamy André-Ratsimbazafy
68727e5c8d
Add modular inversion + test vs GMP 2020-02-22 19:50:24 +01:00
Mamy André-Ratsimbazafy
acfc99c4f0
Add an unsafe modular exponentiation that may leak exponent bits to timing attacks/oscilloscopes/memory cache attacks 2020-02-22 18:18:17 +01:00
Mamy André-Ratsimbazafy
e0f4e49cb5
Test modular exponentiation with BN254 and BLS12-381 moduli 2020-02-22 16:56:04 +01:00
Mamy André-Ratsimbazafy
24f2e1088e
Fix modular exp tests 2020-02-22 16:39:57 +01:00
Mamy André-Ratsimbazafy
4b65d0d723
Skeleton of modular exponentiation 2020-02-22 16:37:31 +01:00
Mamy André-Ratsimbazafy
ef5dd8345b
Allow compile-time bigint serialization + terminology: serialize -> export 2020-02-18 12:36:42 +01:00
Mamy André-Ratsimbazafy
9395febada
add octet string encode/decode (bigEndian raw int) 2020-02-18 11:54:36 +01:00
Mamy André-Ratsimbazafy
d7d20c50b6
Add primitive for window-based modular exponentiation 2020-02-17 00:13:42 +01:00
Mamy André-Ratsimbazafy
6694023f16
Revert "Use cmov name instead of mux to be in line with IETF spec on Hash to curve and Verifiable Random Functions"
This reverts commit 56177c0cfe6b0c39321a197699c730ff61c56829.
cmov will be the high-level name (similar to Milagro and Hash_to_curve draft) and mux will be the low-level one
2020-02-16 22:13:54 +01:00
Mamy André-Ratsimbazafy
56177c0cfe
Use cmov name instead of mux to be in line with IETF spec on Hash to curve and Verifiable Random Functions 2020-02-16 21:34:21 +01:00
Mamy André-Ratsimbazafy
a1801e26a0
Now passing finite field test vs GMP 2020-02-16 19:08:19 +01:00
Mamy André-Ratsimbazafy
c3d458e31b
Fix bug in redc: use montgomery mul for now. Add NIST P256 curve 2020-02-16 18:59:10 +01:00
Mamy André-Ratsimbazafy
5620bbfaee
rename io tests ti io bigints 2020-02-16 11:29:27 +01:00
Mamy André-Ratsimbazafy
23ecb9a221
Add a (failing) test vs GMP for modular multiplication on BN254 curve Field 2020-02-16 02:20:08 +01:00
Mamy André-Ratsimbazafy
eb94c3d1bc
Add Montgomery Modular Multiplication 2020-02-15 02:59:08 +01:00
Mamy André-Ratsimbazafy
301cf20195
Use Montgomery representation by default for Finite Field
- Fix montyMagic, modular inversion mode 2^2k was missing an iteration
- Fix test for buffer size in BigInt serialization
- Add UINT/Hex serialization for finite fields
- Montgomery conversion and redc
2020-02-15 00:26:40 +01:00
Mamy André-Ratsimbazafy
f418e08746
For finite fields, we will use the Montgomery n-residue form by default 2020-02-14 13:36:34 +01:00
Mamy André-Ratsimbazafy
f6b229b19c
Modular addition and substraction tests 2020-02-13 00:11:45 +01:00
Mamy André-Ratsimbazafy
3eb22f8fc7
Fix curve parser, implement smoke test for finite field 2020-02-12 23:57:51 +01:00
Mamy André-Ratsimbazafy
6226d86726
Update IO: dumpHex -> toHex dumpRawUint -> serializeRawUint 2020-02-12 21:57:39 +01:00
Mamy André-Ratsimbazafy
89fce3b1c4
Wrap tests in main. Fixes C codegen bug due to templates invocation on global variable in test_primitives 2020-02-12 00:25:48 +01:00
Mamy André-Ratsimbazafy
fe59efb8d8
reorganize the repo 2020-02-12 00:20:31 +01:00
Mamy André-Ratsimbazafy
24b0477ad7
Typo when testing for "negative" bigint, now passing testing vs GMP 2020-02-10 23:56:57 +01:00
Mamy André-Ratsimbazafy
b53f203e30
Fix raw uint serialization and start testing against GMP for 2000+bits bigints 2020-02-10 23:09:32 +01:00
Mamy André-Ratsimbazafy
8d160189d1
Fix extended prec multiplication carry. Passing modulo tests against medium BigInt (192~256 bits) 2020-02-10 22:19:47 +01:00
Mamy André-Ratsimbazafy
73b71a184c
Fix off-by-one copy, pass small bigints modulo tests 2020-02-10 19:57:35 +01:00
Mamy André-Ratsimbazafy
b689223cf5
Refactoring, optimize code-size: use type-erased views to avoid monomorphization of compute kernels 2020-02-10 18:16:34 +01:00
Mamy André-Ratsimbazafy
ade919b003
Fix carry and modulus offset in bigint 2020-02-10 02:58:37 +01:00
Mamy André-Ratsimbazafy
30f8756dfc
Temp switch to uint32 words for testing modulo. Remove tests that depend on word size 2020-02-10 00:16:46 +01:00
Mamy André-Ratsimbazafy
166a1075b1
add bigint display in GMP test 2020-02-09 23:26:39 +01:00
Mamy André-Ratsimbazafy
216ed9bdc1
Property-based testing framework vs GMP 2020-02-09 22:01:01 +01:00
Mamy André-Ratsimbazafy
f2c79ece26
Remove the limitation that the number of bits in constructed has to be greater than the source integer bitsize 2020-02-09 21:35:23 +01:00
Mamy André-Ratsimbazafy
66c0b5805e
Add modular reduce / bigint mod from 2 arbitrarily size bigint 2020-02-09 18:17:32 +01:00
Mamy André-Ratsimbazafy
153e898263
word_types -> primitives + delete the "config" file / debug template 2020-02-09 16:22:55 +01:00
Mamy André-Ratsimbazafy
b9a37825a3
COnsistent IO API between fromRawUint and fromHex and add fromUint 2020-02-09 15:38:30 +01:00
Mamy André-Ratsimbazafy
1d92ab1f48
Remove the limb accessor templates, introduce config file for debug template 2020-02-09 13:02:09 +01:00
Mamy André-Ratsimbazafy
9db77ad0eb
Prepare for testing finite fields, comment cleanups 2020-02-09 00:52:24 +01:00
Mamy André-Ratsimbazafy
edd728610c
Add addition limbs carry test 2020-02-08 19:09:20 +01:00
Mamy André-Ratsimbazafy
2c750cbc5b
Add bigint isZero, and equality and initial tests 2020-02-08 18:50:01 +01:00
Mamy André-Ratsimbazafy
8da9e20ebb
Cosmetic changes: dumpHex with 0x prefix, montgomery magic part of curve param 2020-02-08 17:03:30 +01:00
Mamy André-Ratsimbazafy
f18a958d5e
Support 1.0+ int128 (can't use magic for bitnot) 2020-02-08 13:28:43 +01:00
Mamy André-Ratsimbazafy
5dc97927c5
Switch to personal project -> update copyright 2020-02-08 11:42:35 +01:00
Mamy André-Ratsimbazafy
cadd81b978
Add hex conversion 2019-04-28 17:42:30 +02:00
mratsim
059439b2c3 fix little-endian parsing 2018-12-03 21:01:29 +01:00
mratsim
2856378427 [IO] dumping 2^63 works 2018-12-03 19:56:14 +01:00
mratsim
43ac4972a0 Add constant-time raw bytes/integers parsing 2018-12-02 20:57:32 +01:00
mratsim
eb15fb33b5 Rebrand to Constantine. Bigints representation should stay opaque. Exporting just the word_types would make a super small library. 2018-12-01 20:12:05 +01:00