1#[derive(Debug, Clone)]
4pub enum RarHeader {
5 Archive(ArchiveHeader),
6 File(FileHeader),
7 EndArchive(EndArchiveHeader),
8 Service(ServiceHeader),
9}
10
11#[derive(Debug, Clone)]
12pub struct ArchiveHeader {
13 pub is_first_volume: bool,
14 pub volume_number: Option<i32>,
15}
16
17#[derive(Debug, Clone)]
18pub struct FileHeader {
19 pub filename: String,
20 pub uncompressed_size: u64,
21 pub compressed_size: u64,
22 pub compression_method: u8,
23 pub data_start_position: u64,
25 pub data_size: u64,
27 pub is_directory: bool,
28 pub is_encrypted: bool,
29 pub is_solid: bool,
30 pub volume_number: Option<i32>,
31 pub encryption: Option<RarEncryption>,
32}
33
34#[derive(Debug, Clone)]
35pub struct EndArchiveHeader {
36 pub volume_number: Option<i32>,
37}
38
39#[derive(Debug, Clone)]
40pub struct ServiceHeader {
41 pub name: String,
42 pub data_size: u64,
43}
44
45#[derive(Debug, Clone)]
46pub enum RarEncryption {
47 Rar4 {
48 salt: [u8; 8],
49 },
50 Rar5 {
51 lg2_count: u8,
52 salt: Vec<u8>,
53 use_psw_check: bool,
54 psw_check: Vec<u8>,
55 iv: Vec<u8>,
56 },
57}