pub struct Hxv4Crypt {
base: Mutex<Option<HxCrypt>>,
file_mapping: Arc<HashMap<FileHash, String>>,
path_mapping: Arc<HashMap<PathHash, String>>,
key_packages: Vec<KeyPackage>,
project: String,
config: ExtraConfig,
filename: String,
}Available on crate features
kirikiri and kirikiri-arc only.Fields§
§base: Mutex<Option<HxCrypt>>§file_mapping: Arc<HashMap<FileHash, String>>§path_mapping: Arc<HashMap<PathHash, String>>§key_packages: Vec<KeyPackage>§project: String§config: ExtraConfig§filename: StringImplementations§
Source§impl Hxv4Crypt
impl Hxv4Crypt
pub fn new(filename: &str, config: &ExtraConfig) -> Result<Self>
pub fn new2( key_packages: &[KeyPackage], project: &str, filename: &str, config: &ExtraConfig, ) -> Result<Self>
fn load_package( &self, pack: &KeyPackage, archive: &mut Xp3Archive<'_>, ) -> Result<HxCrypt>
Trait Implementations§
Source§impl Crypt for Hxv4Crypt
impl Crypt for Hxv4Crypt
Source§fn startup_tjs_not_encrypted(&self) -> bool
fn startup_tjs_not_encrypted(&self) -> bool
whether the startup.tjs script is not encrypted even when the archive is encrypted.
Source§fn obfuscated_index(&self) -> bool
fn obfuscated_index(&self) -> bool
whether XP3 index is obfuscated: Read more
Source§fn hash_after_crypt(&self) -> bool
fn hash_after_crypt(&self) -> bool
whether Adler32 checksum should be calculated after contents have been encrypted.
Source§fn init(&self, archive: &mut Xp3Archive<'_>) -> Result<()>
fn init(&self, archive: &mut Xp3Archive<'_>) -> Result<()>
Initializes the cryptographic context for the archive.
Source§fn decrypt_supported(&self) -> bool
fn decrypt_supported(&self) -> bool
Returns true if this crypt support decrypt
Source§fn decrypt_seek_supported(&self) -> bool
fn decrypt_seek_supported(&self) -> bool
Returns true if this crypt support seek when decrypting
Source§fn decrypt<'a>(
&self,
entry: &Xp3Entry,
cur_seg: &Segment,
stream: Box<dyn Read + Send + Sync + 'a>,
) -> Result<Box<dyn ReadDebug + Send + Sync + 'a>>
fn decrypt<'a>( &self, entry: &Xp3Entry, cur_seg: &Segment, stream: Box<dyn Read + Send + Sync + 'a>, ) -> Result<Box<dyn ReadDebug + Send + Sync + 'a>>
Decrypts the given stream of data for the specified entry and segment.
Source§fn decrypt_with_seek<'a>(
&self,
entry: &Xp3Entry,
cur_seg: &Segment,
stream: Box<dyn ReadSeek + Send + Sync + 'a>,
) -> Result<Box<dyn ReadSeek + Send + Sync + 'a>>
fn decrypt_with_seek<'a>( &self, entry: &Xp3Entry, cur_seg: &Segment, stream: Box<dyn ReadSeek + Send + Sync + 'a>, ) -> Result<Box<dyn ReadSeek + Send + Sync + 'a>>
Decrypts the given stream of data for the specified entry and segment, with seek support.
Source§fn read_name<'a>(
&self,
reader: &mut Box<dyn Read + 'a>,
) -> Result<(String, u64)>
fn read_name<'a>( &self, reader: &mut Box<dyn Read + 'a>, ) -> Result<(String, u64)>
Read a entry name from archive index
Source§fn need_filter(&self, _filename: &str, _buf: &[u8], _buf_len: usize) -> bool
fn need_filter(&self, _filename: &str, _buf: &[u8], _buf_len: usize) -> bool
Determine whether the file with the given name and content need to be extra processed after decryption. (e.g. extra decryption by file type)
Source§fn filter_seek_supported(&self) -> bool
fn filter_seek_supported(&self) -> bool
Returns true if this crypt support seek when filtering
Auto Trait Implementations§
impl !Freeze for Hxv4Crypt
impl RefUnwindSafe for Hxv4Crypt
impl Send for Hxv4Crypt
impl Sync for Hxv4Crypt
impl Unpin for Hxv4Crypt
impl UnwindSafe for Hxv4Crypt
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more