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}