#[non_exhaustive]pub enum FileVaultError {
Io(Error),
NotCoreStorage {
found: u16,
},
UnsupportedEncryptionMethod {
found: u32,
},
MetadataStructureMissing {
what: &'static str,
},
Base64 {
what: &'static str,
},
KeyUnwrap {
what: &'static str,
},
OutOfRange {
what: &'static str,
},
}Expand description
Errors surfaced while parsing or decrypting a CoreStorage / FileVault volume.
Every failure is loud and named (Fail-loud): a bootstrap failure — a missing
CoreStorage signature, an unreadable metadata block, a failed key unwrap — is
an explicit error, never an empty/Ok degrade. A per-artifact miss inside a
validated volume is the only place a silent skip is legitimate.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Io(Error)
An I/O error reading the underlying image.
NotCoreStorage
The physical volume header does not carry the CoreStorage "CS"
signature at offset 88 — this is not a CoreStorage volume. Carries the
bytes that WERE found (Show-the-unrecognized-value).
UnsupportedEncryptionMethod
The encryption method is not AES-XTS-128 (the only supported method).
MetadataStructureMissing
A required metadata structure could not be located in the (decrypted) metadata — the encryption context, a wrapped-key struct, or the family UUID. Names which one so the investigator knows what was missing.
Base64
A base64 blob in the encryption context did not decode.
KeyUnwrap
An RFC 3394 AES key-unwrap failed (wrong password, or corrupt wrapped
key): the integrity check value did not match 0xA6A6A6A6A6A6A6A6.
The password-derived unwrap failing is the “wrong password” signal.
OutOfRange
A length or count field taken from the image was out of range.
Trait Implementations§
Source§impl Debug for FileVaultError
impl Debug for FileVaultError
Source§impl Display for FileVaultError
impl Display for FileVaultError
Source§impl Error for FileVaultError
impl Error for FileVaultError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()