Documentation
¶
Index ¶
- Variables
- type AESDecrypter
- type AESEncrypter
- type DHExchanger
- type EllipticCurve
- func (ec *EllipticCurve) AgreeOnSecret(selfPrivate crypto.PrivateKey, otherPublic crypto.PublicKey) ([]byte, error)
- func (ec *EllipticCurve) Check(peersPublic crypto.PublicKey) (err error)
- func (ec *EllipticCurve) GetEncrypter(agreedKey []byte) SymmetricEncrypter
- func (ec *EllipticCurve) MarshalPublic(key crypto.PublicKey) ([]byte, error)
- func (ec *EllipticCurve) NewRandomKeyPair() (crypto.PrivateKey, crypto.PublicKey, error)
- func (ec *EllipticCurve) PublicKey(private crypto.PrivateKey) (crypto.PublicKey, error)
- func (ec *EllipticCurve) UnMarshalPublic(b []byte) (crypto.PublicKey, error)
- type Point
- type SymmetricDecrypter
- type SymmetricEncrypter
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidPrivateKey = errors.New("invalid private key") ErrInvalidPublicKey = errors.New("invalid public key") ErrInvalidCurve = errors.New("invalid elliptic curve") ErrPrivateKeyCurveIncompatible = errors.New("private key curve incompatible") )
var (
ErrMalformedCipherText = errors.New("malformed cipher text") // Error when cipher text is malformed
)
Functions ¶
This section is empty.
Types ¶
type AESDecrypter ¶
type AESDecrypter struct {
SecretKey []byte
}
AESDecrypter is a type that does AES GCM Decryption.
func NewAESDecrypter ¶
func NewAESDecrypter(secret []byte) *AESDecrypter
NewAESDecrypter returns a new AESDecrypter
type AESEncrypter ¶
type AESEncrypter struct {
SecretKey []byte
Decrypter SymmetricDecrypter
}
AESEncrypter is a type that does AES GCM Encryption.
func NewAESEncrypter ¶
func NewAESEncrypter(secret []byte) *AESEncrypter
NewAESEncrypter returns a new AESEncrypter
func (*AESEncrypter) Encrypt ¶
func (ae *AESEncrypter) Encrypt(content []byte) ([]byte, error)
Encrypt just encrypts the content.
func (*AESEncrypter) GetDecrypter ¶
func (ae *AESEncrypter) GetDecrypter() SymmetricDecrypter
GetDecrypter returns a SymmetricDecrypter pertinent to the Encryption algorithm used.
type DHExchanger ¶
type DHExchanger interface {
// NewRandomKeyPair generates a new key pair for use.
NewRandomKeyPair() (crypto.PrivateKey, crypto.PublicKey, error)
// MarshalPublic encodes the key to byte array suitable for transport.
MarshalPublic(key crypto.PublicKey) ([]byte, error)
// UnMarshalPublic just assembles back your Marshalled public key
UnMarshalPublic([]byte) (crypto.PublicKey, error)
// AgreeOnSecret agrees on a common secret between the transacting parties.
AgreeOnSecret(selfPrivate crypto.PrivateKey, otherPublic crypto.PublicKey) ([]byte, error)
// GetEncrypter returns the SymmetricEncrypter which could be used for encrypting and decrypting
// custom application level messages.
GetEncrypter(agreedKey []byte) SymmetricEncrypter
// PublicKey is derived from the given private key.
PublicKey(private crypto.PrivateKey) (crypto.PublicKey, error)
// Check checks whether the given public key is on the elliptic curve.
Check(peersPublic crypto.PublicKey) (err error)
}
DHExchanger is a wrapper of sorts that gives us all the functionality required for a diffie-hellman key agreement.
func NewEllipticCurveExchanger ¶
func NewEllipticCurveExchanger(c elliptic.Curve) (DHExchanger, error)
NewEllipticCurveExchanger creates a new DHExchanger with generic elliptic.Curve implementations.
type EllipticCurve ¶
type EllipticCurve struct {
// contains filtered or unexported fields
}
func (*EllipticCurve) AgreeOnSecret ¶
func (ec *EllipticCurve) AgreeOnSecret(selfPrivate crypto.PrivateKey, otherPublic crypto.PublicKey) ([]byte, error)
AgreeOnSecret agrees on a common secret between the transacting parties.
func (*EllipticCurve) Check ¶
func (ec *EllipticCurve) Check(peersPublic crypto.PublicKey) (err error)
Check checks whether the given public key is on the elliptic curve.
func (*EllipticCurve) GetEncrypter ¶
func (ec *EllipticCurve) GetEncrypter(agreedKey []byte) SymmetricEncrypter
GetEncrypter returns the SymmetricEncrypter which could be used for encrypting and decrypting custom application level messages.
func (*EllipticCurve) MarshalPublic ¶
func (ec *EllipticCurve) MarshalPublic(key crypto.PublicKey) ([]byte, error)
MarshalPublic encodes the key to byte array suitable for transport.
func (*EllipticCurve) NewRandomKeyPair ¶
func (ec *EllipticCurve) NewRandomKeyPair() (crypto.PrivateKey, crypto.PublicKey, error)
NewRandomKeyPair generates a new key pair for use.
func (*EllipticCurve) PublicKey ¶
func (ec *EllipticCurve) PublicKey(private crypto.PrivateKey) (crypto.PublicKey, error)
PublicKey is derived from the given private key.
func (*EllipticCurve) UnMarshalPublic ¶
func (ec *EllipticCurve) UnMarshalPublic(b []byte) (crypto.PublicKey, error)
UnMarshalPublic just assembles back your Marshalled public key
type SymmetricDecrypter ¶
type SymmetricDecrypter interface {
// Decrypt just decrypts the encrypted chunk
Decrypt(encryptedContent []byte) ([]byte, error)
}
SymmetricDecrypter is a type that should be implemented by all "Symmetric" curves and algorithms.
type SymmetricEncrypter ¶
type SymmetricEncrypter interface {
// Encrypt just encrypts the content.
Encrypt(content []byte) ([]byte, error)
// GetDecrypter returns a SymmetricDecrypter pertinent to the
// Encryption algorithm used.
GetDecrypter() SymmetricDecrypter
}
SymmetricEncrypter is a type that should be implemented by all "Symmetric" curves and algorithms. Since the Decryption process is dependent on type of encryption, SymmetricEncrypter should return a SymmetricDecrypter on demand.