Black Lives Matter. Support the Equal Justice Initiative.

Package dsa

import "crypto/dsa"
Overview
Index

Overview ▾

软件包dsa实现了FIPS 186-3中定义的数字签名算法.

此软件包中的DSA操作未使用固定时间算法来实现.

Variables

当此代码无法使用公钥时,将导致ErrInvalidPublicKey. FIPS对DSA密钥的格式非常严格,但其他代码可能不太严格. 因此,当使用可能由其他代码生成的密钥时,必须处理该错误.

var ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key")

func GenerateKey

func GenerateKey(priv *PrivateKey, rand io.Reader) error

GenerateKey生成一个公共和私有密钥对. 私钥的参数必须已经有效(请参见GenerateParameters).

func GenerateParameters

func GenerateParameters(params *Parameters, rand io.Reader, sizes ParameterSizes) error

GenerateParameters将一组随机有效的DSA参数放入参数中. 即使在快速的机器上,此功能也可能花费数秒钟.

func Sign

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

Sign使用私钥priv签署任意长度的哈希(应该是对较大消息进行哈希的结果). 它以一对整数形式返回签名. 私钥的安全性取决于兰德的熵.

请注意,FIPS 186-3第4.6节指定哈希值应被截断为子组的字节长度. 此函数本身不会执行该截断.

请注意,使用攻击者控制的私钥调用Sign可能需要任意数量的CPU.

func Verify

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

验证使用公共密钥pub验证哈希r,s中的签名. 它报告签名是否有效.

请注意,FIPS 186-3第4.6节指定将哈希值截断为子组的字节长度. 此函数本身不会执行该截断.

type ParameterSizes

ParameterSizes是一组DSA参数中素数的可接受位长度的枚举. 请参阅FIPS 186-3第4.2节.

type ParameterSizes int
const (
    L1024N160 ParameterSizes = iota
    L2048N224
    L2048N256
    L3072N256
)

type Parameters

参数表示密钥的域参数. 这些参数可以在许多键之间共享. Q的位长必须是8的倍数.

type Parameters struct {
    P, Q, G *big.Int
}

type PrivateKey

私钥表示DSA私钥.

type PrivateKey struct {
    PublicKey
    X *big.Int
}

type PublicKey

PublicKey表示DSA公共密钥.

type PublicKey struct {
    Parameters
    Y *big.Int
}

by  ICOPY.SITE