aboutsummaryrefslogtreecommitdiff
path: root/src/zip/structs.rs
diff options
context:
space:
mode:
authorIgor Tolmachev <me@igorek.dev>2024-07-20 16:52:39 +0900
committerIgor Tolmachev <me@igorek.dev>2024-07-20 16:52:39 +0900
commit7bcdc3b4ca460aec2b98fb2dca6165788c562b05 (patch)
tree63f9616fc1b7f9ca6e414a4d32910720e155690c /src/zip/structs.rs
parent5f4ceda88c7299deb317f8d22a99ab2521c5a380 (diff)
downloadarchivator-7bcdc3b4ca460aec2b98fb2dca6165788c562b05.tar.gz
archivator-7bcdc3b4ca460aec2b98fb2dca6165788c562b05.zip
Partial aes implementation and others improvements
Diffstat (limited to 'src/zip/structs.rs')
-rw-r--r--src/zip/structs.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/zip/structs.rs b/src/zip/structs.rs
index ebecae7..8b25400 100644
--- a/src/zip/structs.rs
+++ b/src/zip/structs.rs
@@ -1,6 +1,9 @@
1use crate::structs::{ByteOrder, Settings, StructResult, VariantIndexType}; 1use crate::structs::{ByteOrder, Settings, StructResult, VariantIndexType};
2use serde::{Deserialize, Serialize}; 2use serde::{Deserialize, Serialize};
3 3
4pub const FILE_HEADER_SIGNATURE: [u8; 4] = [0x50, 0x4b, 0x03, 0x04];
5
6pub const EOCDR_SIGNATURE: [u8; 4] = [0x50, 0x4b, 0x05, 0x06];
4#[derive(Serialize, Deserialize)] 7#[derive(Serialize, Deserialize)]
5pub struct Eocdr { 8pub struct Eocdr {
6 pub eocdr_disk: u16, 9 pub eocdr_disk: u16,
@@ -12,6 +15,7 @@ pub struct Eocdr {
12 pub comment_len: u16, 15 pub comment_len: u16,
13} 16}
14 17
18pub const EOCDR64_LOCATOR_SIGNATURE: [u8; 4] = [0x50, 0x4b, 0x06, 0x07];
15#[derive(Serialize, Deserialize)] 19#[derive(Serialize, Deserialize)]
16pub struct Eocdr64Locator { 20pub struct Eocdr64Locator {
17 pub eocdr64_disk: u32, 21 pub eocdr64_disk: u32,
@@ -19,6 +23,7 @@ pub struct Eocdr64Locator {
19 pub disks: u32, 23 pub disks: u32,
20} 24}
21 25
26pub const EOCDR64_SIGNATURE: [u8; 4] = [0x50, 0x4b, 0x06, 0x06];
22#[derive(Serialize, Deserialize)] 27#[derive(Serialize, Deserialize)]
23pub struct Eocdr64 { 28pub struct Eocdr64 {
24 pub eocdr64_size: u64, 29 pub eocdr64_size: u64,
@@ -32,6 +37,7 @@ pub struct Eocdr64 {
32 pub cd_pointer: u64, 37 pub cd_pointer: u64,
33} 38}
34 39
40pub const CDR_SIGNATURE: [u8; 4] = [0x50, 0x4b, 0x01, 0x02];
35#[derive(Serialize, Deserialize)] 41#[derive(Serialize, Deserialize)]
36pub struct Cdr { 42pub struct Cdr {
37 pub version: u16, 43 pub version: u16,
@@ -58,6 +64,14 @@ pub struct ExtraHeader {
58 pub size: u16, 64 pub size: u16,
59} 65}
60 66
67#[derive(Serialize, Deserialize)]
68pub struct AesField {
69 pub version: u16,
70 pub id: u16,
71 pub strength: u8,
72 pub compression_method: u16,
73}
74
61#[inline] 75#[inline]
62#[allow(dead_code)] 76#[allow(dead_code)]
63pub fn serialize<T: Serialize>(object: &mut T) -> StructResult<Vec<u8>> { 77pub fn serialize<T: Serialize>(object: &mut T) -> StructResult<Vec<u8>> {