Documentation ¶
Overview ¶
cipher package is a helper package for encrypting and decrypting messages
Index ¶
- Constants
- func GeneratePrivateKey(size int) *rsa.PrivateKey
- func GetHash(hashType string) crypto.Hash
- func GetPrivateKey(loader KeyLoader) (*rsa.PrivateKey, error)
- func GetPublicKey(loader KeyLoader) (*rsa.PublicKey, error)
- type AlgorithmType
- type BasicHashLoader
- type BoxLoader
- type BytesLoader
- type Ciphers
- type Config
- type Decrypt
- type DecryptLoader
- type Encrypt
- type EncryptLoader
- type FileLoader
- type HashLoader
- type Identification
- type KeyLoader
- type KeyType
- type LocalCerts
- type NOOP
- type Options
- type RSALoader
Constants ¶
const ( // CipherKey is the Viper subkey under which logging should be stored. // NewOptions *does not* assume this key. CipherKey = "cipher" )
Variables ¶
This section is empty.
Functions ¶
func GeneratePrivateKey ¶
func GeneratePrivateKey(size int) *rsa.PrivateKey
GeneratePrivateKey will create a private key with the size given size must be greater than 64 or else it will default to 64.
Careful with the size, if its too large it won't encrypt the message or take forever
func GetPrivateKey ¶ added in v0.3.2
func GetPrivateKey(loader KeyLoader) (*rsa.PrivateKey, error)
GetPrivateKey uses a keyloader to load a private key.
Types ¶
type AlgorithmType ¶ added in v0.4.0
type AlgorithmType string
AlgorithmType is an enum used to specify which algorithm is being used.
const ( None AlgorithmType = "none" Box AlgorithmType = "box" RSASymmetric AlgorithmType = "rsa-sym" RSAAsymmetric AlgorithmType = "rsa-asy" )
func ParseAlgorithmType ¶ added in v0.8.0
func ParseAlgorithmType(algo string) AlgorithmType
ParseAlgorithmType takes a string and returns an enum if one matches, otherwise returns the None AlgorithmType enum.
type BasicHashLoader ¶ added in v0.3.0
type BasicHashLoader struct {
HashName string `mapstructure:"hash"`
}
BasicHashLoader implements HashLoader.
type BoxLoader ¶ added in v0.3.2
BoxLoader loads the box encryption/decryption.
func (*BoxLoader) LoadDecrypt ¶ added in v0.3.2
LoadDecrypt loads a decrypter for the box algorithm.
func (*BoxLoader) LoadEncrypt ¶ added in v0.3.2
LoadEncrypt loads an encrypter for the box algorithm.
type BytesLoader ¶ added in v0.3.3
type BytesLoader struct {
Data []byte
}
BytesLoader implements the KeyLoader.
func (*BytesLoader) GetBytes ¶ added in v0.3.3
func (b *BytesLoader) GetBytes() ([]byte, error)
GetBytes returns the bytes stored by the BytesLoader
type Ciphers ¶ added in v0.4.0
type Ciphers struct {
Options map[AlgorithmType]map[string]Decrypt
}
Ciphers provide all of the possibly algorithms that can be used to encrypt or decrypt.
func PopulateCiphers ¶ added in v0.4.0
PopulateCiphers takes options and a logger and creates ciphers from them.
type Config ¶ added in v0.4.0
type Config struct { // Logger is the go-kit Logger to use for server startup and error logging. If not // supplied, logging.DefaultLogger() is used instead. Logger log.Logger `json:"-"` // Type is the algorithm type. Like none, box, rsa etc. Type AlgorithmType `json:"type"` // KID is the key id of the cipher KID string `json:"kid,omitempty"` // Params to be provided to the algorithm type. // For example providing a hash algorithm to rsa. Params map[string]string `json:"params,omitempty"` // Keys is a map of keys to path. aka senderPrivateKey : private.pem Keys map[KeyType]string `json:"keys,omitempty"` }
Config used load the Encrypt or Decrypt
func (*Config) LoadDecrypt ¶ added in v0.4.0
LoadDecrypt uses the config to load a decrypter.
func (*Config) LoadEncrypt ¶ added in v0.4.0
LoadEncrypt uses the config to load an encrypter.
type Decrypt ¶ added in v0.3.0
type Decrypt interface { Identification // DecryptMessage attempts to decode the message into a string. // and error will be returned if failed to decode the message. DecryptMessage(cipher []byte, nonce []byte) (message []byte, err error) }
Decrypt represents the ability to decrypt messages
func DefaultCipherDecrypter ¶ added in v0.3.2
func DefaultCipherDecrypter() Decrypt
DEfaultCipherDecrypter returns a NOOP decrypter.
func NewBoxDecrypter ¶ added in v0.3.2
NewBoxDecrypter returns a new box decrypter.
func NewRSADecrypter ¶ added in v0.4.0
func NewRSADecrypter(hash crypto.Hash, recipientPrivateKey *rsa.PrivateKey, senderPublicKey *rsa.PublicKey, kid string) Decrypt
NewRSADecrypter returns an RSA decrypter.
type DecryptLoader ¶ added in v0.3.2
DecryptLoader loads a decrypter.
type Encrypt ¶ added in v0.3.2
type Encrypt interface { Identification // EncryptMessage attempts to encode the message into an array of bytes. // and error will be returned if failed to encode the message. EncryptMessage(message []byte) (crypt []byte, nonce []byte, err error) }
Encrypt represents the ability to encrypt messages
func DefaultCipherEncrypter ¶ added in v0.3.2
func DefaultCipherEncrypter() Encrypt
DefaultCipherEncrypter returns a NOOP encrypter.
func NewBoxEncrypter ¶ added in v0.3.2
NewBoxEncrypter returns a new box encrypter.
func NewRSAEncrypter ¶ added in v0.4.0
func NewRSAEncrypter(hash crypto.Hash, senderPrivateKey *rsa.PrivateKey, recipientPublicKey *rsa.PublicKey, kid string) Encrypt
NewRSAEncrypter returns an RSA encrypter.
type EncryptLoader ¶ added in v0.3.2
EncryptLoader loads an encrypter.
type FileLoader ¶ added in v0.3.0
type FileLoader struct {
Path string
}
FileLoader loads a key from a file.
func (*FileLoader) GetBytes ¶ added in v0.3.0
func (f *FileLoader) GetBytes() ([]byte, error)
GetBytes returns the bytes found at the filepath.
type HashLoader ¶ added in v0.3.0
HashLoader can get a hash.
type Identification ¶ added in v0.4.0
type Identification interface { // GetAlgorithm will return the algorithm Encrypt and Decrypt uses GetAlgorithm() AlgorithmType // GetKID returns the id of the specific keys used GetKID() string }
type LocalCerts ¶ added in v0.3.0
LocalCerts specify where locally to find the certs for a hash.
type NOOP ¶
type NOOP struct{}
NOOP will just return the message
func (*NOOP) DecryptMessage ¶
DecryptMessage simply returns the message given.
func (*NOOP) EncryptMessage ¶
EncryptMessage simply returns the message given.
func (*NOOP) GetAlgorithm ¶ added in v0.4.0
func (*NOOP) GetAlgorithm() AlgorithmType
GetAlgorithm returns None.
type Options ¶ added in v0.3.2
type Options []Config
Options is the list of configurations used to load ciphers.
type RSALoader ¶ added in v0.4.0
type RSALoader struct { KID string Hash HashLoader PrivateKey KeyLoader PublicKey KeyLoader }
RSALoader loads the encrypter/decrypter for the RSA algorithm.
func (*RSALoader) LoadDecrypt ¶ added in v0.4.0
LoadDecrypt loads the RSA decrypter.
func (*RSALoader) LoadEncrypt ¶ added in v0.4.0
LoadEncrypt loads the RSA encrypter.