fips205-source/tests/messages.rs

23 lines
34 KiB
Rust
Raw Normal View History

2024-03-14 13:46:53 +00:00
use fips205::slh_dsa_sha2_128f;
use fips205::traits::{KeyGen, SerDes, Signer, Verifier};
use rand_chacha::rand_core::SeedableRng;
2024-10-01 22:17:27 +00:00
#[ignore] // TODO: rerun WASM case with context at top-level
2024-03-14 13:46:53 +00:00
#[test]
fn test_browser_message() {
let msg = b"asdf";
2024-10-03 17:24:28 +00:00
let hedged = true;
2024-03-14 13:46:53 +00:00
let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(123);
2024-10-01 19:29:06 +00:00
let (pk, sk) = slh_dsa_sha2_128f::KG::try_keygen_with_rng(&mut rng).unwrap();
2024-10-03 17:24:28 +00:00
let sig = sk.try_sign_with_rng(&mut rng, msg, &[], hedged).unwrap();
2024-10-01 22:17:27 +00:00
assert!(pk.verify(msg, &sig, b"context"));
2024-03-14 13:46:53 +00:00
assert_eq!(sk.into_bytes(), *hex::decode("932b30e756257dda01d47dd4a1b0e62abb8fa01f222ad8554ed821a89f82cbbb3f537f509949e758624a70946a776986052a5761098a9b4ecbfaa10a92aee325").unwrap(), "sk not correct");
assert_eq!(sig, *hex::decode("9d17e00068ec228a32fab3988abd86d1588e5402741d7296aab76be22a9ac235dc8147225db2989350c21dc15954e4adb582259e8cbeea56fc31b03a68dcbcbe35f4857daef1af33f782dacf4d293072c0c1024e68b7d199a00e7210b59807d8cc65cfd7daecabb3210392117168828a2d6b217ddad5a8c1e20b31b073ba4677ca8f10469fc864a2e7ee766fd7721693311b8523d9265af4e57e5a2c6a769d6c1c0b45e3664e3b7f35238e6cf42e9b0a0434ef2d4f8cf56a9fb7ccd9d321c222a43a63e345d01bd8013af7340f295487087745b27752c6080843211c2893adca9f574311ba058c4c175afd564f5131c22557c037e0b321b977d1f4d82a04a24bf34dd18ae60657f323c89441ce7122b26fd610bd95ae976fcf2a7f6faaa1a59caa564a0f84d5ebb77b3263e9480ae57e1ccdbb790a62b34c0d1693d748b8e047814ec5cd9a3115ac2a4e4e120957095f14fae6920de21d126cb0b0fa9d391a62c20a17ed07955c708bdd08f2b0141df3754d85aeb432fa2a5436d2c124dc3853ddb2569682cf8eacc432ea10bde68959fe85e319df9a44e11e0d648bc167cb28cfb7bb852b47e7745e8d5ff891349fb43e92ac213838d5e0682f552c0a8ea6a30851e82f7da14bcf7d11d5bf6dc3446459fc77cf9dc82cf8d33b904752952ec877f198eb848d16e48386c45f916c0b78b68dbb26357d4ee9a817c232a6fa6da4a8f83b826e835653b96c54128ffac6f28ad169aba35b36e1dd0ea9a52d5c06d683ac9ab0b6ad849eb78ca35fc20a5f8dc3ae27cb05c69c40e614d4d19567f50bfeff3da6b7a4da2f9ae63d4c6ede0722b6af88457b4cce36dd9f7d9d98108f2c9606cc9d57cb9ab07d93a7c32f33e6f7f94b8363473f50d2ce4b74b6278ebd36a0126f7e8574390c69d0a4efbe1a3b05c245e806f2099b07299981f9fe38564393cbcf1c9e39d4e5c273f5abea6e67a793aeb1f87dafb756d919b8b6d893b4c5fa5e1f1e6a17e43a2a87c64dcbaa298d9590bc2b5640f7675f70a8944bc70901cf2eb3ef149cbfa901806029accd938c6b9551791e230a81a88e98692d155bd3a64e243b071a8ac7424967139ea82efe28688beac12925c5800623fb4819c938e1de6167d243d7baf96c8c5983f85601f8dcdf1390a04037ed0f7365ab7a99f0486d62267f9d5af7e4142ec83349df0fa8c1230e3565d02f9a0c62ef2b7527ff88ff847f043eb4e0e50ff84ac988f3b7c54d26903455baf06893857796f6b234728248bf6a06fe0ca8c163d49ca3f1b5ee88d7ace66eed43e7f111c19d1025c141d6995e67914b740fe1c62272e0e0e672f346126df240634b3f93d21ca1f1b31133b5935f2508015ca85e8c5ff5f1dc970161c8849f3270165f96824d4a34caf76d03c43be9a408658e42ad0d4e12c858563fde4f143757a7f46abf394515d90c223f0dbaee5d8ade68e6bc0540a5c73ffd20a561c984d2ad6e391f45e88d97bdb5859e5cfb58ab55b024803b51984ee32e20fdfe603d1246ff918ecd9046d38c505eaf13e913de21a599c864c5d40d147c530560a41847cf4150748bb3c754f39eeeb450ec7706bb4b67de52d5443c5395b1f0925ca989339affe484f74b8e14abb72cfae619afdd9c1260f83fe6fe483c07da57c86eb969463295f289eab2d5836900a86138d37ca9b05e743a68e9d495a4235c8653d649bd525299bec36b2dd7927a20cce1ecf9cd38efa40fa75c86938b49f87c2fa5c87a4f773c53079a7e479132798d6007dbb922407f208740d5dcb2278bbaf5fe7eb9a5f55c30d9fb708bfc8ea4606698c53794da1265b14b8a343a6d162ef1c8d4897b64f4da55c52d8b494d7a28afff3d71430ec49afb53dd7f2847e90e27f62153d20f5ad1516d9cf0b3e95f2d025ab2ff091b9d783b6fec1481bbd355e348f037f6843ba934162084fe4ecbb15ba2cdc3976c9c96ed46bc409be77dc4588280c4d4a8b01206bb3a4b6775cfb5d2a4ddbac65cf0f9db82d8fd691a460d276bec94213ff1de4e61c87218ab9591afa1ed124976f5f662993500f8b6222e96e970a4bf3a6bbb4adec7131372646527b254e2bf95d3f350f5656663a96f2bbfcaac3e7f263b8bd97a40d27ab38af064be561669d49e937094b7312d12a702e2dca281851722617cf69d36a1ece15b932c806336bf5cc65db5b047bbb5d28495a92b5f31ca8d43b71f1f7e05eb82f7c52bb70e19a2e3856761969bee57c3ee1c15c2572b652daff218a93ebe08a9979e9738dc7a142f814563941a7187d3a1c69db43db40a865b558d72cc5b8a657eeaac71d89f0dc9a36a5161a98d89e9022bcd6660092da82c543c50b926226ee7aa36552d7058b719b9c8414db207435a8778b563475107d9cf120fe191e2d289c53724bef1afeda720c33fb41677a058045d516485ae0a8a06c3147183d06aa2759dd206e3082864ff633faadd4b600db2c05424fd9c602155003612623fd98f65ba6b75007b81ec64b9ef3a33dfa9fb6f193b613f5ef05a6b77a633527922014a2e730660a7b035334746b7c92bf627928f819372c3e3a5fc418fc2fc5bbdfbe8044ea90cc705f01e9e31ad0e9a812ed548b1f3935454524d16dbfbcdcefc4d3c4cb2b5a7a05977324388624d402e2bc58e70f5b0dec39d458903038b1a59ac9d82d0c7742ec30a7dd2c9b9f5fee5595df85cb27f2e0dbe1a91e3bcc8510e73d51dec55881a5695e7d8b5459d8f6b78b4e67a15ab221344d79a5e051d66002831ba2b5a826180c404f40bfd4de083c49a45f581c1c1ff77a363c316c694a930e484a65ed693df3a8e0dabbad6d2a83153587f145c1e3751ba361aa7060d55022e48a2a07474f1570
2024-10-01 14:30:20 +00:00
assert_eq!(
pk.into_bytes(),
*hex::decode("3f537f509949e758624a70946a776986052a5761098a9b4ecbfaa10a92aee325").unwrap(),
"pk not correct"
);
2024-03-14 13:46:53 +00:00
}