From e4487834e8dddec6ee7a6545a0ed970abbb6df8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9F=D0=B0=D0=B2=D0=BB?=
 =?UTF-8?q?=D0=BE=D0=B2=20=5BArtyom=20Pavlov=5D?= <newpavlov@gmail.com>
Date: Mon, 24 Mar 2025 05:12:01 +0300
Subject: [PATCH 1/2] kupyna: migrate tests to blobby

---
 Cargo.lock                      |  37 ++++------
 kupyna/tests/data/kupyna256.blb | Bin 0 -> 753 bytes
 kupyna/tests/data/kupyna384.blb | Bin 0 -> 147 bytes
 kupyna/tests/data/kupyna48.blb  | Bin 0 -> 74 bytes
 kupyna/tests/data/kupyna512.blb | Bin 0 -> 1048 bytes
 kupyna/tests/kup256.rs          |  95 --------------------------
 kupyna/tests/kup384.rs          |  21 ------
 kupyna/tests/kup48.rs           |  19 ------
 kupyna/tests/kup512.rs          | 116 --------------------------------
 kupyna/tests/mod.rs             |  64 ++++++++++++++++++
 10 files changed, 78 insertions(+), 274 deletions(-)
 create mode 100644 kupyna/tests/data/kupyna256.blb
 create mode 100644 kupyna/tests/data/kupyna384.blb
 create mode 100644 kupyna/tests/data/kupyna48.blb
 create mode 100644 kupyna/tests/data/kupyna512.blb
 delete mode 100644 kupyna/tests/kup256.rs
 delete mode 100644 kupyna/tests/kup384.rs
 delete mode 100644 kupyna/tests/kup48.rs
 delete mode 100644 kupyna/tests/kup512.rs
 create mode 100644 kupyna/tests/mod.rs

diff --git a/Cargo.lock b/Cargo.lock
index ce047edb..835b5719 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -70,12 +70,6 @@ dependencies = [
  "zeroize",
 ]
 
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
 [[package]]
 name = "cfg-if"
 version = "1.0.0"
