Documentation
¶
Index ¶
- Constants
- type DefaultMessageCrypto
- func (d *DefaultMessageCrypto) AddPublicKeyCipher(keyNames []string, keyReader KeyReader) error
- func (d *DefaultMessageCrypto) Decrypt(msgMetadata MessageMetadataSupplier, payload []byte, keyReader KeyReader) ([]byte, error)
- func (d *DefaultMessageCrypto) Encrypt(encKeys []string, keyReader KeyReader, msgMetadata MessageMetadataSupplier, ...) ([]byte, error)
- func (d *DefaultMessageCrypto) RemoveKeyCipher(keyName string) bool
- type EncryptionKeyInfo
- type FileKeyReader
- type KeyReader
- type MessageCrypto
- type MessageMetadata
- type MessageMetadataSupplier
Constants ¶
const ( // ProducerCryptoFailureActionFail this is the default option to fail send if crypto operation fails. ProducerCryptoFailureActionFail = iota // ProducerCryptoFailureActionSend ignore crypto failure and proceed with sending unencrypted message. ProducerCryptoFailureActionSend )
const ( // ConsumerCryptoFailureActionFail this is the default option to fail consume messages until crypto succeeds. ConsumerCryptoFailureActionFail = iota // ConsumerCryptoFailureActionDiscard message is silently acknowledged and not delivered to the application ConsumerCryptoFailureActionDiscard // ConsumerCryptoFailureActionConsume deliver the encrypted message to the application. // It's the application's responsibility to decrypt the message. // if message is also compressed, decompression will fail. // If message contain batch messages, client will not be able to retrieve // individual messages in the batch. // delivered encrypted message contains EncryptionContext which contains encryption // and compression information in it using which application can decrypt the payload. ConsumerCryptoFailureActionConsume )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DefaultMessageCrypto ¶
type DefaultMessageCrypto struct {
// contains filtered or unexported fields
}
DefaultMessageCrypto implementation of the interface MessageCryto
func NewDefaultMessageCrypto ¶
func NewDefaultMessageCrypto(logCtx string, keyGenNeeded bool, logger log.Logger) (*DefaultMessageCrypto, error)
NewDefaultMessageCrypto get the instance of message crypto
func (*DefaultMessageCrypto) AddPublicKeyCipher ¶
func (d *DefaultMessageCrypto) AddPublicKeyCipher(keyNames []string, keyReader KeyReader) error
AddPublicKeyCipher encrypt data key using keyCrypto and cache
func (*DefaultMessageCrypto) Decrypt ¶
func (d *DefaultMessageCrypto) Decrypt(msgMetadata MessageMetadataSupplier, payload []byte, keyReader KeyReader) ([]byte, error)
Decrypt the payload using decrypted data key. Here data key is read from the message metadata and decrypted using private key.
func (*DefaultMessageCrypto) Encrypt ¶
func (d *DefaultMessageCrypto) Encrypt(encKeys []string, keyReader KeyReader, msgMetadata MessageMetadataSupplier, payload []byte) ([]byte, error)
Encrypt payload using encryption keys and add encrypted data key to message metadata. Here data key is encrypted using public key
func (*DefaultMessageCrypto) RemoveKeyCipher ¶
func (d *DefaultMessageCrypto) RemoveKeyCipher(keyName string) bool
RemoveKeyCipher remove encrypted data key from cache
type EncryptionKeyInfo ¶
type EncryptionKeyInfo struct {
// contains filtered or unexported fields
}
EncryptionKeyInfo
func NewEncryptionKeyInfo ¶
func NewEncryptionKeyInfo(name string, key []byte, metadata map[string]string) *EncryptionKeyInfo
NewEncryptionKeyInfo create a new EncryptionKeyInfo
func (*EncryptionKeyInfo) Metadata ¶
func (eci *EncryptionKeyInfo) Metadata() map[string]string
Metadata get key metadata
func (*EncryptionKeyInfo) Name ¶
func (eci *EncryptionKeyInfo) Name() string
Name get the name of the key
type FileKeyReader ¶
type FileKeyReader struct {
// contains filtered or unexported fields
}
FileKeyReader default implementation of KeyReader
func NewFileKeyReader ¶
func NewFileKeyReader(publicKeyPath, privateKeyPath string) *FileKeyReader
func (*FileKeyReader) PrivateKey ¶
func (d *FileKeyReader) PrivateKey(keyName string, keyMeta map[string]string) (*EncryptionKeyInfo, error)
PrivateKey read private key from the given path
func (*FileKeyReader) PublicKey ¶
func (d *FileKeyReader) PublicKey(keyName string, keyMeta map[string]string) (*EncryptionKeyInfo, error)
PublicKey read public key from the given path
type KeyReader ¶
type KeyReader interface {
// PublicKey get public key that is be used by the producer to encrypt data key
PublicKey(keyName string, metadata map[string]string) (*EncryptionKeyInfo, error)
// PrivateKey get private key that is used by the consumer to decrypt data key
PrivateKey(keyName string, metadata map[string]string) (*EncryptionKeyInfo, error)
}
KeyReader implement this interface to read and provide public & private keys key pair can be RSA, ECDSA
type MessageCrypto ¶
type MessageCrypto interface {
// AddPublicKeyCipher encrypt data using the public key(s) in the argument.
// If more than one key name is specified, data key is encrypted using each of those keys.
// If the public key is expired or changed, application is responsible to remove
// the old key and add the new key.
AddPublicKeyCipher(keyNames []string, keyReader KeyReader) error
// RemoveKeyCipher remove the key from the list
RemoveKeyCipher(keyName string) bool
// Encrypt the payload using the data key and update
// message metadata with the key and encrypted data key
Encrypt(encKeys []string, KeyReader KeyReader, msgMetadata MessageMetadataSupplier, payload []byte) ([]byte, error)
// Decrypt the payload using the data key.
// Keys used to encrypt the data key can be retrieved from msgMetadata
Decrypt(msgMetadata MessageMetadataSupplier, payload []byte, KeyReader KeyReader) ([]byte, error)
}
MessageCrypto implement this interface to encrypt and decrypt messages
type MessageMetadata ¶
type MessageMetadata struct {
// contains filtered or unexported fields
}
func (*MessageMetadata) EncryptionKeys ¶
func (m *MessageMetadata) EncryptionKeys() []EncryptionKeyInfo
func (*MessageMetadata) EncryptionParam ¶
func (m *MessageMetadata) EncryptionParam() []byte
func (*MessageMetadata) SetEncryptionParam ¶
func (m *MessageMetadata) SetEncryptionParam(param []byte)
func (*MessageMetadata) UpsertEncryptionKey ¶
func (m *MessageMetadata) UpsertEncryptionKey(keyInfo EncryptionKeyInfo)
type MessageMetadataSupplier ¶
type MessageMetadataSupplier interface {
// EncryptionKeys read all the encryption keys from the MessageMetadata
EncryptionKeys() []EncryptionKeyInfo
// UpsertEncryptionKey add new or update existing EncryptionKeys in to the MessageMetadata
UpsertEncryptionKey(EncryptionKeyInfo)
// EncryptionParam read the ecryption parameter from the MessageMetadata
EncryptionParam() []byte
// SetEncryptionParam set encryption parameter in to the MessageMetadata
SetEncryptionParam([]byte)
}
MessageMetadataSupplier wrapper implementation around message metadata
func NewMessageMetadataSupplier ¶
func NewMessageMetadataSupplier(messageMetadata *pb.MessageMetadata) MessageMetadataSupplier