tjfoc/gmsm

压缩公钥前缀应该为0x02或0x03

tkblack opened this issue · 1 comments

根据通用的ecc压缩公钥规则,y为偶数时使用0x02前缀,y为基数时使用0x03前缀。本项目中并没有遵守该规则,存在和其他包的兼容性问题。

func Compress(a *PublicKey) []byte {
	buf := []byte{}
	**yp := getLastBit(a.Y)**
	buf = append(buf, a.X.Bytes()...)
	if n := len(a.X.Bytes()); n < 32 {
		buf = append(zeroByteSlice()[:(32-n)], buf...)
	}
	**buf = append([]byte{byte(yp)}, buf...)**
	return buf
}