|
@@ -116,6 +116,10 @@ func (BitCurve *BitCurve) IsOnCurve(x, y *big.Int) bool {
|
|
|
// affineFromJacobian reverses the Jacobian transform. See the comment at the
|
|
// affineFromJacobian reverses the Jacobian transform. See the comment at the
|
|
|
// top of the file.
|
|
// top of the file.
|
|
|
func (BitCurve *BitCurve) affineFromJacobian(x, y, z *big.Int) (xOut, yOut *big.Int) {
|
|
func (BitCurve *BitCurve) affineFromJacobian(x, y, z *big.Int) (xOut, yOut *big.Int) {
|
|
|
|
|
+ if z.Sign() == 0 {
|
|
|
|
|
+ return new(big.Int), new(big.Int)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
zinv := new(big.Int).ModInverse(z, BitCurve.P)
|
|
zinv := new(big.Int).ModInverse(z, BitCurve.P)
|
|
|
zinvsq := new(big.Int).Mul(zinv, zinv)
|
|
zinvsq := new(big.Int).Mul(zinv, zinv)
|
|
|
|
|
|