Arnau B
5ef832f175
Add scanner/valuer interface to babyjub.SignatureComp
2020-10-16 16:22:18 +02:00
arnaucube
91767c7b61
Add goff to BabyJubJub point addition
...
```
Benchmarks (On a Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz, with 32 GB of RAM):
- Old (commit: e04ca5764a ):
BenchmarkBabyjub/AddConst-8 1000000 1072 ns/op
BenchmarkBabyjub/AddRnd-8 93417 12943 ns/op
BenchmarkBabyjub/MulRnd-8 252 4797810 ns/op
BenchmarkBabyjub/Compress-8 7291580 166 ns/op
BenchmarkBabyjub/InCurve-8 611137 1999 ns/op
BenchmarkBabyjub/InSubGroup-8 615792 2021 ns/op
BenchmarkBabyjubEddsa/SignMimc7-8 126 9358542 ns/op
BenchmarkBabyjubEddsa/VerifyMimc7-8 124 9484005 ns/op
BenchmarkBabyjubEddsa/SignPoseidon-8 126 9486484 ns/op
BenchmarkBabyjubEddsa/VerifyPoseidon-8 126 9622807 ns/op
- With new point addition algorithm (commit: aab1a681dd ):
BenchmarkBabyjub/AddConst-8 1356836 881 ns/op
BenchmarkBabyjub/AddRnd-8 274112 4220 ns/op
BenchmarkBabyjub/MulRnd-8 492 2474412 ns/op
BenchmarkBabyjub/Compress-8 6964855 197 ns/op
BenchmarkBabyjub/InCurve-8 608169 2008 ns/op
BenchmarkBabyjub/InSubGroup-8 618772 1954 ns/op
BenchmarkBabyjubEddsa/SignMimc7-8 238 4962397 ns/op
BenchmarkBabyjubEddsa/VerifyMimc7-8 235 5234883 ns/op
BenchmarkBabyjubEddsa/SignPoseidon-8 240 5028720 ns/op
BenchmarkBabyjubEddsa/VerifyPoseidon-8 243 5226654 ns/op
Point Addition: ~3x
Point scalar Mul: ~1.9x
Signature (poseidon): ~1.88x
Verification (poseidon): ~1.84x
- With new point addition algorithm & goff (current commit):
BenchmarkBabyjub/AddConst-8 3000531 400 ns/op
BenchmarkBabyjub/AddRnd-8 2770335 428 ns/op
BenchmarkBabyjub/MulRnd-8 6636 175522 ns/op
BenchmarkBabyjub/Compress-8 7358768 180 ns/op
BenchmarkBabyjub/InCurve-8 539193 1950 ns/op
BenchmarkBabyjub/InSubGroup-8 601402 1958 ns/op
BenchmarkBabyjubEddsa/SignMimc7-8 2940 409487 ns/op
BenchmarkBabyjubEddsa/VerifyMimc7-8 2908 414407 ns/op
BenchmarkBabyjubEddsa/SignPoseidon-8 2395 493165 ns/op
BenchmarkBabyjubEddsa/VerifyPoseidon-8 2491 494849 ns/op
Point Addition: ~9.86x
Point scalar Mul: ~14x
Signature (poseidon): ~10.2x
Verification (poseidon): ~10.56x
---
Total improvement (from old to current):
Point Addition: ~30.24x
Point scalar Mul: ~27.33x
Signature (poseidon): ~19.24x
Verification (poseidon): ~19.44x
```
2020-09-05 17:34:06 +02:00
arnaucube
aab1a681dd
Add add-2008-bbjlp for point addition
...
Add `add-2008-bbjlp` for point addition
Benchmarks (On a Intel(R) Core(TM) i7-8705G CPU @ 3.10GHz, with 32 GB of RAM):
```
- Old:
BenchmarkBabyjub/AddConst-8 1000000 1072 ns/op
BenchmarkBabyjub/AddRnd-8 93417 12943 ns/op
BenchmarkBabyjub/MulRnd-8 252 4797810 ns/op
BenchmarkBabyjub/Compress-8 7291580 166 ns/op
BenchmarkBabyjub/InCurve-8 611137 1999 ns/op
BenchmarkBabyjub/InSubGroup-8 615792 2021 ns/op
BenchmarkBabyjubEddsa/SignMimc7-8 126 9358542 ns/op
BenchmarkBabyjubEddsa/VerifyMimc7-8 124 9484005 ns/op
BenchmarkBabyjubEddsa/SignPoseidon-8 126 9486484 ns/op
BenchmarkBabyjubEddsa/VerifyPoseidon-8 126 9622807 ns/op
- With new point addition algorithm:
BenchmarkBabyjub/AddConst-8 1356836 881 ns/op
BenchmarkBabyjub/AddRnd-8 274112 4220 ns/op
BenchmarkBabyjub/MulRnd-8 492 2474412 ns/op
BenchmarkBabyjub/Compress-8 6964855 197 ns/op
BenchmarkBabyjub/InCurve-8 608169 2008 ns/op
BenchmarkBabyjub/InSubGroup-8 618772 1954 ns/op
BenchmarkBabyjubEddsa/SignMimc7-8 238 4962397 ns/op
BenchmarkBabyjubEddsa/VerifyMimc7-8 235 5234883 ns/op
BenchmarkBabyjubEddsa/SignPoseidon-8 240 5028720 ns/op
BenchmarkBabyjubEddsa/VerifyPoseidon-8 243 5226654 ns/op
```
Point Addition: ~3x
Point scalar Mul: ~1.9x
Signature (poseidon): ~1.88x
Verification (poseidon): ~1.84x
2020-09-05 17:18:43 +02:00
arnaucube
e04ca5764a
Update Poseidon to new circomlib version & https://extgit.iaik.tugraz.at/krypto/hadeshash
2020-08-23 19:40:58 +02:00
a_bennassar
674e8a6739
Fix value sql interface
2020-08-14 12:32:15 +02:00
a_bennassar
a86308cb0b
Add scanner/valuer interface to PublicKey
2020-08-13 12:43:48 +02:00
a_bennassar
d91a4261f1
Add scanner/valuer interface to signature
2020-08-12 15:52:10 +02:00
arnaucube
833f68a614
Babyjubjub separate PointFromSignAndY from p.Decompress
2020-08-06 13:34:36 +02:00
arnaucube
f22be3cdee
Update Poseidon Hash function names, rm HashBytes
...
Since Poseidon Hash is used because of compatibility in zkSNARK circuits, due
circuit constraints number, the hash method of [T]*big.Int is the one directly
compatible with the circuits, is the method which have the `Hash` name on it.
The method that can take arbitrary length of []*big.Int putting them in chunks
of [T]*big.Int and iterating, is called `HashSlice`. The `HashBytes` has been
removed, as is a method that will not be used in zkSNARK circuits due high
constraints number.
For zkSNARK circuits, should be used `poseidon.Hash([poseidon.T]*big.Int)`.
2020-07-23 07:59:59 +02:00
arnaucube
d189a6bedc
Expose SkToBigInt for usage from other packages & repos
2020-04-22 14:53:31 +02:00
Eduard S
0ac8b46493
Fix linters errors
2020-04-14 16:53:24 +02:00
arnaucube
2a3f0d9ed5
Adapt babyjub/eddsa to new Poseidon methods
2020-03-04 12:57:20 +01:00
arnaucube
97c76ce614
Update BabyJubJub signature with Poseidon
2020-03-03 12:42:18 +01:00
Eduard S
c0c4ff2dd7
Optimize Poseidon
2019-12-18 11:46:17 +01:00
Eduard S
53b9050d0a
Add babujub eddsa benchmarks
2019-12-16 13:36:43 +01:00
Eduard S
a5b6afcb16
Add poseidon and babyjub benchmarks
2019-12-16 13:08:34 +01:00
Eduard S
5ade04e079
Test that babyjub pk is always < Q
2019-12-09 12:30:50 +01:00
arnaucube
a60e154d86
return error if no ModSqrt(x, q) exist in babyjubjub decompress point
2019-09-10 00:36:54 +02:00
arnaucube
2b1935299c
MiMC7 finite field over R comprovation moved inside hash, same approach as Poseidon impl
2019-08-30 11:58:10 +02:00
arnaucube
0bac1c84ba
add babyjub-eddsa Poseidon sign & verify
2019-08-29 17:52:30 +02:00
arnaucube
c4b3b7a09c
update babyjub B8, clean unused funcs & errs in mimc7, small update in mimc7 tests
2019-08-03 20:55:08 +02:00
Eduard S
5b79ded540
Move constants and utils to package, apply small fixes
2019-07-01 12:51:34 +02:00
arnaucube
7b219e15ec
add travis, add go.mod go.sum, update babyjub hex encoders to avoid
...
importing go-iden3
2019-06-25 15:46:45 +02:00
Eduard S
0f93c8ce38
Add babyjub from go-iden3/crypto/babyjub
2019-06-25 14:53:16 +02:00