pub struct FscryptInoLblk64DirCipher { /* private fields */ }Expand description
Directory and symlink cipher for FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64.
Per the Linux fscrypt specification (fs/crypto/keysetup.c and fs/crypto/crypto.c),
IV_INO_LBLK_64 derives a shared per-mode cts_key using HKDF_CONTEXT_IV_INO_LBLK_64_KEY
(4) and constructs the 16-byte AES-256-CBC-CTS IV by placing the unhashed 32-bit inode
number in bits 32..63 ([0, object_id as u32, 0, 0], with lblk_num = 0 in bits 0..31).
Implementations§
Source§impl FscryptInoLblk64DirCipher
impl FscryptInoLblk64DirCipher
pub fn new(key: &UnwrappedKey) -> Self
Trait Implementations§
Source§impl Cipher for FscryptInoLblk64DirCipher
impl Cipher for FscryptInoLblk64DirCipher
Source§fn encrypt(
&self,
_ino: u64,
_attribute_id: u64,
_device_offset: u64,
_file_offset: u64,
_buffer: MutPtrByteSlice<'_>,
) -> Result<(), Error>
fn encrypt( &self, _ino: u64, _attribute_id: u64, _device_offset: u64, _file_offset: u64, _buffer: MutPtrByteSlice<'_>, ) -> Result<(), Error>
Encrypts data in the
buffer. Read moreSource§fn decrypt(
&self,
_ino: u64,
_attribute_id: u64,
_device_offset: u64,
_file_offset: u64,
_buffer: MutPtrByteSlice<'_>,
) -> Result<(), Error>
fn decrypt( &self, _ino: u64, _attribute_id: u64, _device_offset: u64, _file_offset: u64, _buffer: MutPtrByteSlice<'_>, ) -> Result<(), Error>
Decrypt the data in
buffer. Read moreSource§fn encrypt_filename(
&self,
object_id: u64,
buffer: &mut Vec<u8>,
) -> Result<(), Error>
fn encrypt_filename( &self, object_id: u64, buffer: &mut Vec<u8>, ) -> Result<(), Error>
Encrypts the filename contained in
buffer.Source§fn decrypt_filename(
&self,
object_id: u64,
buffer: &mut Vec<u8>,
) -> Result<(), Error>
fn decrypt_filename( &self, object_id: u64, buffer: &mut Vec<u8>, ) -> Result<(), Error>
Decrypts the filename contained in
buffer.Source§fn encrypt_symlink(
&self,
object_id: u64,
buffer: &mut Vec<u8>,
) -> Result<(), Error>
fn encrypt_symlink( &self, object_id: u64, buffer: &mut Vec<u8>, ) -> Result<(), Error>
Encrypts the symlink target contained in
buffer.Source§fn decrypt_symlink(
&self,
object_id: u64,
buffer: &mut Vec<u8>,
) -> Result<(), Error>
fn decrypt_symlink( &self, object_id: u64, buffer: &mut Vec<u8>, ) -> Result<(), Error>
Decrypts the symlink target contained in
buffer.Source§fn hash_code(&self, _raw_filename: &[u8], _filename: &str) -> Option<u32>
fn hash_code(&self, _raw_filename: &[u8], _filename: &str) -> Option<u32>
Returns a hash_code to use.
Note in the case of encrypted filenames, takes the raw encrypted bytes.
Source§fn hash_code_casefold(&self, filename: &str) -> u32
fn hash_code_casefold(&self, filename: &str) -> u32
Returns a case-folded hash_code to use for ‘filename’.
Source§fn supports_inline_encryption(&self) -> bool
fn supports_inline_encryption(&self) -> bool
True if supports inline encryption
Source§fn crypt_ctx(
&self,
_ino: u64,
_attribute_id: u64,
_file_offset: u64,
) -> Option<(u64, u8)>
fn crypt_ctx( &self, _ino: u64, _attribute_id: u64, _file_offset: u64, ) -> Option<(u64, u8)>
If this cipher type supports inline encryption, returns the (dun, slot) value.
Else returns None.
Source§fn decrypt_to(
&self,
ino: u64,
attribute_id: u64,
device_offset: u64,
file_offset: u64,
src: PtrByteSlice<'_>,
dst: MutPtrByteSlice<'_>,
) -> Result<(), Error>
fn decrypt_to( &self, ino: u64, attribute_id: u64, device_offset: u64, file_offset: u64, src: PtrByteSlice<'_>, dst: MutPtrByteSlice<'_>, ) -> Result<(), Error>
Auto Trait Implementations§
impl Freeze for FscryptInoLblk64DirCipher
impl RefUnwindSafe for FscryptInoLblk64DirCipher
impl Send for FscryptInoLblk64DirCipher
impl Sync for FscryptInoLblk64DirCipher
impl Unpin for FscryptInoLblk64DirCipher
impl UnsafeUnpin for FscryptInoLblk64DirCipher
impl UnwindSafe for FscryptInoLblk64DirCipher
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more