bc_components/encrypted_key/key_derivation.rs
1use anyhow::Result;
2use dcbor::prelude::*;
3
4use crate::{EncryptedMessage, SymmetricKey};
5
6/// Trait for key derivation implementations.
7pub trait KeyDerivation: CBORCodable {
8 const INDEX: usize;
9
10 fn lock(
11 &mut self,
12 content_key: &SymmetricKey,
13 secret: impl AsRef<[u8]>,
14 ) -> Result<EncryptedMessage>;
15
16 fn unlock(
17 &self,
18 encrypted_message: &EncryptedMessage,
19 secret: impl AsRef<[u8]>,
20 ) -> Result<SymmetricKey>;
21}