@@ -100,8 +94,7 @@ dependencies = [
 [[package]]
 name = "crypto-common"
 version = "0.2.0-rc.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "170d71b5b14dec99db7739f6fc7d6ec2db80b78c3acb77db48392ccc3d8a9ea0"
+source = "git+https://github.com/RustCrypto/traits#de72c67026c5a0aee2a9beb2c9f25f3a19ec2bc8"
 dependencies = [
  "hybrid-array",
 ]
@@ -109,8 +102,7 @@ dependencies = [
 [[package]]
 name = "digest"
 version = "0.11.0-pre.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c478574b20020306f98d61c8ca3322d762e1ff08117422ac6106438605ea516"
+source = "git+https://github.com/RustCrypto/traits#de72c67026c5a0aee2a9beb2c9f25f3a19ec2bc8"
 dependencies = [
  "blobby",
  "block-buffer",
@@ -208,9 +200,9 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.170"
+version = "0.2.171"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828"
+checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
 
 [[package]]
 name = "md-5"
@@ -242,9 +234,9 @@ dependencies = [
 
 [[package]]
 name = "ppv-lite86"
-version = "0.2.20"
+version = "0.2.21"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
 dependencies = [
  "zerocopy",
 ]
@@ -260,9 +252,9 @@ dependencies = [
 
 [[package]]
 name = "quote"
-version = "1.0.39"
+version = "1.0.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1f1914ce909e1658d9907913b4b91947430c7d9be598b15a1912935b8c04801"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
 dependencies = [
  "proc-macro2",
 ]
@@ -370,9 +362,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
 
 [[package]]
 name = "syn"
-version = "2.0.99"
+version = "2.0.100"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e02e925281e18ffd9d640e234264753c43edc62d64b2d4cf898f1bc5e75f3fc2"
+checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -420,19 +412,18 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.7.35"
+version = "0.8.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
 dependencies = [
- "byteorder",
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.7.35"
+version = "0.8.24"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
+checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/kupyna/tests/data/kupyna256.blb b/kupyna/tests/data/kupyna256.blb
new file mode 100644
index 0000000000000000000000000000000000000000..597acd65959e3fc73a6edf35c85e538c0a4204dc
GIT binary patch
literal 753
zcmZQ*U|?WmVrF4wW9Q)H;^yJy;};MV5*85^6PJ*bl9rK`lUGnwQdUt_Q`gYc($>+{
z(>E|QGBz<aGq<p`vbM3cvv=V5@-AQc*#v7NA3yb(Je&N!&Ar;YucguM!BYJ+L**Hz
zjg(vA=;Z9;>gMj@>E-R?>*pU37!({58WtWA85JE98yBCDn3SB7nwFlCnU$TBo0nfu
zSX5k6T2@|BSyf$ATUYPEHKpX4>+(x+s&Vr=|9{at{@T!F0z2!ZmJb`7o&@b((bPQP
zPHbpwYHn$5Ywzgn>h9_7>z^=j(&Q;qr%j(RbJpxRbLY)puyE1hB}<nrU$Ju4>NRWE
zt>3V5)8;K(w{73CbJy-Yd-v@>aPZLKBS()NKXLNZ=`&}~oxgDL(&Z~xuU)@!^VaP<
zckkVQ@bJ;&Cr_U}fAR9w>o;%Tz5np>)8{W=zkUDl^Vjb`fB*e=xXij(dz!7t+~cX=
zTBiiWI+Qc{H|I!yuwZ+b<nyrXKtI!ehgW6gr(D%S!x~&<1S^|fiLlOFcHz2^Z{FF>
z_uhEEnDC{+j^eb0KcXE3N>6M!J&|89`&RtIk8?E7_nj#{^}mQ?m*$jh{YUe9#TXpU
l1~OhebDvjM-s@J_i;lBJJ_{E#cbO_a7nb$k-pe1i4FJSM91j2h

literal 0
HcmV?d00001

diff --git a/kupyna/tests/data/kupyna384.blb b/kupyna/tests/data/kupyna384.blb
new file mode 100644
index 0000000000000000000000000000000000000000..003eeb41c05931fb8704af4e5ab6b565174e5654
GIT binary patch
literal 147
zcmV;E0BrvNfIa{L0s{mE1_uZU3JVMk4i69!5)%{^78e*98XFuP9v>hfA|oUvCMPH<
zDl054E-x@KGBY$aHa9pqIy*c)K0iP~LPJDFMn_0VN=r;lPESx#Qd3k_R##YAT3cLQ
zUSQb*7LwRbQFU`xRD^4%QRdL?53Dxdya+)keaj0~gvU@8!`{p)Zb!unFE|n7QMe^+
BD0~0_

literal 0
HcmV?d00001

diff --git a/kupyna/tests/data/kupyna48.blb b/kupyna/tests/data/kupyna48.blb
new file mode 100644
index 0000000000000000000000000000000000000000..e339ff25ec9d69c06b3e75e57e0e3e1ad14518ef
GIT binary patch
literal 74
zcmZQ*U|?WmVrF4wW9Q)H;^yJy;};MV5*85^6PJ*bl9rK`lUGnwQdUt_Q`gYc($>+{
d(>E|QGBz<aGq<p`vbM3cv**!IGgO{Y3IGh(3S$5O

literal 0
HcmV?d00001

diff --git a/kupyna/tests/data/kupyna512.blb b/kupyna/tests/data/kupyna512.blb
new file mode 100644
index 0000000000000000000000000000000000000000..5d07ac65a7ef10aecf4c0ed8e05b8b33342b490e
GIT binary patch
literal 1048
zcmZQ*U|?WmVrF4wW9Q)H;^yJy;};MV5*85^6PJ*bl9rK`lUGnwQdUt_Q`gYc($>+{
z(>E|QGBz<aGq<p`vbM3cvu|Lq5Pl>uQR3|HsNA@s?+U$VPH^e|w)*><=}YFMt#9`Q
zXPYM6m95h}_SLdteZ&@*$JNVP58R!|YP>79;{E@Fw$HR0DRzT{qm#3XtDC!rr<b>n
zub+QFU{G*KXjpheWK?uaY+QUoVp4KSYFc_mW>$7iZeD&tVNr2OX<2ziWmR=eZC!l>
zL)lxYL*25B&W!fI+7+!GCTtFK5lTL2$NY<pt7q+E?dj7@Q|nc;MX&x@vasYH(|m4e
z=k^m7e-0ktYiGUQ{I~vJ^T7L|v8lPGwXMCQv#YzOx37P~#7UE<Or17;#>`o>=ggfq
zf5E~<i<c~2wtU6PRjb#mUAKP2#!Z{IY~8kf$Ie~5_w3!b|G>dRhmRaRcKpQ2Q>V|I
zJ$L@X#Y>m3T)lSv#?4!|@7%q2|G~pYkDok!_WZ@mSFhi^efR#u$4{TXeEs(Q$IoBC
z|NQ;;zkz}Gf^BiY5zf;#nuj7LFDUZQ7Peop^Yw&fzEb@wt;0go1Yb+k7Di3Y7O1oS
zQ|6&GL)dE0i_-`8#)+6M-8fytzm5rLM!U4c`BLwq5@z<5)h@I4ZPre4@i}mH$+ZZB
zbs=HRRYf;k`-M(?$eD3WZ1qEl=|7T^x1KIPqVU^1xMbf^?OdiwO+!8&8W=Wq?tj_-
zt?BE>^bgm6g#{ZtRNMA+(#E5)E}9ck-cQ}QwBAOS@4R^1Tv^F^yD#W<g#Yfko4(?(
zeAwBh17hb(3>6s~7*ezKeXffnS#+l?E^vModi#m%m7sNJ-41IuI~)3aaFE>d%brCo
gYDV}^>6h~7BnzfV)Vy8ZGe?F=M$?O}Q?k_p0Q9D<iU0rr

literal 0
HcmV?d00001

diff --git a/kupyna/tests/kup256.rs b/kupyna/tests/kup256.rs
deleted file mode 100644
index 630b0493..00000000
--- a/kupyna/tests/kup256.rs
+++ /dev/null
@@ -1,95 +0,0 @@
-use hex_literal::hex;
-use kupyna::{Digest, Kupyna256};
-
-#[test]
-fn kup256_n512() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-    );
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("08F4EE6F1BE6903B324C4E27990CB24EF69DD58DBE84813EE0A52F6631239875")[..],
-    );
-}
-
-#[test]
-fn kup256_n1024() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F"
-        "606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F"
-    );
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("0A9474E645A7D25E255E9E89FFF42EC7EB31349007059284F0B182E452BDA882")[..],
-    );
-}
-
-#[test]
-fn kup256_n2048() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F"
-        "606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F"
-        "808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F"
-        "A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF"
-        "C0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF"
-        "E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"
-    );
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("D305A32B963D149DC765F68594505D4077024F836C1BF03806E1624CE176C08F")[..],
-    );
-}
-
-#[test]
-fn kup256_n8() {
-    let input = hex!("FF");
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("EA7677CA4526555680441C117982EA14059EA6D0D7124D6ECDB3DEEC49E890F4")[..],
-    );
-}
-
-#[test]
-fn kup256_n760() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E"
-    );
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("1075C8B0CB910F116BDA5FA1F19C29CF8ECC75CAFF7208BA2994B68FC56E8D16")[..],
-    );
-}
-
-#[test]
-fn kup256_n0() {
-    let input = hex!("");
-
-    let result = Kupyna256::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!("CD5101D1CCDF0D1D1F4ADA56E888CD724CA1A0838A3521E7131D4FB78D0F5EB6")[..],
-    );
-}
diff --git a/kupyna/tests/kup384.rs b/kupyna/tests/kup384.rs
deleted file mode 100644
index 54d81851..00000000
--- a/kupyna/tests/kup384.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-use hex_literal::hex;
-use kupyna::{Digest, Kupyna384};
-
-#[test]
-fn kup512_n760() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E"
-    );
-
-    let result = Kupyna384::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "D9021692D84E5175735654846BA751E6D0ED0FAC36DFBC0841287DCB0B5584C7"
-            "5016C3DECC2A6E47C50B2F3811E351B8"
-        )[..],
-    );
-}
diff --git a/kupyna/tests/kup48.rs b/kupyna/tests/kup48.rs
deleted file mode 100644
index a81ef184..00000000
--- a/kupyna/tests/kup48.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-use hex_literal::hex;
-use kupyna::{
-    Digest, KupynaShortCore,
-    digest::{core_api::CoreWrapper, typenum::U6},
-};
-
-type Kupyna48 = CoreWrapper<KupynaShortCore<U6>>;
-
-#[test]
-fn kup48_n512() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-    );
-
-    let result = Kupyna48::digest(&input);
-
-    assert_eq!(result[..], hex!("2F6631239875")[..]);
-}
diff --git a/kupyna/tests/kup512.rs b/kupyna/tests/kup512.rs
deleted file mode 100644
index 20913e2b..00000000
--- a/kupyna/tests/kup512.rs
+++ /dev/null
@@ -1,116 +0,0 @@
-use hex_literal::hex;
-use kupyna::{Digest, Kupyna512};
-
-#[test]
-fn kup512_n512() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-    );
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "3813E2109118CDFB5A6D5E72F7208DCCC80A2DFB3AFDFB02F46992B5EDBE536B"
-            "3560DD1D7E29C6F53978AF58B444E37BA685C0DD910533BA5D78EFFFC13DE62A"
-        )[..],
-    );
-}
-
-#[test]
-fn kup512_n1024() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F"
-        "606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F"
-    );
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "76ED1AC28B1D0143013FFA87213B4090B356441263C13E03FA060A8CADA32B97"
-            "9635657F256B15D5FCA4A174DE029F0B1B4387C878FCC1C00E8705D783FD7FFE"
-        )[..],
-    );
-}
-
-#[test]
-fn kup512_n2048() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F"
-        "606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F"
-        "808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F"
-        "A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF"
-        "C0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF"
-        "E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF"
-    );
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "0DD03D7350C409CB3C29C25893A0724F6B133FA8B9EB90A64D1A8FA93B565566"
-            "11EB187D715A956B107E3BFC76482298133A9CE8CBC0BD5E1436A5B197284F7E"
-        )[..],
-    );
-}
-
-#[test]
-fn kup512_n8() {
-    let input = hex!("FF");
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "871B18CF754B72740307A97B449ABEB32B64444CC0D5A4D65830AE5456837A72"
-            "D8458F12C8F06C98C616ABE11897F86263B5CB77C420FB375374BEC52B6D0292"
-        )[..],
-    );
-}
-
-#[test]
-fn kup512_n1536() {
-    let input = hex!(
-        "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F"
-        "202122232425262728292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F"
-        "404142434445464748494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F"
-        "606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E7F"
-        "808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F"
-        "A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF"
-    );
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "B189BFE987F682F5F167F0D7FA565330E126B6E592B1C55D44299064EF95B1A5"
-            "7F3C2D0ECF17869D1D199EBBD02E8857FB8ADD67A8C31F56CD82C016CF743121"
-        )[..],
-    );
-}
-
-#[test]
-fn kup512_n0() {
-    let input = hex!("");
-
-    let result = Kupyna512::digest(&input);
-
-    assert_eq!(
-        result[..],
-        hex!(
-            "656B2F4CD71462388B64A37043EA55DBE445D452AECD46C3298343314EF04019"
-            "BCFA3F04265A9857F91BE91FCE197096187CEDA78C9C1C021C294A0689198538"
-        )[..],
-    );
-}
diff --git a/kupyna/tests/mod.rs b/kupyna/tests/mod.rs
new file mode 100644
index 00000000..82e44b2f
--- /dev/null
+++ b/kupyna/tests/mod.rs
@@ -0,0 +1,64 @@
+use kupyna::{digest::{new_test,hash_serialization_test, dev::{feed_rand_16mib, fixed_reset_test}}, KupynaShortCore,
+    digest::{core_api::CoreWrapper, typenum::U6},
+    Kupyna256, Kupyna384, Kupyna512, Digest,
+};
+use hex_literal::hex;
+
+type Kupyna48 = CoreWrapper<KupynaShortCore<U6>>;
+
+// Test vectors from the original paper:
+// https://eprint.iacr.org/2015/885.pdf
+new_test!(kupyna48, "kupyna48", Kupyna48, fixed_reset_test);
+new_test!(kupyna256, "kupyna256", Kupyna256, fixed_reset_test);
+new_test!(kupyna384, "kupyna384", Kupyna384, fixed_reset_test);
+new_test!(kupyna512, "kupyna512", Kupyna512, fixed_reset_test);
+
+hash_serialization_test!(
+    kupyna256_serialization,
+    Kupyna256,
+    hex!(
+        "a02347e840fa8d002ff2bf9535184ad08a0761fce78bb9875c4bbae6bfd460e2"
+        "d2076070b6a2b9db64b11d6bbafa0ecf20420a94d51382370256415a8e32bceb"
+        "0100000000000000200113000000000000000000000000000000000000000000"
+        "0000000000000000000000000000000000000000000000000000000000000000"
+        "00000000000000000000"
+    )
+);
+hash_serialization_test!(
+    kupyna512_serialization,
+    Kupyna512,
+    hex!(
+        "601ca0ba3053d9dbf78976c62126d51da932ea8962a9f351c3703546dbc6a1ad"
+        "a445b95fbf44ab2687894caf6310d81d0c0fb1573f310e1a85ebb8b3d7d936d2"
+        "5b31ff2ce6d0158fa8d050c2e8e328f3ee362d5dc8b12758292d5c200b246666"
+        "3ab741319ecdb86273039cdad99887ca656c952c71860d179205b5695b052c17"
+        "0100000000000000400113000000000000000000000000000000000000000000"
+        "0000000000000000000000000000000000000000000000000000000000000000"
+        "0000000000000000000000000000000000000000000000000000000000000000"
+        "0000000000000000000000000000000000000000000000000000000000000000"
+        "00000000000000000000"
+    )
+);
+
+#[test]
+fn kupyna256_rand() {
+    let mut h = Kupyna256::new();
+    feed_rand_16mib(&mut h);
+    assert_eq!(
+        h.finalize(),
+        hex!("250067e8dd6f36ec2d184d2cf6dc243d5b45b470cc771a8541fb0357e134c2d7"),
+    );
+}
+
+#[test]
+fn kupyna512_rand() {
+    let mut h = Kupyna512::new();
+    feed_rand_16mib(&mut h);
+    assert_eq!(
+        h.finalize(),
+        hex!(
+            "1b91c76a15adade8611ae202e1a1899f12b45e21d1d342f33b5ba27987f2b826"
+            "9b2b1ba19c5e6663af24439965ae519a59535f7aa5356352e5134e875b4e3510"
+        ),
+    );
+}

From 7a5dbc37b93ad8a369c06269f106ac80aa3a69c8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=90=D1=80=D1=82=D1=91=D0=BC=20=D0=9F=D0=B0=D0=B2=D0=BB?=
 =?UTF-8?q?=D0=BE=D0=B2=20=5BArtyom=20Pavlov=5D?= <newpavlov@gmail.com>
Date: Mon, 24 Mar 2025 05:13:34 +0300
Subject: [PATCH 2/2] fmt

---
 kupyna/tests/mod.rs | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/kupyna/tests/mod.rs b/kupyna/tests/mod.rs
index 82e44b2f..8e3dbf96 100644
--- a/kupyna/tests/mod.rs
+++ b/kupyna/tests/mod.rs
@@ -1,8 +1,12 @@
-use kupyna::{digest::{new_test,hash_serialization_test, dev::{feed_rand_16mib, fixed_reset_test}}, KupynaShortCore,
+use hex_literal::hex;
+use kupyna::{
+    Digest, Kupyna256, Kupyna384, Kupyna512, KupynaShortCore,
     digest::{core_api::CoreWrapper, typenum::U6},
-    Kupyna256, Kupyna384, Kupyna512, Digest,
+    digest::{
+        dev::{feed_rand_16mib, fixed_reset_test},
+        hash_serialization_test, new_test,
+    },
 };
-use hex_literal::hex;
 
 type Kupyna48 = CoreWrapper<KupynaShortCore<U6>>;