mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-27 04:36:19 +08:00
sm2: refactoring, reduce duplicated codes
This commit is contained in:
parent
8948bdd931
commit
d1e4806e06
@ -175,21 +175,3 @@ func (curve *sm2Curve) UnmarshalCompressed(data []byte) (x, y *big.Int) {
|
|||||||
}
|
}
|
||||||
return curve.pointToAffine(p)
|
return curve.pointToAffine(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inverse, implements invertible interface, used by Sign()
|
|
||||||
func (curve *sm2Curve) Inverse(k *big.Int) *big.Int {
|
|
||||||
if k.Sign() < 0 {
|
|
||||||
// This should never happen.
|
|
||||||
k = new(big.Int).Neg(k)
|
|
||||||
}
|
|
||||||
if k.Cmp(curve.params.N) >= 0 {
|
|
||||||
// This should never happen.
|
|
||||||
k = new(big.Int).Mod(k, curve.params.N)
|
|
||||||
}
|
|
||||||
scalar := k.FillBytes(make([]byte, 32))
|
|
||||||
inverse, err := _sm2ec.P256OrdInverse(scalar)
|
|
||||||
if err != nil {
|
|
||||||
panic("sm2/elliptic: sm2 rejected normalized scalar")
|
|
||||||
}
|
|
||||||
return new(big.Int).SetBytes(inverse)
|
|
||||||
}
|
|
||||||
|
28
sm2/sm2ec/sm2ec_asm.go
Normal file
28
sm2/sm2ec/sm2ec_asm.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
//go:build (amd64 && !generic) || (arm64 && !generic)
|
||||||
|
// +build amd64,!generic arm64,!generic
|
||||||
|
|
||||||
|
package sm2ec
|
||||||
|
|
||||||
|
import (
|
||||||
|
"math/big"
|
||||||
|
|
||||||
|
_sm2ec "github.com/emmansun/gmsm/internal/sm2ec"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Inverse, implements invertible interface, used by Sign()
|
||||||
|
func (curve *sm2Curve) Inverse(k *big.Int) *big.Int {
|
||||||
|
if k.Sign() < 0 {
|
||||||
|
// This should never happen.
|
||||||
|
k = new(big.Int).Neg(k)
|
||||||
|
}
|
||||||
|
if k.Cmp(curve.params.N) >= 0 {
|
||||||
|
// This should never happen.
|
||||||
|
k = new(big.Int).Mod(k, curve.params.N)
|
||||||
|
}
|
||||||
|
scalar := k.FillBytes(make([]byte, 32))
|
||||||
|
inverse, err := _sm2ec.P256OrdInverse(scalar)
|
||||||
|
if err != nil {
|
||||||
|
panic("sm2/elliptic: sm2 rejected normalized scalar")
|
||||||
|
}
|
||||||
|
return new(big.Int).SetBytes(inverse)
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user