feat(cli): add passwd command for instant master password changes

This commit is contained in:
2026-09-07 17:29:50 +02:00
parent 58336fc059
commit a9c3dd25a3
5 changed files with 242 additions and 1 deletions
+29
View File
@@ -225,6 +225,35 @@ impl Database {
})
}
/// Aktualisiert KDF-Salt, KDF-Parameter und den neu verpackten DEK im Header (Passwortänderung).
pub fn update_meta_keys(
&self,
new_salt: &[u8; 16],
new_params: &KdfParams,
new_wrapped_dek: &[u8],
new_header_nonce: &[u8; 12],
new_header_tag: &[u8; 16],
) -> Result<()> {
let conn = self.conn.lock().unwrap();
let params_json = serde_json::to_string(new_params)?;
let rows_affected = conn.execute(
"UPDATE meta SET kdf_salt = ?1, kdf_params = ?2, wrapped_dek = ?3, header_nonce = ?4, header_tag = ?5",
params![
new_salt.as_slice(),
params_json,
new_wrapped_dek,
new_header_nonce.as_slice(),
new_header_tag.as_slice(),
],
)?;
if rows_affected == 0 {
bail!("Konnte Container-Header nicht aktualisieren: meta-Tabelle ist leer");
}
Ok(())
}
/// Löst einen hierarchischen Pfad (z. B. "/ordner/datei.txt") in den entsprechenden NodeRecord auf.
pub fn resolve_path(&self, raw_path: &str) -> Result<Option<NodeRecord>> {
let normalized = raw_path.trim_matches('/');