Compare commits

...

2 commits

6 changed files with 89 additions and 125 deletions

3
.gitmodules vendored
View file

@ -1,3 +0,0 @@
[submodule "hashes"]
path = hashes
url = https://github.com/RustCrypto/hashes

93
Cargo.lock generated
View file

@ -77,7 +77,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f9a9c93d95a4f3344947e14ad2fd9c1d2ea789c8f8ecef6a906b9ac295301763" checksum = "f9a9c93d95a4f3344947e14ad2fd9c1d2ea789c8f8ecef6a906b9ac295301763"
dependencies = [ dependencies = [
"ascon-core", "ascon-core",
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -93,7 +93,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbc405b3b8472f6e019aedf942fdee9516a0546d12e053d3744416e8f21ddb8a" checksum = "fbc405b3b8472f6e019aedf942fdee9516a0546d12e053d3744416e8f21ddb8a"
dependencies = [ dependencies = [
"belt-block", "belt-block",
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -102,7 +102,7 @@ version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -127,15 +127,6 @@ dependencies = [
"generic-array", "generic-array",
] ]
[[package]]
name = "block-buffer"
version = "0.11.0-rc.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a229bfd78e4827c91b9b95784f69492c1b77c1ab75a45a8a037b139215086f94"
dependencies = [
"hybrid-array",
]
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.2.30" version = "1.2.30"
@ -231,43 +222,24 @@ dependencies = [
"typenum", "typenum",
] ]
[[package]]
name = "crypto-common"
version = "0.2.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a23fa214dea9efd4dacee5a5614646b30216ae0f05d4bb51bafb50e9da1c5be"
dependencies = [
"hybrid-array",
]
[[package]] [[package]]
name = "digest" name = "digest"
version = "0.10.7" version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [ dependencies = [
"block-buffer 0.10.4", "block-buffer",
"crypto-common 0.1.6", "crypto-common",
"subtle", "subtle",
] ]
[[package]]
name = "digest"
version = "0.11.0-rc.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "460dd7f37e4950526b54a5a6b1f41b6c8e763c58eb9a8fc8fc05ba5c2f44ca7b"
dependencies = [
"block-buffer 0.11.0-rc.4",
"crypto-common 0.2.0-rc.3",
]
[[package]] [[package]]
name = "fsb" name = "fsb"
version = "0.1.3" version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e54a22467e3d3e1b2d014c67cb074fe361d80e3293ffab4128918313eaf737c8" checksum = "e54a22467e3d3e1b2d014c67cb074fe361d80e3293ffab4128918313eaf737c8"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
"whirlpool", "whirlpool",
] ]
@ -287,7 +259,7 @@ version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f960e0ba8eb5e47a7d45097dc4159b5ef63d82e62dc85894bfcfd8e6b85526c" checksum = "2f960e0ba8eb5e47a7d45097dc4159b5ef63d82e62dc85894bfcfd8e6b85526c"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -296,7 +268,7 @@ version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "343cfc165f92a988fd60292f7a0bfde4352a5a0beff9fbec29251ca4e9676e4d" checksum = "343cfc165f92a988fd60292f7a0bfde4352a5a0beff9fbec29251ca4e9676e4d"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -311,15 +283,6 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
[[package]]
name = "hybrid-array"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "891d15931895091dea5c47afa5b3c9a01ba634b311919fd4d41388fa0e3d76af"
dependencies = [
"typenum",
]
[[package]] [[package]]
name = "is_terminal_polyfill" name = "is_terminal_polyfill"
version = "1.70.1" version = "1.70.1"
@ -332,7 +295,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f65735f9e73adc203417d2e05352aef71d7e832ec090f65de26c96c9ec563aa5" checksum = "f65735f9e73adc203417d2e05352aef71d7e832ec090f65de26c96c9ec563aa5"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
"hex-literal", "hex-literal",
"ppv-lite86", "ppv-lite86",
] ]
@ -343,7 +306,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4dc5fdb62af2f520116927304f15d25b3c2667b4817b90efdc045194c912c54" checksum = "f4dc5fdb62af2f520116927304f15d25b3c2667b4817b90efdc045194c912c54"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
"sha3", "sha3",
] ]
@ -356,13 +319,6 @@ dependencies = [
"cpufeatures", "cpufeatures",
] ]
[[package]]
name = "kupyna"
version = "0.1.0"
dependencies = [
"digest 0.11.0-rc.0",
]
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.174" version = "0.2.174"
@ -376,7 +332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -385,7 +341,7 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f4f0f3ed25ff4f8d8d102288d92f900efc202661c884cf67dfe4f0d07c43d1f" checksum = "1f4f0f3ed25ff4f8d8d102288d92f900efc202661c884cf67dfe4f0d07c43d1f"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -394,7 +350,7 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda" checksum = "7da5ac363534dce5fabf69949225e174fbf111a498bf0ff794c8ea1fba9f3dda"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -405,7 +361,7 @@ checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
[[package]] [[package]]
name = "picca" name = "picca"
version = "0.3.1" version = "0.3.2"
dependencies = [ dependencies = [
"ascon-hash", "ascon-hash",
"belt-hash", "belt-hash",
@ -418,7 +374,6 @@ dependencies = [
"groestl", "groestl",
"jh", "jh",
"k12", "k12",
"kupyna",
"md-5", "md-5",
"md2", "md2",
"md4", "md4",
@ -467,7 +422,7 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -478,7 +433,7 @@ checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -489,7 +444,7 @@ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"cpufeatures", "cpufeatures",
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -498,7 +453,7 @@ version = "0.10.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
"keccak", "keccak",
] ]
@ -508,7 +463,7 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "990a6c7ff96ecc5664129bbf1f7b46a5a7c13f297d05af75e702f861cea6f08a" checksum = "990a6c7ff96ecc5664129bbf1f7b46a5a7c13f297d05af75e702f861cea6f08a"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -523,7 +478,7 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96a90a220ab98dbbfeabeae7c558a79f37839c10b9ef55c77082a741a463cab7" checksum = "96a90a220ab98dbbfeabeae7c558a79f37839c10b9ef55c77082a741a463cab7"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
"threefish", "threefish",
] ]
@ -533,7 +488,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebb9a3b702d0a7e33bc4d85a14456633d2b165c2ad839c5fd9a8417c1ab15860" checksum = "ebb9a3b702d0a7e33bc4d85a14456633d2b165c2ad839c5fd9a8417c1ab15860"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -542,7 +497,7 @@ version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e7fe6ed8a42cec360e070309427bb7959e102849b0dbaa7de19d5b9860bd536" checksum = "9e7fe6ed8a42cec360e070309427bb7959e102849b0dbaa7de19d5b9860bd536"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -580,7 +535,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "579abbce4ad73b04386dbeb34369c9873a8f9b749c7b99cbf479a2949ff715ed" checksum = "579abbce4ad73b04386dbeb34369c9873a8f9b749c7b99cbf479a2949ff715ed"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]
@ -613,7 +568,7 @@ version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1ae50671d985c15b3214c7d969b8b520759fb3c8682444bec15ef775335a05c" checksum = "f1ae50671d985c15b3214c7d969b8b520759fb3c8682444bec15ef775335a05c"
dependencies = [ dependencies = [
"digest 0.10.7", "digest",
] ]
[[package]] [[package]]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "picca" name = "picca"
version = "0.3.1" version = "0.3.2"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
@ -16,7 +16,6 @@ gost94 = "0.10.4"
groestl = "0.10.1" groestl = "0.10.1"
jh = "0.1.0" jh = "0.1.0"
k12 = "0.3.0" k12 = "0.3.0"
kupyna = { path = "./hashes/kupyna" }
md2 = "0.10.2" md2 = "0.10.2"
md4 = "0.10.2" md4 = "0.10.2"
ripemd = "0.1.3" ripemd = "0.1.3"

