CryptoGroups
Cryptographic groups are a fundamental building block for digital signatures, key exhange algorithm, assymetric encryption and many other exciting algorithms of practical importance.
ToDo
-
Import and fix tests
-
Add a
spec
function with which specs can be retrieved asspec(:P_192)
,spec(:OakleyV1)
orspec(:B_163, :PB)
. -
Introuce abstract type
Spec
-
Rename
crs
torand
and inShuffleProofs
,gen_verificatum_prg
. -
Rename
solidify
asspecialize
-
Rename
incurve
tooncurve
-
According to https://safecurves.cr.yp.to/complete.html
... the standard Weierstrass addition formulas fail if Q happens to match -P. This will not be caught by random tests.
as well as identical points can not be summed. Could be partially addressed at the higher level of ECGroup
.
> An implementor can stop a small-subgroup attack by rejecting any Q for which hQ = 0
This may be addressed at constructor level, but requires to know the cofactor.
- Adding accessor methods to
AffinePoint
as_a
and_b
and acessor methods to curvesa
andb
- Implement independent basis generation for elliptic curves
- Add a square root function for elliptic curves (Imported from CryptoUtils)
- Make a prg iterator for numbers
- Fix the
UndefVarError(:P)
in the show method - Add point, field, integer conversions as specified in X9.62 section 4.3
- Specify cofactors in the elliptic curve specs and encode cofactor assertions in
ECPoint
- Does order needs to be computed from
n
by divifing with cofactorh
? - Add some docs
- Consider better alternatives for internal data representation of
F2GNB
andF2PB
to improve performance.