pub struct EncryptionContext {
pub salt: [u8; 16],
pub iterations: u32,
pub wrapped_kek: [u8; 24],
pub wrapped_vmk: [u8; 24],
pub protectors: Vec<Protector>,
pub conversion_status: Option<String>,
}Expand description
The password protector’s wrapped-key material and PBKDF2 parameters.
Fields§
§salt: [u8; 16]PBKDF2 salt (16 bytes) from the PassphraseWrappedKEKStruct (offset 8).
iterations: u32PBKDF2 iteration count. NOTE: on the fvdetest ground truth this reads from struct offset 168 (RESEARCH.md’s “172” is one field further on and reads 1); offset 168 yields the verified 90506.
wrapped_kek: [u8; 24]Wrapped KEK (24 bytes) from PassphraseWrappedKEKStruct offset 32.
wrapped_vmk: [u8; 24]Wrapped volume master key (24 bytes) from the AES-XTS
KEKWrappedVolumeKeyStruct offset 8.
protectors: Vec<Protector>Protectors (crypto users) present, by UserType.
conversion_status: Option<String>LV conversion status (Complete / Converting / …), if present.
Implementations§
Source§impl EncryptionContext
impl EncryptionContext
Sourcepub fn extract(metadata: &[u8]) -> Result<Self, FileVaultError>
pub fn extract(metadata: &[u8]) -> Result<Self, FileVaultError>
Extract the encryption context from decrypted metadata.
§Errors
FileVaultError::MetadataStructureMissing if the passphrase-wrapped or
KEK-wrapped struct is absent; FileVaultError::Base64 on a bad blob;
FileVaultError::OutOfRange if a struct is too short.
Trait Implementations§
Source§impl Clone for EncryptionContext
impl Clone for EncryptionContext
Source§fn clone(&self) -> EncryptionContext
fn clone(&self) -> EncryptionContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more