ed25519
4 分钟阅读
Package ed25519 implements the Ed25519 signature algorithm. See https://ed25519.cr.yp.to/.
ed25519 包实现了 Ed25519 签名算法。请参阅 https://ed25519.cr.yp.to/。
These functions are also compatible with the “Ed25519” function defined in RFC 8032. However, unlike RFC 8032’s formulation, this package’s private key representation includes a public key suffix to make multiple signing operations with the same key more efficient. This package refers to the RFC 8032 private key as the “seed”.
这些函数还与 RFC 8032 中定义的“Ed25519”函数兼容。但是,与 RFC 8032 的表述不同,此包的私钥表示包含一个公钥后缀,以便使用同一密钥进行多次签名操作更有效率。此包将 RFC 8032 私钥称为“种子”。
Example (Ed25519ctx)
|
|
常量
|
|
变量
This section is empty.
函数
func GenerateKey
|
|
GenerateKey generates a public/private key pair using entropy from rand. If rand is nil, crypto/rand.Reader will be used.
GenerateKey 使用 rand 中的熵生成公钥/私钥对。如果 rand 为 nil,则将使用 crypto/rand.Reader。
func Sign
|
|
Sign signs the message with privateKey and returns a signature. It will panic if len(privateKey) is not PrivateKeySize.
Sign 使用 privateKey 对消息进行签名并返回签名。如果 len(privateKey) 不是 PrivateKeySize,它将引发 panic。
func Verify
|
|
Verify reports whether sig is a valid signature of message by publicKey. It will panic if len(publicKey) is not PublicKeySize.
Verify 报告 sig 是否是 publicKey 对消息的有效签名。如果 len(publicKey) 不是 PublicKeySize,它将引发 panic。
func VerifyWithOptions <- go1.20
|
|
VerifyWithOptions reports whether sig is a valid signature of message by publicKey. A valid signature is indicated by returning a nil error. It will panic if len(publicKey) is not PublicKeySize.
VerifyWithOptions 报告 sig 是否是 publicKey 对 message 的有效签名。有效签名通过返回 nil 错误来指示。如果 len(publicKey) 不是 PublicKeySize,它将引发 panic。
If opts.Hash is crypto.SHA512, the pre-hashed variant Ed25519ph is used and message is expected to be a SHA-512 hash, otherwise opts.Hash must be crypto.Hash(0) and the message must not be hashed, as Ed25519 performs two passes over messages to be signed.
如果 opts.Hash 是 crypto.SHA512,则使用预哈希变体 Ed25519ph,并且 message 预计是 SHA-512 哈希,否则 opts.Hash 必须是 crypto.Hash(0),并且 message 不得被哈希,因为 Ed25519 对要签名的消息执行两遍。
类型
type Options <- go1.20
|
|
Options can be used with PrivateKey.Sign or VerifyWithOptions to select Ed25519 variants.
Options 可与 PrivateKey.Sign 或 VerifyWithOptions 一起使用以选择 Ed25519 变体。
(*Options) HashFunc <- go1.20
|
|
HashFunc returns o.Hash.
HashFunc 返回 o.Hash。
type PrivateKey
|
|
PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer.
PrivateKey 是 Ed25519 私钥的类型。它实现了 crypto.Signer。
func NewKeyFromSeed
|
|
NewKeyFromSeed calculates a private key from a seed. It will panic if len(seed) is not SeedSize. This function is provided for interoperability with RFC 8032. RFC 8032’s private keys correspond to seeds in this package.
NewKeyFromSeed 从种子计算私钥。如果 len(seed) 不是 SeedSize,它将引发 panic。提供此函数是为了与 RFC 8032 互操作。RFC 8032 的私钥对应于此包中的种子。
(PrivateKey) Equal <- go1.15
|
|
Equal reports whether priv and x have the same value.
Equal 报告 priv 和 x 是否具有相同的值。
(PrivateKey) Public
|
|
Public returns the PublicKey corresponding to priv.
Public 返回与 priv 对应的公钥。
(PrivateKey) Seed
|
|
Seed returns the private key seed corresponding to priv. It is provided for interoperability with RFC 8032. RFC 8032’s private keys correspond to seeds in this package.
Seed 返回与 priv 对应的私钥种子。它用于与rfc8032的互操作性。rfc8032的私钥对应于此包中的种子。
(PrivateKey) Sign
|
|
Sign signs the given message with priv. rand is ignored.
Sign 使用 priv 对给定的消息签名。
If opts.HashFunc() is crypto.SHA512, the pre-hashed variant Ed25519ph is used and message is expected to be a SHA-512 hash, otherwise opts.HashFunc() must be crypto.Hash(0) and the message must not be hashed, as Ed25519 performs two passes over messages to be signed.
如果 opts.Hash() 为 512,则使用预哈希 Ed25519ph,并且消息应为 SHA-512 哈希,否则 opts.Hash() 必须为 Hash(0),并且消息不能被哈希,因为 Ed25519 对要签名的消息执行两次哈希。
A value of type Options can be used as opts, or crypto.Hash(0) or crypto.SHA512 directly to select plain Ed25519 or Ed25519ph, respectively.
可以将类型为的Options值用作 opts,或直接使用 or.Hash(0)或 or.512 分别选择纯 Ed25519或 Ed25519ph。
type PublicKey
|
|
PublicKey is the type of Ed25519 public keys.
PublicKey 是 Ed25519 公钥的类型。
(PublicKey) Equal <- go1.15
|
|
Equal reports whether pub and x have the same value.
Equal 报告 pub 和 x 是否具有相同的值。