ed25519
2 分钟阅读
ed25519
https://pkg.go.dev/crypto/ed25519@go1.20.1
Package ed25519 implements the Ed25519 signature algorithm. See 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”.
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.
func Sign
|
|
Sign signs the message with privateKey and returns a signature. It will panic if len(privateKey) is not PrivateKeySize.
func Verify
|
|
Verify reports whether sig is a valid signature of message by publicKey. It will panic if len(publicKey) is not PublicKeySize.
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.
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.
类型
type Options <- go1.20
|
|
Options can be used with PrivateKey.Sign or VerifyWithOptions to select Ed25519 variants.
(*Options) HashFunc <- go1.20
|
|
HashFunc returns o.Hash.
type PrivateKey
|
|
PrivateKey is the type of Ed25519 private keys. It implements 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.
(PrivateKey) Equal <- go1.15
|
|
Equal reports whether priv and x have the same value.
(PrivateKey) Public
|
|
Public returns the PublicKey corresponding to 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.
(PrivateKey) Sign
|
|
Sign signs the given message with priv. rand is ignored.
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.
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.
type PublicKey
|
|
PublicKey is the type of Ed25519 public keys.
(PublicKey) Equal <- go1.15
|
|
Equal reports whether pub and x have the same value.