pub fn replace_plaintext_preserving_slots(
data: &[u8],
unlock: &[Kek],
plaintext: &[u8],
metadata: &ReplacementMetadata,
new_base_nonce: [u8; 7],
) -> Result<EncryptedFile>Expand description
用新明文替换单文件载荷,同时逐字节保留原槽区。
这是外部编辑回写用的格式操作。它与 rotate_fek 的目标相反:轮换要让旧
FEK/旧密码失效,这里必须让原有密码、设备密钥、恢复码全部继续有效。因此保留
file_uuid、FEK 和完整 slot area,只生成新的 base_nonce 并重建载荷、内容
哈希及媒体 TLV。新 nonce 是硬约束;同一 (FEK, file_uuid) 下复用旧 nonce
加密不同明文会破坏 AEAD 安全性。
目录容器不能走这条路径:第三方编辑器拿到的是一个普通文件,无法表达容器索引 与多文件载荷的同步修改。
§Errors
原文件打不开、是目录容器、槽区或头部截断,以及重新加密失败时返回错误。