botan icon indicating copy to clipboard operation
botan copied to clipboard

[WIP] Add pairings over 256-bit Barreto Naehrig curve

Open randombit opened this issue 6 years ago • 1 comments

  • [ ] Provide an abstract interface that can be implemented across several pairing types (eg BLS or BN-448). TBH I'm not even sure how to approach this in C++ given the need for several sub classes (G1,G2,GT) which are associated with the pairing. But it would be useful to implement things like BF-IBE or BLS signatures just once and then use them across multiple pairing types.
  • [x] Should use Montgomery_Int from #1461 instead of GFp1
  • [ ] Add hashing on the curve (APIs are there but not implemented)
  • [ ] Documentation
  • [ ] More tests (going to fuzz vs dclxvi implementation to generate test vectors and provide more assurance of correctness)
  • [ ] Demo, maybe BLS short signatures

randombit avatar Jan 29 '18 13:01 randombit

Codecov Report

Merging #1432 into master will increase coverage by 0.02%. The diff coverage is 87.83%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #1432      +/-   ##
==========================================
+ Coverage   92.03%   92.05%   +0.02%     
==========================================
  Files         517      519       +2     
  Lines       55140    55839     +699     
  Branches     5740     5754      +14     
==========================================
+ Hits        50748    51403     +655     
- Misses       4392     4436      +44
Impacted Files Coverage Δ
src/tests/test_bn256.cpp 100% <100%> (ø)
src/cli/speed.cpp 87.92% <3.22%> (-2.83%) :arrow_down:
src/lib/pairings/bn256/bn256.cpp 91.24% <91.24%> (ø)
src/lib/math/bigint/big_ops2.cpp 96.47% <0%> (+0.7%) :arrow_up:
src/lib/pubkey/mce/mceliece_key.cpp 86.51% <0%> (+1.12%) :arrow_up:
src/lib/misc/cryptobox/cryptobox.cpp 95.23% <0%> (+1.58%) :arrow_up:
src/lib/math/numbertheory/monty.cpp 81.46% <0%> (+15.94%) :arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 4b1252b...4f27f8f. Read the comment docs.

codecov-io avatar Jan 29 '18 15:01 codecov-io