package ecdsa
import "crypto/ecdsa"
ecdsa包实现了椭圆曲线数字签名算法,参见FIPS 186-3。
Index
- type PublicKey
- type PrivateKey
- func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error)
- func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)
- func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool
type PublicKey
type PublicKey struct {
elliptic.Curve
X, Y *big.Int
}
PrivateKey代表一个ECDSA公钥。
type PrivateKey
type PrivateKey struct {
PublicKey
D *big.Int
}
PrivateKey代表一个ECDSA私钥。
func GenerateKey
GenerateKey函数生成一对
func GenerateKey(c elliptic.Curve, rand io.Reader) (priv *PrivateKey, err error)
公钥/私钥。
func Sign
func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)
使用私钥对任意长度的hash值(必须是较大信息的hash结果)进行签名,返回签名结果(一对大整数)。私钥的安全性取决于密码读取器的熵度(随机程度)。
func Verify
func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool
使用公钥验证hash值和两个大整数r、s构成的签名,并返回签名是否合法。