I am working with golang's elliptic library.
It implements functions on Weierstrass elliptic curves with $a=-3$. I need to make my own library that allows me to handle curves with $a=0$. I understand there are specific equations to use to optimally perform operations on different elliptic curves, which can be found in Short Weierstrass curves.
I would like to know which functions from the library I should change, and which stay the same (as I'm not an expert in cryptography). Here is the full list:
IsOnCurve, affineFromJacobian, Add, addJacobian, Double, doubleJacobian, ScalarMult, ScalarBaseMult, GenerateKey, Marshal, Unmarshal, and some initialization functions.
As I understand I need to change the following:
- IsOnCurve (removing the -3x)
- doubleJacobian (different equation)
- and the init functions
Those should stay the same:
- Add
- addJacobian (same optimal equation)
- Double
- ScalarBaseMult
- Marshal
- Unmarshal
And I'm not sure about those:
- affineFromJacobian
- ScalarMult
- GenerateKey
Can anyone tell me if my list is correct, and if not, give me some feedback on how I should change the given items?