1
hashes

@ -1 +0,0 @@
Subproject commit 57f5b8b0cd38ad883a85e1b5d5a51168f24ed408

View file

@ -1,35 +1,25 @@
use ascon_hash::AsconHash256; use ascon_hash::{AsconHash256, ExtendableOutput};
use belt_hash::BeltHash; use belt_hash::BeltHash;
use blake2::{Blake2b512, Blake2s256}; use blake2::{Blake2b512, Blake2s256};
use blake3::Hasher as Blake3; use blake3::Hasher as Blake3;
use fsb::{Fsb160, Fsb224, Fsb256, Fsb384, Fsb512}; use fsb::{Fsb160, Fsb224, Fsb256, Fsb384, Fsb512};
use gost94::Gost94CryptoPro; use gost94::Gost94CryptoPro;
use groestl::{Groestl224, Groestl256, Groestl384, Groestl512}; use groestl::{Groestl224, Groestl256, Groestl384, Groestl512};
use jh::{ use jh::{Jh224, Jh256, Jh384, Jh512};
// digest::{core_api::CoreWrapper, KeyInit}, use k12::KangarooTwelve;
Jh224, // use kupyna::{Digest as _, Kupyna224, Kupyna256, Kupyna384, Kupyna512};
Jh256,
Jh384,
Jh512,
};
// use k12::KangarooTwelve;
// use kupyna::{Kupyna224, Kupyna256, Kupyna384, Kupyna512};
use md2::Md2; use md2::Md2;
use md4::Md4; use md4::Md4;
use md5::Md5; use md5::Md5;
use ripemd::{Ripemd128, Ripemd160, Ripemd256, Ripemd320}; use ripemd::{Ripemd128, Ripemd160, Ripemd256, Ripemd320};
use sha1::Sha1; use sha1::Sha1;
use sha2::{Digest, Sha224, Sha256, Sha384, Sha512}; use sha2::{Digest as _, Sha224, Sha256, Sha384, Sha512};
// use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256}; use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512, Shake128, Shake256};
use sha3::{Sha3_224, Sha3_256, Sha3_384, Sha3_512};
use shabal::{Shabal192, Shabal224, Shabal256, Shabal384, Shabal512}; use shabal::{Shabal192, Shabal224, Shabal256, Shabal384, Shabal512};
// use skein::{ use skein::{consts::U32, Skein1024, Skein256, Skein512};
// digest::{core_api::CoreWrapper, KeyInit},
// Skein1024, Skein256, Skein512,
// };
use sm3::Sm3; use sm3::Sm3;
use std::fs::File;
use std::io; use std::io;
use std::{fs::File, io::Read};
use streebog::{Streebog256, Streebog512}; use streebog::{Streebog256, Streebog512};
use tiger::Tiger; use tiger::Tiger;
use whirlpool::Whirlpool; use whirlpool::Whirlpool;
@ -104,19 +94,27 @@ pub fn hash_sha3_512(mut file: File) -> String {
return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
} }
// pub fn hash_shake128(mut file: File) -> String { pub fn hash_shake128(mut file: File) -> String {
// let mut hasher: CoreWrapper<_> = Shake128::new(); let mut hasher = Shake128::default();
// _ = io::copy(&mut file, &mut hasher); _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); let mut result = String::new();
// } let mut finalized = hasher.finalize_xof();
_ = finalized.read_to_string(&mut result);
// pub fn hash_shake256(mut file: File) -> String { return format!("{}", result);
// let mut hasher = Shake256::new(); }
// _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); pub fn hash_shake256(mut file: File) -> String {
// } let mut hasher = Shake256::default();
_ = io::copy(&mut file, &mut hasher);
let mut result = String::new();
let mut finalized = hasher.finalize_xof();
_ = finalized.read_to_string(&mut result);
return format!("{}", result);
}
pub fn hash_shabal192(mut file: File) -> String { pub fn hash_shabal192(mut file: File) -> String {
let mut hasher = Shabal192::new(); let mut hasher = Shabal192::new();
@ -153,26 +151,26 @@ pub fn hash_shabal512(mut file: File) -> String {
return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
} }
// pub fn hash_skein256(mut file: File) -> String { pub fn hash_skein256(mut file: File) -> String {
// let mut hasher = Skein256::new(); let mut hasher = Skein256::<U32>::new();
// _ = io::copy(&mut file, &mut hasher); _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
// } }
// pub fn hash_skein512(mut file: File) -> String { pub fn hash_skein512(mut file: File) -> String {
// let mut hasher = Skein512::new(); let mut hasher = Skein512::<U32>::new();
// _ = io::copy(&mut file, &mut hasher); _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
// } }
// pub fn hash_skein1024(mut file: File) -> String { pub fn hash_skein1024(mut file: File) -> String {
// let mut hasher = Skein1024::new(); let mut hasher = Skein1024::<U32>::new();
// _ = io::copy(&mut file, &mut hasher); _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
// } }
pub fn hash_gost94(mut file: File) -> String { pub fn hash_gost94(mut file: File) -> String {
let mut hasher = Gost94CryptoPro::new(); let mut hasher = Gost94CryptoPro::new();
@ -237,15 +235,19 @@ pub fn hash_jh512(mut file: File) -> String {
return format!("{:x}", hasher.finalize()); return format!("{:x}", hasher.finalize());
} }
// pub fn hash_k12(mut file: File) -> String { pub fn hash_k12(mut file: File) -> String {
// let mut hasher = KangarooTwelve::new(); let mut hasher = KangarooTwelve::default();
// _ = io::copy(&mut file, &mut hasher); _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); let mut result = String::new();
// } let mut finalized = hasher.finalize_xof();
_ = finalized.read_to_string(&mut result);
return format!("{}", result);
}
// pub fn hash_kupyna224(mut file: File) -> String { // pub fn hash_kupyna224(mut file: File) -> String {
// let mut hasher = Kupyna224::new(); // let mut hasher = Kupyna224::default();
// _ = io::copy(&mut file, &mut hasher); // _ = io::copy(&mut file, &mut hasher);
// return format!("{:x}", hasher.finalize()); // return format!("{:x}", hasher.finalize());

View file

@ -9,7 +9,7 @@ use std::thread::{self, available_parallelism, JoinHandle};
mod common; mod common;
mod hashers; mod hashers;
const ALGORITHMS: [&'static str; 38] = [ const ALGORITHMS: [&'static str; 44] = [
"ascon", "ascon",
"belt", "belt",
"blake3", "blake3",
@ -28,6 +28,7 @@ const ALGORITHMS: [&'static str; 38] = [
"jh256", "jh256",
"jh384", "jh384",
"jh512", "jh512",
"k12",
"ripemd128", "ripemd128",
"ripemd160", "ripemd160",
"ripemd256", "ripemd256",
@ -45,6 +46,11 @@ const ALGORITHMS: [&'static str; 38] = [
"shabal256", "shabal256",
"shabal384", "shabal384",
"shabal512", "shabal512",
"shake128",
"shake256",
"skein256",
"skein512",
"skein1024",
"sm3", "sm3",
"tiger", "tiger",
"whirlpool", "whirlpool",
@ -186,6 +192,7 @@ fn hash(info: ThreadInfo) -> Result<(), String> {
"jh256" => hashers::hash_jh256(file), "jh256" => hashers::hash_jh256(file),
"jh384" => hashers::hash_jh384(file), "jh384" => hashers::hash_jh384(file),
"jh512" => hashers::hash_jh512(file), "jh512" => hashers::hash_jh512(file),
"k12" => hashers::hash_k12(file),
"md2" => hashers::hash_md2(file), "md2" => hashers::hash_md2(file),
"md4" => hashers::hash_md4(file), "md4" => hashers::hash_md4(file),
"md5" => hashers::hash_md5(file), "md5" => hashers::hash_md5(file),
@ -207,6 +214,11 @@ fn hash(info: ThreadInfo) -> Result<(), String> {
"shabal256" => hashers::hash_shabal256(file), "shabal256" => hashers::hash_shabal256(file),
"shabal384" => hashers::hash_shabal384(file), "shabal384" => hashers::hash_shabal384(file),
"shabal512" => hashers::hash_shabal512(file), "shabal512" => hashers::hash_shabal512(file),
"shake128" => hashers::hash_shake128(file),
"shake256" => hashers::hash_shake256(file),
"skein256" => hashers::hash_skein256(file),
"skein512" => hashers::hash_skein512(file),
"skein1024" => hashers::hash_skein1024(file),
"sm3" => hashers::hash_sm3(file), "sm3" => hashers::hash_sm3(file),
"streebog256" => hashers::hash_streebog256(file), "streebog256" => hashers::hash_streebog256(file),
"streebog512" => hashers::hash_streebog512(file), "streebog512" => hashers::hash_streebog512(file),