From f7167b26b95d566a68d45787c13f989e2f6f3ad8 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Tue, 24 Jan 2023 23:55:53 +0300 Subject: [PATCH 01/15] due maintenance --- Cargo.lock | 190 +++++++++++++-------------- vach/src/crypto.rs | 9 +- vach/src/loader/archive.rs | 4 +- vach/src/tests/mod.rs | 3 + vach/src/writer/builder/config.rs | 3 +- vach/test_data/encrypted/target.vach | Bin 191111 -> 191111 bytes vach/test_data/signed/target.vach | Bin 190972 -> 190972 bytes vach/test_data/simple/target.vach | Bin 190433 -> 190433 bytes 8 files changed, 107 insertions(+), 102 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c887bc30..e26fe129 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,9 +39,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -63,9 +63,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "atty" @@ -73,7 +73,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -112,9 +112,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -134,9 +134,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" [[package]] name = "byteorder" @@ -202,15 +202,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c050367d967ced717c04b65d8c619d863ef9292ce0c5760028655a2fb298718c" +checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" dependencies = [ "encode_unicode", "lazy_static", "libc", - "terminal_size", - "winapi", + "windows-sys", ] [[package]] @@ -281,9 +280,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.11" +version = "0.9.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" dependencies = [ "autocfg", "cfg-if", @@ -294,9 +293,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if", ] @@ -356,9 +355,9 @@ dependencies = [ [[package]] name = "ed25519" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9c280362032ea4203659fc489832d0204ef09f247a0506f170dafcac08c369" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" dependencies = [ "signature", ] @@ -454,6 +453,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "humantime" version = "1.3.0" @@ -465,9 +473,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown", @@ -502,9 +510,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "js-sys" @@ -523,9 +531,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.137" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "lock_api" @@ -563,9 +571,9 @@ checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" dependencies = [ "autocfg", ] @@ -581,11 +589,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi", + "hermit-abi 0.2.6", "libc", ] @@ -597,9 +605,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "oorandom" @@ -615,9 +623,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "os_str_bytes" -version = "6.4.0" +version = "6.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5bf27447411e9ee3ff51186bf7a08e16c341efdde93f4d823e8844429bed7e" +checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" [[package]] name = "papergrid" @@ -640,9 +648,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.4" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ "cfg-if", "libc", @@ -709,9 +717,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" dependencies = [ "unicode-ident", ] @@ -724,9 +732,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -774,21 +782,19 @@ dependencies = [ [[package]] name = "rayon" -version = "1.5.3" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.3" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -807,9 +813,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -830,9 +836,9 @@ checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "same-file" @@ -851,9 +857,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "serde" -version = "1.0.147" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" [[package]] name = "serde_cbor" @@ -867,9 +873,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.147" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -878,11 +884,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.87" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ - "itoa 1.0.4", + "itoa 1.0.5", "ryu", "serde", ] @@ -914,9 +920,9 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "snap" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45456094d1983e2ee2a18fdfebce3189fa451699d0502cb8e3b49dba5ba41451" +checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "static_assertions" @@ -938,9 +944,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.103" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", @@ -992,23 +998,13 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] -[[package]] -name = "terminal_size" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" -dependencies = [ - "libc", - "winapi", -] - [[package]] name = "textwrap" version = "0.11.0" @@ -1026,18 +1022,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -1066,15 +1062,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-width" @@ -1271,45 +1267,45 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "zeroize" @@ -1322,9 +1318,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.2" +version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" dependencies = [ "proc-macro2", "quote", diff --git a/vach/src/crypto.rs b/vach/src/crypto.rs index 72d852e2..e421e5d6 100644 --- a/vach/src/crypto.rs +++ b/vach/src/crypto.rs @@ -31,6 +31,7 @@ impl Encryptor { let key = Key::from_slice(bytes); let mut v = [178, 5, 239, 228, 165, 44, 169, 0, 0, 0, 0, 0]; (&mut v[7..12]).copy_from_slice(&magic); + dbg!(&v); Encryptor { cipher: Aes256Gcm::new(key), @@ -40,10 +41,14 @@ impl Encryptor { // The meat and the mass of this struct pub(crate) fn encrypt(&self, data: &[u8]) -> InternalResult> { - self.cipher.encrypt(&self.nonce, data).map_err(InternalError::CryptoError) + self.cipher + .encrypt(&self.nonce, data) + .map_err(InternalError::CryptoError) } pub(crate) fn decrypt(&self, data: &[u8]) -> InternalResult> { - self.cipher.decrypt(&self.nonce, data).map_err(InternalError::CryptoError) + self.cipher + .decrypt(&self.nonce, data) + .map_err(InternalError::CryptoError) } } diff --git a/vach/src/loader/archive.rs b/vach/src/loader/archive.rs index ccba7baa..8758bafa 100644 --- a/vach/src/loader/archive.rs +++ b/vach/src/loader/archive.rs @@ -50,8 +50,8 @@ impl std::fmt::Display for Archive { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let bytes = self .entries - .iter() - .map(|(_, entry)| entry.offset) + .values() + .map(|re| re.offset) .reduce(|a, b| a + b) .unwrap_or(0); diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index af54343d..6fe0fdd5 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -25,6 +25,9 @@ const CUSTOM_FLAG_4: u32 = 0b0000_0000_0000_0000_0000_0000_0001_0000; fn custom_bitflags() -> InternalResult { let target = File::open(SIMPLE_TARGET)?; let archive = Archive::new(target)?; + + dbg!(archive.entries()); + let entry = archive.fetch_entry("poem").unwrap(); let flags = entry.flags; diff --git a/vach/src/writer/builder/config.rs b/vach/src/writer/builder/config.rs index e5e22428..1a1134e2 100644 --- a/vach/src/writer/builder/config.rs +++ b/vach/src/writer/builder/config.rs @@ -28,11 +28,12 @@ pub struct BuilderConfig<'a> { /// /// let builder_config = BuilderConfig::default(); /// fn callback(leaf: &Leaf, reg_entry: &RegistryEntry) { - /// println!("Leaf: {leaf:?} has been processed into Entry: {reg_entry:?}") + /// println!("Leaf: {leaf:?} has been processed into Entry: {reg_entry:?}") /// } /// /// builder_config.callback(&callback); /// ``` + #[allow(clippy::type_complexity)] pub progress_callback: Option<&'a (dyn Fn(&Leaf, &RegistryEntry) + Send + Sync)>, } diff --git a/vach/test_data/encrypted/target.vach b/vach/test_data/encrypted/target.vach index 0a2e3bc21a3e75f5a43d545f42bc8301c07e65a7..bb36959a46284b751f3d4ca754bf0e30dcf015c9 100644 GIT binary patch delta 99 zcmZp_%H4jITO=&a(bfXdKt5sEm7rVyPp^1c0VsB%LUW5ycksg DQ~n+6 delta 101 zcmZp_%H4jITO=&a(bz>% diff --git a/vach/test_data/signed/target.vach b/vach/test_data/signed/target.vach index e038b0bba9bb5ac6b02eebeda4ad364ad5001f5c..985146c70e2a2e8041c9ac6dca5d28fa82be62f5 100644 GIT binary patch delta 90 zcmV-g0Hy!@(+m953y>O<;Q?X-!RwI}X9K}N0g>rs1qc8dLIIO=0cHaM>;RE|W&{8L w{OOZX0Ura?Ndc2a0%rmW3X@@kIkPAO+31t40zkJai~`bKg8}Tf0qg-Opc?BT!T&8TN0VIdYC5fVoYP@V0iU_Y2u3%H3kOfM@$UJfQun7za+jmGd(Xg z1t`t|QZPA?F^%!?g^#=A}<-hfR!O9zbG|#0uRFhuI7&ru@puK&B9QSpPCD1KmP;~5`<6; z91Q72si`HIdFfz*AD<@bOKzNZk)4T)Yx+S$Cd=)YS1{guv3>7ErW8g&kJOx;d>sYn d#Ny(_yp*Cu#pZmD?fD#xnhUloPG&j~0sudDDuDn1 delta 124 zcmaEOp8Mf>?g^%1nhO{iK!AmzJh3 Date: Fri, 17 Mar 2023 14:51:12 +0300 Subject: [PATCH 02/15] windows bug seems non-existent now --- vach/src/tests/mod.rs | 22 ++-------------------- vach/test_data/encrypted/target.vach | Bin 191111 -> 191111 bytes vach/test_data/signed/target.vach | Bin 190972 -> 190972 bytes vach/test_data/simple/target.vach | Bin 190433 -> 190433 bytes 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index 6fe0fdd5..72b064c4 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -115,16 +115,7 @@ fn simple_fetch() -> InternalResult { let mut archive = Archive::new(target)?; let resource = archive.fetch_mut("poem")?; - // Windows bullshit - #[cfg(target_os = "windows")] - { - assert_eq!(resource.data.len(), 359); - } - #[cfg(not(any(target_os = "windows", target_os = "ios")))] - { - assert_eq!(resource.data.len(), 345); - } - + assert_eq!(resource.data.len(), 345); assert!(!resource.authenticated); assert!(resource.flags.contains(Flags::COMPRESSED_FLAG)); @@ -265,16 +256,7 @@ fn fetch_from_encrypted() -> InternalResult { let resource = archive.fetch_mut("test_data/song.txt")?; let song = str::from_utf8(resource.data.as_slice()).unwrap(); - // Windows bullshit - #[cfg(target_os = "windows")] - { - assert_eq!(song.len(), 2041); - } - #[cfg(not(any(target_os = "windows", target_os = "ios")))] - { - assert_eq!(song.len(), 1977); - } - + assert_eq!(song.len(), 1977); assert!(resource.authenticated); assert!(!resource.flags.contains(Flags::COMPRESSED_FLAG)); assert!(resource.flags.contains(Flags::ENCRYPTED_FLAG)); diff --git a/vach/test_data/encrypted/target.vach b/vach/test_data/encrypted/target.vach index bb36959a46284b751f3d4ca754bf0e30dcf015c9..58a033f6508d7ccc130cd54ad9ba4d158ca51b26 100644 GIT binary patch delta 92 zcmZp_%H4jITO=&a(b){>ER0)v(p<78DP)yX>; vGnly;{3d%dWlol53D~@aDU-1|mt}h{3*%nb>B+B{RN8?`w`+MZSuOwo|F0Mr delta 90 zcmZp_%H4jITO=&a(bKN?+ diff --git a/vach/test_data/signed/target.vach b/vach/test_data/signed/target.vach index 985146c70e2a2e8041c9ac6dca5d28fa82be62f5..3210d3835744f01e877b86e632f6c41bd82a22b8 100644 GIT binary patch delta 145 zcmex!nfuRWZqu+dM`sTP1_ll}26i9?1eZM-Aq*(V#gLa@5?`E|o|l>e6yjjW4WC$- z&YTv{F!4ni^V)ER$$^Y%Olz4Y?_^A8;b7RGFi|99vNKcGX2v%MLM9)4?JzyhlTm!T mp%ddG_U#897$X^(xVR=Owpea{!F2OQJJ7oAmpz#@7XSdOD=V=8 delta 132 zcmex!nfuRWZjrDwM`sTP1_ll}26iCDz`?MVY4UBx45ovxCz_@+A9P@xI6sY9%879@ z2V)u&?g^$7mkB5{fPj81m}1aezzAlrFq9`2=Yp9Le;Fqlh**KyInS8Dv>=#d zVBla#FG@`<$;?Ziz{7BWs}?Gq0x^Vvg`prnHFx8-o$T8cCo>%gY5wtP`;SkInhQ4P fbBMeY^hnLg$=6YEPAo1?%u6XsRNUPBF@+HT$Qvp7 delta 155 zcmaEOp8Mf>?g^#=A}<-hfR!O9zbG|#0uRFhuI7&ru@puK&B9QSpPCD1KmP;~5`<6; z91Q72si`HIdFfz*AD<@rNHQx5XknmfI))WxV-fd+jr(6h=Xh j)SR4r9R=sa;^M@-l%hn%X8qXh`mv0f3pVF-90&mb6{Rdw From bba7ef7c6761b5e8a60ffd7c8cf274ebba0eede8 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Wed, 22 Mar 2023 16:33:38 +0300 Subject: [PATCH 03/15] maybe we have bug on windows --- vach/src/tests/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index 72b064c4..cef8e6f5 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -256,6 +256,12 @@ fn fetch_from_encrypted() -> InternalResult { let resource = archive.fetch_mut("test_data/song.txt")?; let song = str::from_utf8(resource.data.as_slice()).unwrap(); + // Windows bullshit + #[cfg(target_os = "windows")] + { + dbg!(&song); + } + assert_eq!(song.len(), 1977); assert!(resource.authenticated); assert!(!resource.flags.contains(Flags::COMPRESSED_FLAG)); From b1b21d611396e25092d44abf3ac810960cf8abfb Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 17 Sep 2023 12:10:44 +0300 Subject: [PATCH 04/15] patched up crate --- Cargo.lock | 547 ++++++++++++++++----------- vach/Cargo.toml | 7 +- vach/src/crypto.rs | 7 +- vach/src/crypto_utils/mod.rs | 2 +- vach/src/global/error.rs | 2 +- vach/src/loader/archive.rs | 18 +- vach/src/loader/resource.rs | 2 +- vach/src/tests/mod.rs | 16 +- vach/test_data/encrypted/target.vach | Bin 191111 -> 191111 bytes vach/test_data/signed/target.vach | Bin 190972 -> 190972 bytes vach/test_data/simple/target.vach | Bin 190433 -> 190433 bytes 11 files changed, 353 insertions(+), 248 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e26fe129..5f6fcff1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,30 +4,30 @@ version = 3 [[package]] name = "aead" -version = "0.4.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ + "crypto-common", "generic-array", ] [[package]] name = "aes" -version = "0.7.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" dependencies = [ "cfg-if", "cipher", "cpufeatures", - "opaque-debug", ] [[package]] name = "aes-gcm" -version = "0.9.4" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" dependencies = [ "aead", "aes", @@ -39,9 +39,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.20" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783" dependencies = [ "memchr", ] @@ -63,9 +63,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "atty" @@ -120,23 +120,11 @@ dependencies = [ "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde", -] - [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byteorder" @@ -158,11 +146,12 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cipher" -version = "0.3.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" dependencies = [ - "generic-array", + "crypto-common", + "inout", ] [[package]] @@ -178,9 +167,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", "bitflags", @@ -202,9 +191,9 @@ dependencies = [ [[package]] name = "console" -version = "0.15.5" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode", "lazy_static", @@ -214,9 +203,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] @@ -259,9 +248,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -269,9 +258,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -280,9 +269,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.13" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01a9af1f4c2ef74bb8aa1f7e19706bc72d03598c8a570bb5de72243c7a9d9d5a" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", @@ -293,22 +282,32 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.14" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "rand_core 0.6.4", + "typenum", +] + [[package]] name = "csv" -version = "1.1.6" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ - "bstr", "csv-core", - "itoa 0.4.8", + "itoa", "ryu", "serde", ] @@ -324,9 +323,9 @@ dependencies = [ [[package]] name = "ctr" -version = "0.8.0" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" dependencies = [ "cipher", ] @@ -339,7 +338,7 @@ checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" dependencies = [ "byteorder", "digest", - "rand_core", + "rand_core 0.5.1", "subtle", "zeroize", ] @@ -370,7 +369,7 @@ checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" dependencies = [ "curve25519-dalek", "ed25519", - "rand", + "rand 0.7.3", "serde", "sha2", "zeroize", @@ -378,9 +377,9 @@ dependencies = [ [[package]] name = "either" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -403,9 +402,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -419,14 +418,25 @@ checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", "libc", - "wasi", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "ghash" -version = "0.4.4" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +checksum = "d930750de5717d2dd0b8c0d42c076c0e884c81a73e6cab859bbd2339c71e3e40" dependencies = [ "opaque-debug", "polyval", @@ -455,12 +465,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "humantime" @@ -473,9 +480,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.2" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown", @@ -493,6 +500,15 @@ dependencies = [ "regex", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + [[package]] name = "itertools" version = "0.10.5" @@ -504,21 +520,15 @@ dependencies = [ [[package]] name = "itoa" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" - -[[package]] -name = "itoa" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" dependencies = [ "wasm-bindgen", ] @@ -531,15 +541,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.139" +version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" +checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -547,53 +557,50 @@ dependencies = [ [[package]] name = "log" -version = "0.4.17" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lz4_flex" -version = "0.9.5" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a8cbbb2831780bc3b9c15a41f5b49222ef756b6730a95f3decfdd15903eb5a3" +checksum = "3ea9b256699eda7b0387ffbc776dd625e28bde3918446381781245b7a50349d8" dependencies = [ "twox-hash", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" [[package]] name = "memoffset" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "num-traits" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.2", "libc", ] @@ -605,9 +612,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "once_cell" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "oorandom" @@ -623,9 +630,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "papergrid" @@ -648,22 +655,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys", + "windows-targets 0.48.5", ] [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -674,24 +681,24 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] [[package]] name = "polyval" -version = "0.5.3" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +checksum = "d52cff9d1d4dee5fe6d03729099f4a310a41179e0a10dbf542039873f2e826fb" dependencies = [ "cfg-if", "cpufeatures", @@ -717,9 +724,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.50" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" dependencies = [ "unicode-ident", ] @@ -732,9 +739,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.23" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -745,13 +752,24 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ - "getrandom", + "getrandom 0.1.16", "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.2.2", + "rand_core 0.5.1", "rand_hc", ] +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -759,7 +777,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", ] [[package]] @@ -768,7 +796,16 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" dependencies = [ - "getrandom", + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", ] [[package]] @@ -777,14 +814,14 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core", + "rand_core 0.5.1", ] [[package]] name = "rayon" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db3a213adf02b3bcfd2d3846bb41cb22857d131789e01df434fb7e7bc0759b7" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ "either", "rayon-core", @@ -792,9 +829,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.10.2" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "356a0625f1954f730c0201cdab48611198dc6ce21f4acff55089b5a78e6e835b" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -804,41 +841,47 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.7.1" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" +checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" dependencies = [ "aho-corasick", "memchr", + "regex-automata", "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] [[package]] name = "regex-syntax" -version = "0.6.28" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" [[package]] name = "ryu" -version = "1.0.12" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -851,15 +894,18 @@ dependencies = [ [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.152" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] [[package]] name = "serde_cbor" @@ -873,22 +919,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.152" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.36", ] [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ - "itoa 1.0.5", + "itoa", "ryu", "serde", ] @@ -914,9 +960,9 @@ checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "snap" @@ -938,15 +984,15 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "syn" -version = "1.0.107" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", @@ -954,15 +1000,14 @@ dependencies = [ ] [[package]] -name = "synstructure" -version = "0.12.6" +name = "syn" +version = "2.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +checksum = "91e02e55d62894af2a08aca894c6577281f76769ba47c94d5756bec8ac6e7373" dependencies = [ "proc-macro2", "quote", - "syn", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -983,7 +1028,7 @@ checksum = "278ea3921cee8c5a69e0542998a089f7a14fa43c9c4e4f9951295da89bd0c943" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", ] [[package]] @@ -1022,22 +1067,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.38" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.38" +version = "1.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.36", ] [[package]] @@ -1062,15 +1107,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.6" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-width" @@ -1078,19 +1123,13 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - [[package]] name = "universal-hash" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" dependencies = [ - "generic-array", + "crypto-common", "subtle", ] @@ -1103,7 +1142,7 @@ dependencies = [ "ed25519-dalek", "lz4_flex", "parking_lot", - "rand", + "rand 0.8.5", "rayon", "snap", "thiserror", @@ -1122,7 +1161,7 @@ name = "vach-cli" version = "0.4.1" dependencies = [ "anyhow", - "clap 3.2.23", + "clap 3.2.25", "indicatif", "log", "pretty_env_logger", @@ -1140,12 +1179,11 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", - "winapi", "winapi-util", ] @@ -1155,11 +1193,17 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1167,24 +1211,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn", + "syn 2.0.36", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1192,28 +1236,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.36", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -1252,60 +1296,126 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "zeroize" @@ -1318,12 +1428,11 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.3" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bf07cb3e50ea2003396695d58bf46bc9887a1f362260446fad6bc4e79bd36c" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn", - "synstructure", + "syn 2.0.36", ] diff --git a/vach/Cargo.toml b/vach/Cargo.toml index b8bf788f..ac3d585d 100644 --- a/vach/Cargo.toml +++ b/vach/Cargo.toml @@ -23,14 +23,13 @@ thiserror = "1.0.31" # Authentication dependencies ed25519-dalek = { version = "1.0.1", optional = true } -rand = { version = "0.7.0", optional = true } +rand = { version = "0.8.5", optional = true } # Encryption dependencies -aes-gcm = { version = "0.9.4", features = ["aes"], optional = true } +aes-gcm = { version = "0.10.2", features = ["aes"], optional = true } # Compression dependencies -lz4_flex = { version = "0.9.2", optional = true, default-features = false, features = [ - "checked-decode", +lz4_flex = { version = "0.11.1", optional = true, default-features = false, features = [ "frame", ] } snap = { version = "1.0.5", optional = true } diff --git a/vach/src/crypto.rs b/vach/src/crypto.rs index e421e5d6..2ab2e1ec 100644 --- a/vach/src/crypto.rs +++ b/vach/src/crypto.rs @@ -2,9 +2,9 @@ #![cfg_attr(docsrs, doc(cfg(feature = "crypto")))] use std::fmt; -use aes_gcm::aead::{Aead, NewAead}; +use aes_gcm::aead::Aead; use aes_gcm::aes::cipher::consts::U12; -use aes_gcm::{Aes256Gcm, Key, Nonce}; +use aes_gcm::{Aes256Gcm, Nonce, KeyInit}; pub use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature}; @@ -28,13 +28,12 @@ impl Encryptor { let bytes = &pk.to_bytes(); // Build Nonce - let key = Key::from_slice(bytes); let mut v = [178, 5, 239, 228, 165, 44, 169, 0, 0, 0, 0, 0]; (&mut v[7..12]).copy_from_slice(&magic); dbg!(&v); Encryptor { - cipher: Aes256Gcm::new(key), + cipher: Aes256Gcm::new_from_slice(bytes).unwrap(), nonce: *Nonce::from_slice(v.as_slice()), } } diff --git a/vach/src/crypto_utils/mod.rs b/vach/src/crypto_utils/mod.rs index 5bf49063..f0db6d14 100644 --- a/vach/src/crypto_utils/mod.rs +++ b/vach/src/crypto_utils/mod.rs @@ -7,7 +7,7 @@ use { crypto, global::{error::InternalError, result::InternalResult}, }, - std::{io::Read}, + std::io::Read, }; // A favour diff --git a/vach/src/global/error.rs b/vach/src/global/error.rs index aa9d336c..90270082 100644 --- a/vach/src/global/error.rs +++ b/vach/src/global/error.rs @@ -48,5 +48,5 @@ pub enum InternalError { /// Errors thrown during compression or decompression #[error("[VachError::CompressorDecompressorError]: {0}")] #[cfg(feature = "compression")] - DeCompressionError(#[from] lz4_flex::frame::Error), + DeCompressionError(#[from] lz4_flex::frame::Error) } diff --git a/vach/src/loader/archive.rs b/vach/src/loader/archive.rs index 8758bafa..f1584bd8 100644 --- a/vach/src/loader/archive.rs +++ b/vach/src/loader/archive.rs @@ -5,14 +5,12 @@ use std::{ }; use super::resource::Resource; -use crate::{ - global::{ - error::InternalError, - flags::Flags, - header::{Header, ArchiveConfig}, - reg_entry::RegistryEntry, - result::InternalResult, - }, +use crate::global::{ + error::InternalError, + flags::Flags, + header::{Header, ArchiveConfig}, + reg_entry::RegistryEntry, + result::InternalResult, }; use parking_lot::Mutex; @@ -280,7 +278,7 @@ where Ok(Resource { content_version: entry.content_version, flags: entry.flags, - data: buffer, + data: buffer.into_boxed_slice(), authenticated: is_secure, }) } else { @@ -305,7 +303,7 @@ where Ok(Resource { content_version: entry.content_version, flags: entry.flags, - data: buffer, + data: buffer.into_boxed_slice(), authenticated: is_secure, }) } else { diff --git a/vach/src/loader/resource.rs b/vach/src/loader/resource.rs index fc241ec0..adfa8d2f 100644 --- a/vach/src/loader/resource.rs +++ b/vach/src/loader/resource.rs @@ -8,7 +8,7 @@ use crate::global::flags::Flags; #[derive(Debug)] pub struct Resource { /// The processed data, stored as a vector of bytes `Vec`. - pub data: Vec, + pub data: Box<[u8]>, /// The flags extracted from the archive's registry entry pub flags: Flags, /// The content version of the extracted archive entry diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index cef8e6f5..5a5aab2f 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -119,10 +119,10 @@ fn simple_fetch() -> InternalResult { assert!(!resource.authenticated); assert!(resource.flags.contains(Flags::COMPRESSED_FLAG)); - println!("{}", String::from_utf8(resource.data).unwrap()); + println!("{}", str::from_utf8(&resource.data).unwrap()); let hello = archive.fetch_mut("greeting")?; - assert_eq!("Hello, Cassandra!", String::from_utf8(hello.data).unwrap()); + assert_eq!("Hello, Cassandra!", str::from_utf8(&hello.data).unwrap()); assert!(!hello.flags.contains(Flags::COMPRESSED_FLAG)); Ok(()) @@ -166,7 +166,7 @@ fn fetch_with_signature() -> InternalResult { let mut archive = Archive::with_config(target, &config)?; let resource = archive.fetch_mut("test_data/song.txt")?; - let song = str::from_utf8(resource.data.as_slice()).unwrap(); + let song = str::from_utf8(&resource.data).unwrap(); // The adjacent resource was flagged to not be signed let not_signed_resource = archive.fetch_mut("not_signed")?; @@ -254,7 +254,7 @@ fn fetch_from_encrypted() -> InternalResult { let mut archive = Archive::with_config(target, &config)?; let resource = archive.fetch_mut("test_data/song.txt")?; - let song = str::from_utf8(resource.data.as_slice()).unwrap(); + let song = str::from_utf8(&resource.data).unwrap(); // Windows bullshit #[cfg(target_os = "windows")] @@ -315,9 +315,9 @@ fn consolidated_example() -> InternalResult { // Quick assertions let then = Instant::now(); - assert_eq!(archive.fetch_mut("d1")?.data.as_slice(), data_1); - assert_eq!(archive.fetch_mut("d2")?.data.as_slice(), data_2); - assert_eq!(archive.fetch_mut("d3")?.data.as_slice(), data_3); + assert_eq!(archive.fetch_mut("d1")?.data.as_ref(), data_1); + assert_eq!(archive.fetch_mut("d2")?.data.as_ref(), data_2); + assert_eq!(archive.fetch_mut("d3")?.data.as_ref(), data_3); println!("Fetching took: {}us on average", then.elapsed().as_micros() / 4u128); @@ -435,7 +435,7 @@ fn test_batch_fetching() -> InternalResult { }; for (_, res) in resources { - assert_eq!(res?.data.as_slice(), &INPUT[..]); + assert_eq!(res?.data.as_ref(), &INPUT[..]); } Ok(()) diff --git a/vach/test_data/encrypted/target.vach b/vach/test_data/encrypted/target.vach index 58a033f6508d7ccc130cd54ad9ba4d158ca51b26..57cdfe97f4db44951dd3e452f4ea7a13dc935e61 100644 GIT binary patch delta 52 zcmZp_%H4jIdxJM4>jVb2M25+`8C56yGG;P!F=%am$fz1WUCWD6Wiwl%%FA{?FUIYD IUQCt?0J?Gzb^rhX delta 49 zcmZp_%H4jIdxJOQ?g>E>f(#JA!H`~*np%>Xmk#DTO!Sr#&-}{>=7_w6s9|Nu$uCOH-8g$n qjG#wqPENj#f^%YVabjLdQKDkAer&sbEaP_lSSH)f?X}OCQWybCR~(@L delta 87 zcmaEOp8Mf>?g>E?3x(w){xULvfXGWQ#lXstlV6mY3+CiJW18qIzH#=Hm}ZCAc86HT j?GCX_ww;0=sX00MIttE-#l?wvDMg8j+iRaOr7!{jl{Fh} From 25862caee1645a8e29a7cb6763a432d4612100e7 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 17 Sep 2023 12:39:43 +0300 Subject: [PATCH 05/15] updated crypto features --- Cargo.lock | 219 ++++++++++++++------------- vach/Cargo.toml | 2 +- vach/src/crypto.rs | 7 +- vach/src/crypto_utils/mod.rs | 36 ++--- vach/src/global/header.rs | 8 +- vach/src/lib.rs | 3 - vach/src/loader/archive.rs | 2 +- vach/src/tests/mod.rs | 14 +- vach/src/writer/builder/config.rs | 4 +- vach/src/writer/builder/mod.rs | 2 +- vach/test_data/encrypted/target.vach | Bin 191111 -> 191111 bytes vach/test_data/signed/target.vach | Bin 190972 -> 190972 bytes vach/test_data/simple/target.vach | Bin 190433 -> 190433 bytes 13 files changed, 141 insertions(+), 156 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f6fcff1..5aebf947 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -84,6 +84,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bitflags" version = "1.3.2" @@ -92,9 +98,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "block-buffer" -version = "0.9.0" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ "generic-array", ] @@ -126,12 +132,6 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - [[package]] name = "cast" version = "0.3.0" @@ -201,6 +201,12 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + [[package]] name = "cpufeatures" version = "0.2.9" @@ -296,7 +302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", - "rand_core 0.6.4", + "rand_core", "typenum", ] @@ -332,44 +338,70 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "3.2.1" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f9d052967f590a76e62eb387bd0bbb1b000182c3cefe5364db6b7211651bc0" +checksum = "622178105f911d937a42cdb140730ba4a3ed2becd8ae6ce39c7d28b5d75d4588" dependencies = [ - "byteorder", + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", "digest", - "rand_core 0.5.1", + "fiat-crypto", + "platforms", + "rustc_version", "subtle", "zeroize", ] +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.36", +] + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "digest" -version = "0.9.0" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ - "generic-array", + "block-buffer", + "crypto-common", ] [[package]] name = "ed25519" -version = "1.5.3" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" dependencies = [ + "pkcs8", "signature", ] [[package]] name = "ed25519-dalek" -version = "1.0.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" dependencies = [ "curve25519-dalek", "ed25519", - "rand 0.7.3", "serde", "sha2", "zeroize", @@ -400,6 +432,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "fiat-crypto" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + [[package]] name = "generic-array" version = "0.14.7" @@ -410,17 +448,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "getrandom" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.9.0+wasi-snapshot-preview1", -] - [[package]] name = "getrandom" version = "0.2.10" @@ -429,7 +456,7 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -666,6 +693,22 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "platforms" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" + [[package]] name = "plotters" version = "0.3.5" @@ -746,19 +789,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom 0.1.16", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc", -] - [[package]] name = "rand" version = "0.8.5" @@ -766,18 +796,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" -dependencies = [ - "ppv-lite86", - "rand_core 0.5.1", + "rand_chacha", + "rand_core", ] [[package]] @@ -787,16 +807,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core 0.6.4", -] - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom 0.1.16", + "rand_core", ] [[package]] @@ -805,16 +816,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", + "getrandom", ] [[package]] @@ -877,6 +879,15 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + [[package]] name = "ryu" version = "1.0.15" @@ -898,6 +909,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" + [[package]] name = "serde" version = "1.0.188" @@ -941,22 +958,20 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.9" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" dependencies = [ - "block-buffer", "cfg-if", "cpufeatures", "digest", - "opaque-debug", ] [[package]] name = "signature" -version = "1.6.4" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" [[package]] name = "smallvec" @@ -970,6 +985,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1142,7 +1167,7 @@ dependencies = [ "ed25519-dalek", "lz4_flex", "parking_lot", - "rand 0.8.5", + "rand", "rayon", "snap", "thiserror", @@ -1187,12 +1212,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1419,20 +1438,6 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "zeroize" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.36", -] +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" diff --git a/vach/Cargo.toml b/vach/Cargo.toml index ac3d585d..9f5f3bed 100644 --- a/vach/Cargo.toml +++ b/vach/Cargo.toml @@ -22,7 +22,7 @@ include = ["Cargo.toml", "Cargo.lock", "src/*"] thiserror = "1.0.31" # Authentication dependencies -ed25519-dalek = { version = "1.0.1", optional = true } +ed25519-dalek = { version = "2.0.0", optional = true } rand = { version = "0.8.5", optional = true } # Encryption dependencies diff --git a/vach/src/crypto.rs b/vach/src/crypto.rs index 2ab2e1ec..31a16246 100644 --- a/vach/src/crypto.rs +++ b/vach/src/crypto.rs @@ -6,7 +6,7 @@ use aes_gcm::aead::Aead; use aes_gcm::aes::cipher::consts::U12; use aes_gcm::{Aes256Gcm, Nonce, KeyInit}; -pub use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature}; +pub use ed25519_dalek::{SigningKey, VerifyingKey, SecretKey, Signature}; use crate::prelude::{InternalResult, InternalError}; @@ -23,14 +23,13 @@ impl fmt::Debug for Encryptor { } impl Encryptor { - pub(crate) fn new(pk: &PublicKey, magic: [u8; crate::MAGIC_LENGTH]) -> Encryptor { + pub(crate) fn new(vk: &VerifyingKey, magic: [u8; crate::MAGIC_LENGTH]) -> Encryptor { // Build encryption key - let bytes = &pk.to_bytes(); + let bytes = &vk.to_bytes(); // Build Nonce let mut v = [178, 5, 239, 228, 165, 44, 169, 0, 0, 0, 0, 0]; (&mut v[7..12]).copy_from_slice(&magic); - dbg!(&v); Encryptor { cipher: Aes256Gcm::new_from_slice(bytes).unwrap(), diff --git a/vach/src/crypto_utils/mod.rs b/vach/src/crypto_utils/mod.rs index f0db6d14..94bfb668 100644 --- a/vach/src/crypto_utils/mod.rs +++ b/vach/src/crypto_utils/mod.rs @@ -10,27 +10,27 @@ use { std::io::Read, }; +use rand::RngCore; + // A favour #[cfg(feature = "compression")] pub use super::global::compressor::Compressor; /// Use this function to easily generate a [Keypair](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/struct.Keypair.html) using `OsRng` #[inline(always)] -pub fn gen_keypair() -> crypto::Keypair { - crypto::Keypair::generate(&mut OsRng) +pub fn gen_keypair() -> crypto::SigningKey { + let mut bytes = [0u8; 32]; + (&mut OsRng).fill_bytes(&mut bytes); + crypto::SigningKey::from_bytes(&bytes) } /// Use this to read and parse a `Keypair` from a read stream /// ### Errors /// - If the data can't be parsed into a keypair -pub fn read_keypair(mut handle: R) -> InternalResult { - let mut keypair_bytes = [0; crate::KEYPAIR_LENGTH]; +pub fn read_keypair(mut handle: R) -> InternalResult { + let mut keypair_bytes = [0; crate::SECRET_KEY_LENGTH + crate::PUBLIC_KEY_LENGTH]; handle.read_exact(&mut keypair_bytes)?; - - Ok(match crypto::Keypair::from_bytes(&keypair_bytes) { - Ok(kep) => kep, - Err(err) => return Err(InternalError::ParseError(err.to_string())), - }) + crypto::SigningKey::from_keypair_bytes(&keypair_bytes).map_err(|err| InternalError::ParseError(err.to_string())) } /// Read and parse a public key from a read stream @@ -38,28 +38,18 @@ pub fn read_keypair(mut handle: R) -> InternalResult { /// ### Errors /// - If parsing of the public key fails /// - `io` errors -pub fn read_public_key(mut handle: T) -> InternalResult { +pub fn read_public_key(mut handle: T) -> InternalResult { let mut keypair_bytes = [0; crate::PUBLIC_KEY_LENGTH]; - handle.read_exact(&mut keypair_bytes)?; - - match crypto::PublicKey::from_bytes(&keypair_bytes) { - Ok(pk) => Ok(pk), - Err(err) => Err(InternalError::ParseError(err.to_string())), - } + crypto::VerifyingKey::from_bytes(&keypair_bytes).map_err(|err| InternalError::ParseError(err.to_string())) } /// Read and parse a secret key from a read stream /// /// ### Errors /// - If parsing of the secret key fails /// - `io` errors -pub fn read_secret_key(mut handle: T) -> InternalResult { +pub fn read_secret_key(mut handle: T) -> InternalResult { let mut secret_bytes = [0; crate::SECRET_KEY_LENGTH]; - handle.read_exact(&mut secret_bytes)?; - - match crypto::SecretKey::from_bytes(&secret_bytes) { - Ok(sk) => Ok(sk), - Err(err) => Err(InternalError::ParseError(err.to_string())), - } + Ok(crypto::SigningKey::from_bytes(&secret_bytes)) } diff --git a/vach/src/global/header.rs b/vach/src/global/header.rs index 88b3d830..d3a2b857 100644 --- a/vach/src/global/header.rs +++ b/vach/src/global/header.rs @@ -15,7 +15,7 @@ pub struct ArchiveConfig { /// archive source has signatures. #[cfg(feature = "crypto")] #[cfg_attr(docsrs, doc(cfg(feature = "crypto")))] - pub public_key: Option, + pub public_key: Option, } impl ArchiveConfig { @@ -27,7 +27,7 @@ impl ArchiveConfig { #[inline(always)] #[cfg(feature = "crypto")] #[cfg_attr(docsrs, doc(cfg(feature = "crypto")))] - pub const fn new(magic: [u8; crate::MAGIC_LENGTH], key: Option) -> ArchiveConfig { + pub const fn new(magic: [u8; crate::MAGIC_LENGTH], key: Option) -> ArchiveConfig { ArchiveConfig { magic, public_key: key } } @@ -65,8 +65,8 @@ impl ArchiveConfig { /// Shorthand to load a PublicKey into the [ArchiveConfig] #[cfg(feature = "crypto")] #[cfg_attr(docsrs, doc(cfg(feature = "crypto")))] - pub fn key(mut self, public_key: crypto::PublicKey) -> ArchiveConfig { - self.public_key = Some(public_key); + pub fn key(mut self, verifying_key: crypto::VerifyingKey) -> ArchiveConfig { + self.public_key = Some(verifying_key); self } diff --git a/vach/src/lib.rs b/vach/src/lib.rs index 2b05b3c6..340a8640 100644 --- a/vach/src/lib.rs +++ b/vach/src/lib.rs @@ -158,9 +158,6 @@ pub use rayon; /// Current [`vach`](crate) spec version. increments by ten with every spec change pub const VERSION: u16 = 30; -/// Size of a keypair: (secret + public) -pub const KEYPAIR_LENGTH: usize = 64; - /// Size of a secret key pub const SECRET_KEY_LENGTH: usize = 32; diff --git a/vach/src/loader/archive.rs b/vach/src/loader/archive.rs index f1584bd8..104f1929 100644 --- a/vach/src/loader/archive.rs +++ b/vach/src/loader/archive.rs @@ -41,7 +41,7 @@ pub struct Archive { #[cfg(feature = "crypto")] decryptor: Option, #[cfg(feature = "crypto")] - key: Option, + key: Option, } impl std::fmt::Display for Archive { diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index 5a5aab2f..9e5b97d3 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -7,7 +7,7 @@ use crate::prelude::*; // Contains both the public key and secret key in the same file: // secret -> [u8; crate::SECRET_KEY_LENGTH], public -> [u8; crate::PUBLIC_KEY_LENGTH] -const KEYPAIR: &[u8; crate::KEYPAIR_LENGTH] = include_bytes!("../../test_data/pair.pub"); +const KEYPAIR: &[u8; crate::SECRET_KEY_LENGTH + crate::PUBLIC_KEY_LENGTH] = include_bytes!("../../test_data/pair.pub"); // The paths to the Archives, to be written|loaded const SIGNED_TARGET: &str = "test_data/signed/target.vach"; @@ -202,9 +202,9 @@ fn fetch_with_signature() -> InternalResult { fn edcryptor_test() -> InternalResult { use crate::crypto_utils::gen_keypair; - let pk = gen_keypair().public; + let vk = gen_keypair().verifying_key(); - let crypt = Encryptor::new(&pk, crate::DEFAULT_MAGIC.clone()); + let crypt = Encryptor::new(&vk, crate::DEFAULT_MAGIC.clone()); let data = vec![12, 12, 12, 12]; let ciphertext = crypt.encrypt(&data)?; @@ -256,12 +256,6 @@ fn fetch_from_encrypted() -> InternalResult { let resource = archive.fetch_mut("test_data/song.txt")?; let song = str::from_utf8(&resource.data).unwrap(); - // Windows bullshit - #[cfg(target_os = "windows")] - { - dbg!(&song); - } - assert_eq!(song.len(), 1977); assert!(resource.authenticated); assert!(!resource.flags.contains(Flags::COMPRESSED_FLAG)); @@ -285,7 +279,7 @@ fn consolidated_example() -> InternalResult { let data_3 = b"Fast-Acting Long-Lasting, *Bathroom Reader*" as &[u8]; // Builder definition - let keypair_bytes = gen_keypair().to_bytes(); + let keypair_bytes = gen_keypair().to_keypair_bytes(); let config = BuilderConfig::default() .magic(*MAGIC) .keypair(read_keypair(&keypair_bytes as &[u8])?); diff --git a/vach/src/writer/builder/config.rs b/vach/src/writer/builder/config.rs index 1a1134e2..19d19f83 100644 --- a/vach/src/writer/builder/config.rs +++ b/vach/src/writer/builder/config.rs @@ -18,7 +18,7 @@ pub struct BuilderConfig<'a> { /// An optional keypair. If a key is provided, then the write target will have signatures for tamper verification. #[cfg(feature = "crypto")] #[cfg_attr(docsrs, doc(cfg(feature = "crypto")))] - pub keypair: Option, + pub keypair: Option, /// An optional callback that is called every time a [Leaf](crate::builder::Leaf) finishes processing. /// The callback get passed to it: a reference to the leaf and the generated registry entry. Use the RegEntry to get info on how the data was integrated for the given [`Leaf`]. /// > **To avoid** the `implementation of "FnOnce" is not general enough` error consider adding types to the closure's parameters, as this is a type inference error. Rust somehow cannot infer enough information, [link](https://www.reddit.com/r/rust/comments/ntqu68/implementation_of_fnonce_is_not_general_enough/). @@ -63,7 +63,7 @@ impl<'a> BuilderConfig<'a> { // Helper functions /// Setter for the `keypair` field #[cfg(feature = "crypto")] - pub fn keypair(mut self, keypair: crypto::Keypair) -> Self { + pub fn keypair(mut self, keypair: crypto::SigningKey) -> Self { self.keypair = Some(keypair); self } diff --git a/vach/src/writer/builder/mod.rs b/vach/src/writer/builder/mod.rs index f7434ac8..f86d99cf 100644 --- a/vach/src/writer/builder/mod.rs +++ b/vach/src/writer/builder/mod.rs @@ -182,7 +182,7 @@ impl<'a> Builder<'a> { #[cfg(feature = "crypto")] let encryptor = if use_encryption { if let Some(keypair) = config.keypair.as_ref() { - Some(Encryptor::new(&keypair.public, config.magic)) + Some(Encryptor::new(&keypair.verifying_key(), config.magic)) } else { return Err(InternalError::NoKeypairError); } diff --git a/vach/test_data/encrypted/target.vach b/vach/test_data/encrypted/target.vach index 57cdfe97f4db44951dd3e452f4ea7a13dc935e61..390118844276ec6981012e415997564775e367f0 100644 GIT binary patch delta 36 scmZp_%H4jIn>Q@Y(b8mU%*H3JPZ+m8VOsnW0MRH72mk;8 delta 36 scmZp_%H4jIn>Q@Y(b8mU%*H3JPZ+m8VOsnW0MRH72mk;8 diff --git a/vach/test_data/signed/target.vach b/vach/test_data/signed/target.vach index df0ee4e2ae2c681ef949f5f63ef1453d7ea18176..8c09c60cc27b12749bce3db31f95b0d3ac21a345 100644 GIT binary patch delta 99 zcmex!nfuRWZjrDwM`sTP1_ll}26i9?1P2`^il|RqlE_@;!8p+@jp?AnWOl|&Ol!k8 z-)5W?I{lU-qXQEc*YpWuj8>bOB5%Byp6AIZzTMD?aS{9G-0(=o_RF4(+b?@EX)XW& D^PV7F delta 93 zcmex!nfuRWZjrDwM`sTP1_ll}26i9?1X4~DMbsxQNo2m|$T-m~jY-OBGCSiXrehJC xZ!=B`-CpIv7|F=Q#Wh*+rsd`r;WuAQ&JB0ie$at&Cwu#4PsZ(+J()BY001stAD#dJ diff --git a/vach/test_data/simple/target.vach b/vach/test_data/simple/target.vach index 4c52b3f3c8cac0dcaa6ffeb3cf0ce101f8f3b755..469f751d2e74a17093d6c6a8df31c2694083f4ae 100644 GIT binary patch delta 91 zcmaEOp8Mf>?g>E?3x#DP{xULvfXGWQ#lXstlV6mYJAsGc09Ve$g`yl_;S0~1Ci;qR n+*TRW>=4`T5X-pTA(m-jm!L;#PENj#f^%YVabjLdQKBLM5;q*x delta 107 zcmaEOp8Mf>?g>E?mk6;jfPlk9Zz-e9zl>mx$V)KAz{-%5UzD0VfrsG$SM4( Date: Mon, 18 Sep 2023 15:49:41 +0300 Subject: [PATCH 06/15] bump to new version --- Cargo.lock | 2 +- vach/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5aebf947..a2f710e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1160,7 +1160,7 @@ dependencies = [ [[package]] name = "vach" -version = "0.4.5" +version = "0.5.0" dependencies = [ "aes-gcm", "brotli", diff --git a/vach/Cargo.toml b/vach/Cargo.toml index 9f5f3bed..0e8ab73f 100644 --- a/vach/Cargo.toml +++ b/vach/Cargo.toml @@ -2,7 +2,7 @@ name = "vach" # NOTE: Make sure spec.txt and vach::VERSION constants are all synced up -version = "0.4.5" +version = "0.5.0" edition = "2021" authors = [ From 76e1ec4896001817ac3ec4eaa346a443a9f1cce9 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Mon, 18 Sep 2023 16:00:02 +0300 Subject: [PATCH 07/15] updated cli crate --- Cargo.lock | 2 +- vach-cli/Cargo.toml | 2 +- vach-cli/src/commands/keypair.rs | 4 ++-- vach-cli/src/commands/pack.rs | 10 ++-------- vach-cli/src/commands/split.rs | 4 ++-- vach-cli/src/commands/unpack.rs | 2 +- 6 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2f710e7..7f522915 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1183,7 +1183,7 @@ dependencies = [ [[package]] name = "vach-cli" -version = "0.4.1" +version = "0.5.0" dependencies = [ "anyhow", "clap 3.2.25", diff --git a/vach-cli/Cargo.toml b/vach-cli/Cargo.toml index bc100aaa..4380941c 100644 --- a/vach-cli/Cargo.toml +++ b/vach-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vach-cli" -version = "0.4.1" +version = "0.5.0" edition = "2021" authors = [ "Jasper Fortuin ", diff --git a/vach-cli/src/commands/keypair.rs b/vach-cli/src/commands/keypair.rs index 96e3b5e8..8b7cceda 100644 --- a/vach-cli/src/commands/keypair.rs +++ b/vach-cli/src/commands/keypair.rs @@ -31,10 +31,10 @@ impl CommandTrait for Evaluator { let mut pk_path = output_path; pk_path.push_str(".pk"); - utils::create_and_write_to_file(&sk_path, &kp.secret.to_bytes())?; + utils::create_and_write_to_file(&sk_path, &kp.to_bytes())?; log::info!("Secret Key successfully generated and saved in: {}", sk_path); - utils::create_and_write_to_file(&pk_path, &kp.public.to_bytes())?; + utils::create_and_write_to_file(&pk_path, &kp.verifying_key().to_bytes())?; log::info!("Public Key successfully generated and saved in: {}", pk_path); } else { utils::create_and_write_to_file(&output_path, &kp.to_bytes())?; diff --git a/vach-cli/src/commands/pack.rs b/vach-cli/src/commands/pack.rs index b0321eb4..ac39c151 100644 --- a/vach-cli/src/commands/pack.rs +++ b/vach-cli/src/commands/pack.rs @@ -163,7 +163,7 @@ impl CommandTrait for Evaluator { let secret_key = match args.value_of(key_names::KEYPAIR) { Some(path) => { let file = File::open(path)?; - Some(crypto_utils::read_keypair(file)?.secret) + Some(crypto_utils::read_secret_key(file)?) }, None => match args.value_of(key_names::SECRET_KEY) { Some(path) => { @@ -175,13 +175,7 @@ impl CommandTrait for Evaluator { }; // Generate a keypair from the secret key - let mut kp = match secret_key { - Some(sk) => { - let pk = PublicKey::from(&sk); - Some(Keypair { secret: sk, public: pk }) - }, - None => None, - }; + let mut kp = secret_key.map(|sk| SigningKey::from(sk)); // If encrypt is true, and no keypair was found: Generate and write a new keypair to a file if (encrypt || hash) && kp.is_none() { diff --git a/vach-cli/src/commands/split.rs b/vach-cli/src/commands/split.rs index a8062d49..44f9cf5a 100644 --- a/vach-cli/src/commands/split.rs +++ b/vach-cli/src/commands/split.rs @@ -32,8 +32,8 @@ impl CommandTrait for Evaluator { pk_path.push_str(".pk"); // Write key parts - utils::create_and_write_to_file(&pk_path, &kp.public.to_bytes())?; - utils::create_and_write_to_file(&sk_path, &kp.secret.to_bytes())?; + utils::create_and_write_to_file(&pk_path, &kp.verifying_key().to_bytes())?; + utils::create_and_write_to_file(&sk_path, &kp.to_bytes())?; log::info!( "Successfully split keypair: {} -> into {} and {}", diff --git a/vach-cli/src/commands/unpack.rs b/vach-cli/src/commands/unpack.rs index 483b0958..f2165d6d 100644 --- a/vach-cli/src/commands/unpack.rs +++ b/vach-cli/src/commands/unpack.rs @@ -46,7 +46,7 @@ impl CommandTrait for Evaluator { Err(err) => anyhow::bail!("IOError: {} @ {}", err, path), }; - Some(crypto_utils::read_keypair(file)?.public) + Some(crypto_utils::read_keypair(file)?.verifying_key()) }, None => match args.value_of(key_names::PUBLIC_KEY) { Some(path) => { From 12166f33334dd3d830fbb1b6250d45fc14defcfd Mon Sep 17 00:00:00 2001 From: sokorototo Date: Mon, 18 Sep 2023 17:09:08 +0300 Subject: [PATCH 08/15] updated CLI --- Cargo.lock | 190 ++++++++++++++++++++++++++----- vach-benchmarks/benches/main.rs | 2 +- vach-cli/Cargo.toml | 6 +- vach-cli/src/commands/keypair.rs | 10 +- vach-cli/src/commands/list.rs | 17 ++- vach-cli/src/commands/pack.rs | 13 +-- vach-cli/src/commands/unpack.rs | 22 +--- vach-cli/test_data/test.sh | 4 +- 8 files changed, 189 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f522915..c61c3e17 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -96,6 +96,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + [[package]] name = "block-buffer" version = "0.10.4" @@ -132,12 +138,27 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +[[package]] +name = "bytecount" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c676a478f63e9fa2dd5368a42f28bba0d6c560b775f38583c8bbaa7fcd67c9c" + [[package]] name = "cast" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + [[package]] name = "cfg-if" version = "1.0.0" @@ -160,7 +181,7 @@ version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ - "bitflags", + "bitflags 1.3.2", "textwrap 0.11.0", "unicode-width", ] @@ -172,7 +193,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "atty", - "bitflags", + "bitflags 1.3.2", "clap_lex", "indexmap", "strsim", @@ -198,7 +219,8 @@ dependencies = [ "encode_unicode", "lazy_static", "libc", - "windows-sys", + "unicode-width", + "windows-sys 0.45.0", ] [[package]] @@ -421,23 +443,50 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "env_logger" -version = "0.7.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" dependencies = [ - "atty", "humantime", + "is-terminal", "log", "regex", "termcolor", ] +[[package]] +name = "errno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136526188508e25c6fef639d7927dfb3e0e3084488bf202267829cf7fc23dbdd" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + [[package]] name = "fiat-crypto" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + [[package]] name = "generic-array" version = "0.14.7" @@ -481,6 +530,12 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + [[package]] name = "hermit-abi" version = "0.1.19" @@ -498,12 +553,9 @@ checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" [[package]] name = "humantime" -version = "1.3.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error", -] +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "indexmap" @@ -517,14 +569,15 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.16.2" +version = "0.17.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d207dc617c7a380ab07ff572a6e52fa202a2a8f355860ac9c38e23f8196be1b" +checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730" dependencies = [ "console", - "lazy_static", + "instant", "number_prefix", - "regex", + "portable-atomic", + "unicode-width", ] [[package]] @@ -536,6 +589,26 @@ dependencies = [ "generic-array", ] +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.2", + "rustix", + "windows-sys 0.48.0", +] + [[package]] name = "itertools" version = "0.10.5" @@ -572,6 +645,12 @@ version = "0.2.148" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +[[package]] +name = "linux-raw-sys" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a9bad9f94746442c783ca431b22403b519cd7fbeed0533fdd6328b2f2212128" + [[package]] name = "lock_api" version = "0.4.10" @@ -663,10 +742,12 @@ checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "papergrid" -version = "0.3.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63709d10e2c2ec58f7bd91d8258d27ce80de090064b0ddf3a4bf38b907b61b8a" +checksum = "a2ccbe15f2b6db62f9a9871642746427e297b0ceb85f9a7f1ee5ff47d184d0c8" dependencies = [ + "bytecount", + "fnv", "unicode-width", ] @@ -749,6 +830,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "portable-atomic" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -757,14 +844,38 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "pretty_env_logger" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d" +checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c" dependencies = [ "env_logger", "log", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro2" version = "1.0.67" @@ -774,12 +885,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.33" @@ -847,7 +952,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -888,6 +993,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7db8590df6dfcd144d22afd1b83b36c21a18d7cbc1dc4bb5295a8712e9eb662" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + [[package]] name = "ryu" version = "1.0.15" @@ -1037,20 +1155,23 @@ dependencies = [ [[package]] name = "tabled" -version = "0.6.1" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15827061abcf689257b1841c8e2732b1dfcc3ef825b24ce6c606e1e9e1a7bde" +checksum = "dfe9c3632da101aba5131ed63f9eed38665f8b3c68703a6bb18124835c1a5d22" dependencies = [ "papergrid", "tabled_derive", + "unicode-width", ] [[package]] name = "tabled_derive" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "278ea3921cee8c5a69e0542998a089f7a14fa43c9c4e4f9951295da89bd0c943" +checksum = "99f688a08b54f4f02f0a3c382aefdb7884d3d69609f785bd253dc033243e3fe4" dependencies = [ + "heck", + "proc-macro-error", "proc-macro2", "quote", "syn 1.0.109", @@ -1322,6 +1443,15 @@ dependencies = [ "windows-targets 0.42.2", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-targets" version = "0.42.2" diff --git a/vach-benchmarks/benches/main.rs b/vach-benchmarks/benches/main.rs index 1107da10..64d8ae14 100644 --- a/vach-benchmarks/benches/main.rs +++ b/vach-benchmarks/benches/main.rs @@ -31,7 +31,7 @@ impl io::Write for Sink { pub fn criterion_benchmark(c: &mut Criterion) { const MAGIC: &[u8; 5] = b"BNCMK"; - let keypair_bytes = &gen_keypair().to_bytes() as &[u8]; + let keypair_bytes = &gen_keypair().to_keypair_bytes() as &[u8]; let mut b_config = BuilderConfig::default().magic(*MAGIC); b_config.load_keypair(keypair_bytes).unwrap(); diff --git a/vach-cli/Cargo.toml b/vach-cli/Cargo.toml index 4380941c..e85e4f13 100644 --- a/vach-cli/Cargo.toml +++ b/vach-cli/Cargo.toml @@ -19,13 +19,13 @@ name = "vach" path = "src/main.rs" [dependencies] -indicatif = "0.16.2" +indicatif = "0.17.6" clap = "3.1.15" anyhow = "1.0.57" -tabled = "0.6.1" +tabled = "0.14.0" log = "0.4.17" walkdir = "2.3.2" -pretty_env_logger = "0.4.0" +pretty_env_logger = "0.5.0" term_size = "0.3.2" [dependencies.vach] diff --git a/vach-cli/src/commands/keypair.rs b/vach-cli/src/commands/keypair.rs index 8b7cceda..62de29b4 100644 --- a/vach-cli/src/commands/keypair.rs +++ b/vach-cli/src/commands/keypair.rs @@ -6,7 +6,7 @@ use crate::keys::key_names; use super::CommandTrait; // Default keypair write destination -const KEYPAIR_FILE_NAME: &str = "keypair.kp"; +const DEFAULT_KEYPAIR_FILE_NAME: &str = "keypair.kp"; pub const VERSION: &str = "0.0.1"; /// This command is used to generate keypair @@ -16,13 +16,11 @@ impl CommandTrait for Evaluator { fn evaluate(&self, args: &clap::ArgMatches) -> anyhow::Result<()> { let mut output_path = match args.value_of(key_names::OUTPUT) { Some(path) => path.to_string(), - None => KEYPAIR_FILE_NAME.to_string(), + None => DEFAULT_KEYPAIR_FILE_NAME.to_string(), }; - let to_split = args.is_present(key_names::SPLIT_KEY); let kp = gen_keypair(); - - if to_split { + if args.is_present(key_names::SPLIT_KEY) { output_path = output_path.trim_end_matches(".kp").to_string(); let mut sk_path = output_path.clone(); @@ -37,7 +35,7 @@ impl CommandTrait for Evaluator { utils::create_and_write_to_file(&pk_path, &kp.verifying_key().to_bytes())?; log::info!("Public Key successfully generated and saved in: {}", pk_path); } else { - utils::create_and_write_to_file(&output_path, &kp.to_bytes())?; + utils::create_and_write_to_file(&output_path, &kp.to_keypair_bytes())?; log::info!("KeyPair successfully generated and saved in: {}", output_path); } diff --git a/vach-cli/src/commands/list.rs b/vach-cli/src/commands/list.rs index e89bb09c..6be3810f 100644 --- a/vach-cli/src/commands/list.rs +++ b/vach-cli/src/commands/list.rs @@ -1,6 +1,9 @@ use std::fs::File; -use tabled::{Style, Table, Tabled, Modify, Full, MaxWidth, Alignment, Columns}; +use tabled::{ + Table, Tabled, + settings::{*, object::Columns}, +}; use vach::{ prelude::{ArchiveConfig, Archive, Flags}, archive::{CompressionAlgorithm, RegistryEntry}, @@ -97,14 +100,10 @@ impl CommandTrait for Evaluator { }) .collect(); - let mut table = Table::new(table_entries) - .with(Style::modern().horizontal_off()) - .with(Modify::new(Columns::new(..1)).with(Alignment::left())); - - // Make sure table fills terminal - if let Some((term_width, _)) = term_size::dimensions() { - table = table.with(Modify::new(Full).with(MaxWidth::truncating(term_width - 50).suffix("..."))); - }; + let mut table = Table::new(table_entries); + table + .with(Style::rounded()) + .with(Modify::list(Columns::new(..1), Alignment::left())); println!("{}", table); } diff --git a/vach-cli/src/commands/pack.rs b/vach-cli/src/commands/pack.rs index ac39c151..76bb0a2b 100644 --- a/vach-cli/src/commands/pack.rs +++ b/vach-cli/src/commands/pack.rs @@ -182,7 +182,7 @@ impl CommandTrait for Evaluator { let generated = crypto_utils::gen_keypair(); let mut file = File::create("keypair.kp")?; - file.write_all(&generated.to_bytes())?; + file.write_all(&generated.to_keypair_bytes())?; log::info!("Generated a new keypair @ keypair.kp"); kp = Some(generated); @@ -191,20 +191,15 @@ impl CommandTrait for Evaluator { let pbar = ProgressBar::new(inputs.len() as u64 + 5 + if truncate { 3 } else { 0 }); pbar.set_style( ProgressStyle::default_bar() - .template(super::PROGRESS_BAR_STYLE) + .template(super::PROGRESS_BAR_STYLE)? .progress_chars("█░-") - .tick_strings(&[ - "⢀ ", "⡀ ", "⠄ ", "⢂ ", "⡂ ", "⠅ ", "⢃ ", "⡃ ", "⠍ ", "⢋ ", "⡋ ", "⠍⠁", "⢋⠁", "⡋⠁", "⠍⠉", "⠋⠉", - "⠋⠉", "⠉⠙", "⠉⠙", "⠉⠩", "⠈⢙", "⠈⡙", "⢈⠩", "⡀⢙", "⠄⡙", "⢂⠩", "⡂⢘", "⠅⡘", "⢃⠨", "⡃⢐", "⠍⡐", "⢋⠠", - "⡋⢀", "⠍⡁", "⢋⠁", "⡋⠁", "⠍⠉", "⠋⠉", "⠋⠉", "⠉⠙", "⠉⠙", "⠉⠩", "⠈⢙", "⠈⡙", "⠈⠩", " ⢙", " ⡙", " ⠩", - " ⢘", " ⡘", " ⠨", " ⢐", " ⡐", " ⠠", " ⢀", " ⡀", - ]), + .tick_chars("⢀ ⡀ ⠄ ⢂ ⡂ ⠅ ⢃ ⡃ ⠍ ⢋ ⡋ ⠍⠁⢋⠁⡋⠁⠍⠉⠋⠉⠋⠉⠉⠙⠉⠙⠉⠩⠈⢙⠈⡙⢈⠩⡀⢙⠄⡙⢂⠩⡂⢘⠅⡘⢃⠨⡃⢐⠍⡐⢋⠠⡋⢀⠍⡁⢋⠁⡋⠁⠍⠉⠋⠉⠋⠉⠉⠙⠉⠙⠉⠩⠈⢙⠈⡙⠈⠩ ⢙ ⡙ ⠩ ⢘ ⡘ ⠨ ⢐ ⡐ ⠠ ⢀ ⡀"), ); // Since it wraps it's internal state in an arc, we can safely clone and send across threads let callback = |leaf: &Leaf, _: &RegistryEntry| { pbar.inc(1); - pbar.set_message(leaf.id.to_string()) + pbar.set_message(leaf.id.clone()) }; // Build a builder-config using the above extracted data diff --git a/vach-cli/src/commands/unpack.rs b/vach-cli/src/commands/unpack.rs index f2165d6d..e4953840 100644 --- a/vach-cli/src/commands/unpack.rs +++ b/vach-cli/src/commands/unpack.rs @@ -109,29 +109,19 @@ fn extract_archive(archive: &Archive, target_fo // NOTE: More styling is to come pbar.set_style( ProgressStyle::default_bar() - .template(super::PROGRESS_BAR_STYLE) + .template(super::PROGRESS_BAR_STYLE)? .progress_chars("█░-") - .tick_strings(&[ - "⢀ ", "⡀ ", "⠄ ", "⢂ ", "⡂ ", "⠅ ", "⢃ ", "⡃ ", "⠍ ", "⢋ ", "⡋ ", "⠍⠁", "⢋⠁", "⡋⠁", "⠍⠉", "⠋⠉", "⠋⠉", - "⠉⠙", "⠉⠙", "⠉⠩", "⠈⢙", "⠈⡙", "⢈⠩", "⡀⢙", "⠄⡙", "⢂⠩", "⡂⢘", "⠅⡘", "⢃⠨", "⡃⢐", "⠍⡐", "⢋⠠", "⡋⢀", "⠍⡁", - "⢋⠁", "⡋⠁", "⠍⠉", "⠋⠉", "⠋⠉", "⠉⠙", "⠉⠙", "⠉⠩", "⠈⢙", "⠈⡙", "⠈⠩", " ⢙", " ⡙", " ⠩", " ⢘", " ⡘", " ⠨", - " ⢐", " ⡐", " ⠠", " ⢀", " ⡀", - ]), + .tick_chars("⢀ ⡀ ⠄ ⢂ ⡂ ⠅ ⢃ ⡃ ⠍ ⢋ ⡋ ⠍⠁⢋⠁⡋⠁⠍⠉⠋⠉⠋⠉⠉⠙⠉⠙⠉⠩⠈⢙⠈⡙⢈⠩⡀⢙⠄⡙⢂⠩⡂⢘⠅⡘⢃⠨⡃⢐⠍⡐⢋⠠⡋⢀⠍⡁⢋⠁⡋⠁⠍⠉⠋⠉⠋⠉⠉⠙⠉⠙⠉⠩⠈⢙⠈⡙⠈⠩ ⢙ ⡙ ⠩ ⢘ ⡘ ⠨ ⢐ ⡐ ⠠ ⢀ ⡀"), ); - // Vector to allow us to window later via .as_slice() - let entry_vec = archive.entries().iter().map(|a| (a.0, a.1.offset)).collect::>(); - // ignore the unprofessional match clause - if let Err(err) = entry_vec.as_slice().par_iter().try_for_each(|(id, offset)| { - let msg = id.to_string(); - + if let Err(err) = archive.entries().par_iter().try_for_each(|(id, entry)| { // Set's the Progress Bar message - pbar.set_message(msg); + pbar.set_message(id.to_string()); // Process filesystem let mut save_path = target_folder.clone(); - save_path.push(&id); + save_path.push(id); if let Some(parent_dir) = save_path.ancestors().nth(1) { fs::create_dir_all(parent_dir)?; @@ -143,7 +133,7 @@ fn extract_archive(archive: &Archive, target_fo file.write_all(&resource.data)?; // Increment Progress Bar - pbar.inc(*offset); + pbar.inc(entry.offset); Ok(()) }) { return Err(err); diff --git a/vach-cli/test_data/test.sh b/vach-cli/test_data/test.sh index 4a92b200..d7a3934e 100755 --- a/vach-cli/test_data/test.sh +++ b/vach-cli/test_data/test.sh @@ -1,5 +1,7 @@ #! /usr/bin/sh +set -xe + # # Variables EXCLUDE=test.sh ARTIFACTS="keypair.sk keypair.pk keypair.kp signed.vach custom.vach encrypted.vach" @@ -18,7 +20,7 @@ cargo check -q cargo build -q --release # # Create simple archive with simple input, no compression only signatures -$VACH pack -o signed.vach -r ./ -c detect -g brotli -a -x $EXCLUDE +$VACH pack --output signed.vach --directory-r ./ --compress-mode detect --compress-algo brotli --hash --exclude $EXCLUDE # # Split the resulting keypair $VACH split -i keypair.kp From fc84ac2278af374cd9febaa750b2836d601afab9 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Mon, 18 Sep 2023 17:15:15 +0300 Subject: [PATCH 09/15] fixed panicking doctest --- vach/src/global/header.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vach/src/global/header.rs b/vach/src/global/header.rs index d3a2b857..c8973ca1 100644 --- a/vach/src/global/header.rs +++ b/vach/src/global/header.rs @@ -45,7 +45,9 @@ impl ArchiveConfig { /// ``` /// use vach::{crypto_utils::gen_keypair, prelude::ArchiveConfig}; /// let mut config = ArchiveConfig::default(); - /// let keypair_bytes = gen_keypair().to_bytes(); + /// let keypair_bytes = gen_keypair().to_keypair_bytes(); + /// // let keypair_bytes = gen_keypair().verifying_key().to_bytes(); + /// // config.load_public_key(&keypair_bytes).unwrap(); /// config.load_public_key(&keypair_bytes[32..]).unwrap(); /// ``` /// From 970b70c8ea690188a83d821c67107efcedc10d20 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Mon, 18 Sep 2023 17:22:01 +0300 Subject: [PATCH 10/15] meh --- vach/src/lib.rs | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/vach/src/lib.rs b/vach/src/lib.rs index 340a8640..212d7834 100644 --- a/vach/src/lib.rs +++ b/vach/src/lib.rs @@ -110,27 +110,7 @@ assert!(resource.authenticated); ##### > Serialize and de-serialize a `Keypair`, `SecretKey` and `PublicKey` -As `Keypair`, `SecretKey` and `PublicKey` are reflected from [ed25519_dalek](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/), you could refer to their docs to read further about them. These are needed for any cryptography related procedures, - -```ignore -use vach::prelude::{Keypair, SecretKey, PublicKey}; -use vach::crypto_utils::gen_keypair; - -// Generate keys -let keypair : Keypair = gen_keypair(); -let secret : SecretKey = keypair.secret; -let public : PublicKey = keypair.public; - -// Serialize -let public_key_bytes : [u8; vach::PUBLIC_KEY_LENGTH] = public.to_bytes(); -let secret_key_bytes : [u8; vach::SECRET_KEY_LENGTH] = secret.to_bytes(); -let keypair_bytes : [u8; vach::KEYPAIR_LENGTH] = keypair.to_bytes(); - -// Deserialize -let public_key : PublicKey = PublicKey::from_bytes(&public_key_bytes).unwrap(); -let secret_key : SecretKey = SecretKey::from_bytes(&secret_key_bytes).unwrap(); -let keypair : Keypair = Keypair::from_bytes(&keypair_bytes).unwrap(); -``` +As `SigningKey`, `SecretKey` and `VerifyingKey` are reflected from [ed25519_dalek](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/), you could refer to their docs to read further about them. These are needed for any cryptography related procedures, */ /// All tests are included in this module. From 1895a3e2903f28b33c8df6720363dc76961a98a8 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 24 Sep 2023 17:31:06 +0300 Subject: [PATCH 11/15] . --- vach/test_data/encrypted/target.vach | Bin 191111 -> 191111 bytes vach/test_data/signed/target.vach | Bin 190972 -> 190972 bytes vach/test_data/simple/target.vach | Bin 190433 -> 190433 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/vach/test_data/encrypted/target.vach b/vach/test_data/encrypted/target.vach index 390118844276ec6981012e415997564775e367f0..c11e402903ab3f9dcc485e50286f1e8f3530d269 100644 GIT binary patch delta 65 zcmZp_%H4jIn>Q@Y(b8mU%!yAjnap@5`!lLBMr|%*Jis-XEm38& V8PA1~X060_twhG{T8T`todANh6b=9Y delta 65 zcmZp_%H4jIn>Q@Y(b8mU%!yAjnb;C1`!lLBnr$v)JixU%iswSe VWHTO>X060_twhG{T8T`todAbM6b=9Y diff --git a/vach/test_data/signed/target.vach b/vach/test_data/signed/target.vach index 8c09c60cc27b12749bce3db31f95b0d3ac21a345..208aea515783554e3167525069e3a4ecdb24f509 100644 GIT binary patch delta 119 zcmex!nfuRWZnLm7M`sTP1_ll}26i9?1eZM-Aq*(V#gLa@5?`E|o|l>e6yjh|i)WZP zKaF{^C*wr3H0IoJhRGa^7n$l4Hs5BP6uSMO1EUZp6BpNH#haF!UxeR$F*!Hfp&e-G K_RF43nhOA@A|dDi delta 116 zcmex!nfuRWZnLm7M`sTP1_ll}26i9?1P2`$Aq*(V#gLa@5?`E|o|l>e6yjjW4QH4* zKaIJ{gK?r+8Z%J&WDdrQOl!k8-)5W?I(@Pyqr>L<1d*4M55|daZVCU*(SF&Jar?g>&8mk8N1fWUDu$-uCa9l~H?D9+DIpTNU#fUAK6B9y`ilPbth%>}cc za8A^hc3u((kq~(ap;;Mn@{6DiE}$AJ(gF0Sc~ZA_NiC;w%<`J!1rcDsHoqviqtg!L?a delta 176 zcmaEOp8Mf>?g>(&JJ}h)fQ6wrKQA53%;%VxDQ%@63z5)Vzz9`Po>-gsSD4Uz;c2R6$~5<=|!ojC7F5Y8;|c~-~5F0KuG%z wcgF2I+?g~NFmZ8BE-ba&d_V5yi_HxjDU5<1sX00MIttE-#l?wvDMg8j0O^}A0ssI2 From 1f9875deb420cd3b6c9ecdb4d5a834df619c4609 Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 24 Sep 2023 17:41:23 +0300 Subject: [PATCH 12/15] . --- vach/src/tests/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index 9e5b97d3..bb1eb882 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -115,7 +115,7 @@ fn simple_fetch() -> InternalResult { let mut archive = Archive::new(target)?; let resource = archive.fetch_mut("poem")?; - assert_eq!(resource.data.len(), 345); + // assert_eq!(resource.data.len(), 345); assert!(!resource.authenticated); assert!(resource.flags.contains(Flags::COMPRESSED_FLAG)); @@ -255,6 +255,7 @@ fn fetch_from_encrypted() -> InternalResult { let mut archive = Archive::with_config(target, &config)?; let resource = archive.fetch_mut("test_data/song.txt")?; let song = str::from_utf8(&resource.data).unwrap(); + dbg!(song); assert_eq!(song.len(), 1977); assert!(resource.authenticated); From 37b4b0a353c871e0633c834bfc63ab7fac5b272e Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 24 Sep 2023 17:48:12 +0300 Subject: [PATCH 13/15] fixed tests --- vach/src/tests/mod.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/vach/src/tests/mod.rs b/vach/src/tests/mod.rs index bb1eb882..f24460e0 100644 --- a/vach/src/tests/mod.rs +++ b/vach/src/tests/mod.rs @@ -113,13 +113,11 @@ fn builder_no_signature() -> InternalResult { fn simple_fetch() -> InternalResult { let target = File::open(SIMPLE_TARGET)?; let mut archive = Archive::new(target)?; - let resource = archive.fetch_mut("poem")?; + let resource = archive.fetch_mut("wasm")?; - // assert_eq!(resource.data.len(), 345); + assert_eq!(resource.data.len(), 106537); assert!(!resource.authenticated); - assert!(resource.flags.contains(Flags::COMPRESSED_FLAG)); - - println!("{}", str::from_utf8(&resource.data).unwrap()); + assert!(!resource.flags.contains(Flags::COMPRESSED_FLAG)); let hello = archive.fetch_mut("greeting")?; assert_eq!("Hello, Cassandra!", str::from_utf8(&hello.data).unwrap()); @@ -253,11 +251,9 @@ fn fetch_from_encrypted() -> InternalResult { config.load_public_key(public_key)?; let mut archive = Archive::with_config(target, &config)?; - let resource = archive.fetch_mut("test_data/song.txt")?; - let song = str::from_utf8(&resource.data).unwrap(); - dbg!(song); + let resource = archive.fetch_mut("test_data/quicksort.wasm")?; - assert_eq!(song.len(), 1977); + assert_eq!(resource.data.len(), 106537); assert!(resource.authenticated); assert!(!resource.flags.contains(Flags::COMPRESSED_FLAG)); assert!(resource.flags.contains(Flags::ENCRYPTED_FLAG)); From 72cb91910c24df93574da721032b18b8a06fb3aa Mon Sep 17 00:00:00 2001 From: sokorototo Date: Sun, 24 Sep 2023 17:58:58 +0300 Subject: [PATCH 14/15] =?UTF-8?q?fixed=20more=20tests=20=F0=9F=92=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test-cli.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-cli.yaml b/.github/workflows/test-cli.yaml index eb87e771..77c5529d 100644 --- a/.github/workflows/test-cli.yaml +++ b/.github/workflows/test-cli.yaml @@ -16,6 +16,8 @@ jobs: steps: - uses: actions/checkout@v2 - name: Grant executive permissions to script - run: chmod +x ./vach-cli/test_data/test.sh + run: chmod +x ./vach-cli/test_data/test.sh\ + - name: Change into relevant directory + run: cd ./vach-cli/test_data/ - name: Run CLI tests run: sh ./vach-cli/test_data/test.sh From 82bf0dbd49b4f612e2a70d2bc223d24674e6738f Mon Sep 17 00:00:00 2001 From: sokorototo Date: Mon, 25 Sep 2023 21:51:43 +0300 Subject: [PATCH 15/15] fixed? --- .github/workflows/test-cli.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test-cli.yaml b/.github/workflows/test-cli.yaml index 77c5529d..b47d3f08 100644 --- a/.github/workflows/test-cli.yaml +++ b/.github/workflows/test-cli.yaml @@ -17,7 +17,5 @@ jobs: - uses: actions/checkout@v2 - name: Grant executive permissions to script run: chmod +x ./vach-cli/test_data/test.sh\ - - name: Change into relevant directory - run: cd ./vach-cli/test_data/ - name: Run CLI tests - run: sh ./vach-cli/test_data/test.sh + run: cd ./vach-cli/test_data/ && ./test.sh