Files
xgcl/tpc/sm2/sm2a/enc_server.go
T
2026-05-27 23:03:00 +08:00

27 lines
657 B
Go

package sm2a
import (
"math/big"
"xdx.jelly/xgcl/gmath"
"xdx.jelly/xgcl/sm/sm2"
)
// ServerDecrypt 服务端协同计算,返回[d_s]·C1给客户端
func ServerDecrypt(in []byte, ds *sm2.PrivateKey) ([]byte, error) {
x := new(big.Int)
y := new(big.Int)
x.SetBytes(in[:sm2.ByteSize()])
y.SetBytes(in[sm2.ByteSize() : 2*sm2.ByteSize()])
x, y = sm2.Curve256.ScalarMult(x, y, ds.D.Bytes())
out := make([]byte, 0, 2*sm2.ByteSize())
out = append(out, gmath.BigIntToNByte(x, sm2.ByteSize())...)
out = append(out, gmath.BigIntToNByte(y, sm2.ByteSize())...)
// 中间变量内存置0
gmath.ClearBigInt(x)
gmath.ClearBigInt(y)
return out, nil
}