Enhancing Constantine - A Cryptographic Library in Nim with constant-time Arithmetics
Summing up this week the progress was not much in code, but had a lot of meetings and discussions with @mamy & @zahary on how should the banderwagon be structed and added to the constantine. This is because the banderwagon is not a different curve rather like a scheme built over bandersnatch to solve the problem of cofactor-4.
So the curve equation and all the other constants of the underlying is curve is same as that of bandersnatch.
After establishing consensus regarding how this should be structured inside of constantine. The following was decided : -
- The banderwagon should be a scheme built over bandersnatch.
- But the banderwagon should be a separate curve in constantine, with the same parameters as that of bandersnatch.
- The functions that are different from bandersnatch should be implemented in banderwagon, as function overrides.
Now according to this I added the curve in curves_declaration.nim
. But while testing these out I realized that
toHex()
function is not working for the points on the curve.- upon further research I found out that the
toHex()
function is not implemented for the points on the curve type- twisted edwards affine points
- twisted edwards projective points
So after realizing this that without this I won’t be able to test out the functions that I will be implementing in banderwagon. So I started working on implementing the toHex()
function for the points on the curve. I started with the affine points and then moved on to the projective points.
During this conversion of points from affine
to projective
needed to be altered as the implementation was not satisfactory. So finally I completed this and raised my first PR to constantine. This PR have been reviewed by @mamy and merged with ergonomic: 100 tag. I was kinda happy about this, I don’t know why haha.
Now I am working on the equality check and other functions for banderwagon and will be raising a PR for this soon.