Package ecdsa

import "crypto/ecdsa"
Overview
Index
Examples

Overview ▾

软件包ecdsa实现了FIPS 186-3中定义的椭圆曲线数字签名算法.

此实现从以ChopMD(256,SHA2-512(priv.D ||熵||哈希))为键的AES-CTR CSPRNG得出随机数. Coron的结果是CSPRNG密钥为IRO; 在标准假设下,AES-CTR流为IRO.

Example

func Sign

func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err error)

Sign使用私钥priv对哈希(应该是对较大消息进行哈希处理的结果)进行签名. 如果哈希值比私钥的曲线顺序的位长长,则哈希值将被截断为该长度. 它以一对整数形式返回签名. 私钥的安全性取决于兰德的熵.

func Verify

func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool

验证使用公钥pub验证哈希r,s中的签名. 其返回值记录签名是否有效.

type PrivateKey

私钥代表ECDSA私钥.

type PrivateKey struct {
    PublicKey
    D *big.Int
}

func GenerateKey

func GenerateKey(c elliptic.Curve, rand io.Reader) (*PrivateKey, error)

GenerateKey生成一个公共和私有密钥对.

func (*PrivateKey) Public 1.4

func (priv *PrivateKey) Public() crypto.PublicKey

Public返回与priv相对应的公钥.

func (*PrivateKey) Sign 1.4

func (priv *PrivateKey) Sign(rand io.Reader, digest []byte, opts crypto.SignerOpts) ([]byte, error)

Sign用priv签名,从兰德读取随机性. opts参数当前未使用,但与crypto.Signer接口保持一致,应该是用于消化消息的哈希函数.

此方法实现crypto.Signer,这是支持密钥的接口,私有部分保存在密钥中,例如硬件模块. 常见用途应直接在此软件包中使用Sign函数.

type PublicKey

PublicKey代表ECDSA公钥.

type PublicKey struct {
    elliptic.Curve
    X, Y *big.Int
}

by  ICOPY.SITE