pub trait StreamInterface: Sync + Send {
    // Required methods
    fn id(&self) -> &StreamId;
    fn encrypt(
        &self,
        csprng: &mut dyn CryptoSrc,
        lock_type: LockboxType,
        content: &[u8]
    ) -> Vec<u8> ;
    fn decrypt_lock_key(
        &self,
        lockbox: &LockLockboxRef
    ) -> Result<LockKey, CryptoError>;
    fn decrypt_identity_key(
        &self,
        lockbox: &IdentityLockboxRef
    ) -> Result<IdentityKey, CryptoError>;
    fn decrypt_stream_key(
        &self,
        lockbox: &StreamLockboxRef
    ) -> Result<StreamKey, CryptoError>;
    fn decrypt_data(
        &self,
        lockbox: &DataLockboxRef
    ) -> Result<Vec<u8>, CryptoError>;
    fn self_export_lock(
        &self,
        csprng: &mut dyn CryptoSrc,
        receive_lock: &LockId
    ) -> Option<StreamLockbox>;
    fn self_export_stream(
        &self,
        csprng: &mut dyn CryptoSrc,
        receive_stream: &StreamKey
    ) -> Option<StreamLockbox>;
}
Expand description

A symmetric encryption/decryption interface, implemented by anything that can hold a symmetric encryption key.

An implementor must handle all supported symmetric-key encryption algorithms.

Required Methods§

source

fn id(&self) -> &StreamId

Get the corresponding StreamId for the symmetric key.

source

fn encrypt( &self, csprng: &mut dyn CryptoSrc, lock_type: LockboxType, content: &[u8] ) -> Vec<u8>

Encrypt raw data into a lockbox, following the StreamKey-recipient lockbox format (see lockbox.

source

fn decrypt_lock_key( &self, lockbox: &LockLockboxRef ) -> Result<LockKey, CryptoError>

Decrypt a LockLockboxRef and return a temporary (not stored in Vault) LockKey on success.

source

fn decrypt_identity_key( &self, lockbox: &IdentityLockboxRef ) -> Result<IdentityKey, CryptoError>

Decrypt a IdentityLockboxRef and return a temporary (not stored in Vault) IdentityKey on success.

source

fn decrypt_stream_key( &self, lockbox: &StreamLockboxRef ) -> Result<StreamKey, CryptoError>

Decrypt a StreamLockboxRef and return a temporary (not stored in Vault) StreamKey on success.

source

fn decrypt_data(&self, lockbox: &DataLockboxRef) -> Result<Vec<u8>, CryptoError>

Decrypt a DataLockboxRef and return a the decoded raw data on success.

source

fn self_export_lock( &self, csprng: &mut dyn CryptoSrc, receive_lock: &LockId ) -> Option<StreamLockbox>

Export the symmetric key in a StreamLockbox, with receive_lock as the recipient. If the key cannot be exported, this should return None.

source

fn self_export_stream( &self, csprng: &mut dyn CryptoSrc, receive_stream: &StreamKey ) -> Option<StreamLockbox>

Export the symmetric key in a StreamLockbox, with receive_stream as the recipient. If the key cannot be exported, this should return None. Additionally, if the underlying implementation does not allow moving the raw key into memory (i.e. it cannot call StreamInterface::encrypt or lock_id_encrypt) then None can also be returned.

Implementors§