feat(cli): add passwd command for instant master password changes
This commit is contained in:
@@ -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('/');
|
||||
|
||||
Reference in New Issue
Block a user