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.