Documentation ¶
Overview ¶
Package ed25519 implements the Ed25519 signature algorithm. See https://ed25519.cr.yp.to/.
These functions are also compatible with the “Ed25519” function defined in https://tools.ietf.org/html/draft-irtf-cfrg-eddsa-05.
Index ¶
- Constants
- Variables
- func Ed25519Sign(privateKey PrivateKey, message []byte) []byte
- func Ed25519Verify(publicKey PublicKey, message, sig []byte) bool
- func GenerateKey(rand io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error)
- func Hash(hp HashPolicy, s *big.Int) *big.Int
- func PKCS5Padding(cipherText []byte, blockSize int) []byte
- func PKCS5UnPadding(origData []byte) []byte
- func Verify(sp SignaturePolicy, hp HashPolicy, publicKey []byte, message []byte, ...) bool
- func ZeroPadding(cipherText []byte, blockSize int) []byte
- func ZeroUnPadding(origData []byte) []byte
- type AesEncryptor
- type Blake2b
- type Ed25519
- func (p *Ed25519) GenerateKeys() ([]byte, []byte, error)
- func (p *Ed25519) PrivateKeySize() int
- func (p *Ed25519) PrivateToPublic(privateKey []byte) ([]byte, error)
- func (p *Ed25519) PublicKeySize() int
- func (p *Ed25519) RandomKeyPair() *KeyPair
- func (p *Ed25519) Sign(privateKey []byte, message []byte) []byte
- func (p *Ed25519) Verify(publicKey []byte, message []byte, signature []byte) bool
- type EncoderPolicy
- type HashPolicy
- type KeyPair
- type PrivateKey
- type PublicKey
- type RsaEncryptor
- type SignaturePolicy
Constants ¶
const ( // PublicKeySize is the size, in bytes, of public keys as used in this package. PublicKeySize = 32 // PrivateKeySize is the size, in bytes, of private keys as used in this package. PrivateKeySize = 64 // SignatureSize is the size, in bytes, of signatures generated and verified by this package. SignatureSize = 64 )
Variables ¶
var (
PrivateKeySizeErr = errors.New("private key length does not equal expected key length")
)
Functions ¶
func Ed25519Sign ¶
func Ed25519Sign(privateKey PrivateKey, message []byte) []byte
Sign signs the message with privateKey and returns a signature. It will panic if len(privateKey) is not PrivateKeySize.
func Ed25519Verify ¶
Verify reports whether sig is a valid signature of message by publicKey. It will panic if len(publicKey) is not PublicKeySize.
func GenerateKey ¶
func GenerateKey(rand io.Reader) (publicKey PublicKey, privateKey PrivateKey, err error)
GenerateKey generates a public/private key pair using entropy from rand. If rand is nil, crypto/rand.Reader will be used.
func Hash ¶
func Hash(hp HashPolicy, s *big.Int) *big.Int
Hash returns a hash of a big integer given a hash policy.
func PKCS5Padding ¶
func PKCS5UnPadding ¶
func Verify ¶
func Verify(sp SignaturePolicy, hp HashPolicy, publicKey []byte, message []byte, signature []byte) bool
Verify returns true if the given signature was generated using the given public key, message, signature policy, and hash policy.
func ZeroPadding ¶
func ZeroUnPadding ¶
Types ¶
type AesEncryptor ¶
type AesEncryptor struct{}
type Blake2b ¶
type Blake2b struct{}
Blake2b represents the BLAKE2 cryptographic hash algorithm.
type Ed25519 ¶
type Ed25519 struct { }
Ed25519 represents the ed25519 cryptographic signature scheme.
func (*Ed25519) GenerateKeys ¶
GenerateKeys generates a private and public key using the ed25519 signature scheme.
func (*Ed25519) PrivateKeySize ¶
PrivateKeySize returns the private key length.
func (*Ed25519) PrivateToPublic ¶
PrivateToPublic returns the public key given the private key.
func (*Ed25519) PublicKeySize ¶
PublicKeySize returns the public key length.
func (*Ed25519) RandomKeyPair ¶
RandomKeyPair generates a randomly seeded ed25519 key pair.
type EncoderPolicy ¶
type EncoderPolicy interface { Encrypt(data, key []byte) ([]byte, error) Decrypt(data, key []byte) ([]byte, error) }
Encoder defines a encoder interface to encrypt and decrypt data
type HashPolicy ¶
HashPolicy defines how to create a cryptographic hash.
type KeyPair ¶
KeyPair represents a private and public key pair.
func FromPrivateKey ¶
func FromPrivateKey(sp SignaturePolicy, privateKey string) (*KeyPair, error)
FromPrivateKey returns a KeyPair given a signature policy and private key.
func RandomKeyPair ¶
func RandomKeyPair() *KeyPair
RandomKeyPair generates a randomly seeded ed25519 key pair.
func (*KeyPair) PrivateKeyHex ¶
PrivateKeyHex returns the hex representation of the private key.
func (*KeyPair) PublicKeyHex ¶
PublicKeyHex returns the hex representation of the public key.
func (*KeyPair) Sign ¶
func (k *KeyPair) Sign(sp SignaturePolicy, hp HashPolicy, message []byte) ([]byte, error)
Sign returns a cryptographic signature that is a signed hash of the message.
type PrivateKey ¶
type PrivateKey []byte
PrivateKey is the type of Ed25519 private keys. It implements crypto.Signer.
func (PrivateKey) Public ¶
func (priv PrivateKey) Public() crypto.PublicKey
Public returns the PublicKey corresponding to priv.
func (PrivateKey) Sign ¶
func (priv PrivateKey) Sign(rand io.Reader, message []byte, opts crypto.SignerOpts) (signature []byte, err error)
Sign signs the given message with priv. Ed25519 performs two passes over messages to be signed and therefore cannot handle pre-hashed messages. Thus opts.HashFunc() must return zero to indicate the message hasn't been hashed. This can be achieved by passing crypto.Hash(0) as the value for opts.
type RsaEncryptor ¶
type RsaEncryptor struct{}
func NewRsaEncryptor ¶
func NewRsaEncryptor() *RsaEncryptor
NewRsaEncryptor uses the key pair to build a rsa encoder
type SignaturePolicy ¶
type SignaturePolicy interface { GenerateKeys() ([]byte, []byte, error) PrivateKeySize() int PrivateToPublic(privateKey []byte) ([]byte, error) PublicKeySize() int Sign(privateKey []byte, message []byte) []byte RandomKeyPair() *KeyPair Verify(publicKey []byte, message []byte, signature []byte) bool }
SignaturePolicy defines the creation and validation of a cryptographic signature.