fix(integrity): return AttestationStatus::Unavailable for key version mismatch

This commit is contained in:
CleverWild
2026-06-22 15:50:43 +02:00
committed by Skipper
parent 39d5dfd2e8
commit 5824df16b1
2 changed files with 54 additions and 2 deletions

View File

@@ -63,6 +63,9 @@ pub enum Error {
#[error("Broken database")]
BrokenDatabase,
#[error("Integrity key version mismatch: envelope uses key {envelope}, current key is {current}")]
KeyVersionMismatch { envelope: i32, current: i32 },
}
struct Unsealed {
@@ -393,7 +396,10 @@ impl Vault {
} = Self::expect_unsealed(&mut self.state)?;
if *root_key_history_id != key_version {
return Ok(false);
return Err(Error::KeyVersionMismatch {
envelope: key_version,
current: *root_key_history_id,
});
}
let mut hmac = root_key.0.read_inline(|k| {