#![cfg(feature = "benchmarking")] // Lint use criterion::{criterion_group, criterion_main, Criterion}; use pqc_kyber::*; // Benchmarking key generation fn keypair(c: &mut Criterion) { let mut _rng = rand::thread_rng(); //placeholder let mut pk = [0u8; KYBER_PUBLICKEYBYTES]; let mut sk = [0u8; KYBER_SECRETKEYBYTES]; let bufs = Some(([1u8; 32].as_slice(), [255u8; 32].as_slice())); c.bench_function("Keypair Generation", |b| { b.iter(|| { crypto_kem_keypair(&mut pk, &mut sk, &mut _rng, bufs).unwrap(); }) }); } // Encapsulating a single public key fn encap(c: &mut Criterion) { let mut ct = [0u8; KYBER_CIPHERTEXTBYTES]; let mut ss = [0u8; KYBER_SSBYTES]; let pk = crate::decode_hex(PK); let mut _rng = rand::thread_rng(); let encap_buf = Some([255u8; 32].as_slice()); c.bench_function("Encapsulate", |b| { b.iter(|| { crypto_kem_enc(&mut ct, &mut ss, &pk, &mut _rng, encap_buf).unwrap(); }) }); } // Decapsulating a single correct ciphertext fn decap(c: &mut Criterion) { let sk = decode_hex(SK); let ct = decode_hex(CT); c.bench_function("Decapsulate", |b| { b.iter(|| { let _dec = decapsulate(&ct, &sk); }) }); } // Decapsulating a single incorrect ciphertext fn decap_fail(c: &mut Criterion) { let sk = decode_hex(BAD_SK); let ct = decode_hex(CT); c.bench_function("Decapsulate Failure", |b| { b.iter(|| { let _dec = decapsulate(&ct, &sk); }) }); } criterion_group!(benches, keypair, encap, decap, decap_fail); criterion_main!(benches); // Decodes a hex string into a vector of bytes pub fn decode_hex(s: &str) -> Vec { (0..s.len()) .step_by(2) .map(|i| u8::from_str_radix(&s[i..i + 2], 16).expect("Hex string decoding")) .collect::>() } // tvecs512 #[cfg(all(feature = "kyber512", not(feature = "90s")))] const PK: &str = "5fc44b99d7584f38cd28360cc5625a905b96af12930ed5b5fe2a82fc5aa7dc4b829fe37635f13f5af2a6d3081dad878785698a0aa914374c4e43b89f094a7892aa149a38b49c06a068d829a8d249e753a375d097a0f162e6c3a4dfe8c79761410c605ed3899a3fc44378e14f28879e8f148077e6bc3bb2ae56178c491611bf6aaf5f9a9cb9b5659223007940bcd6f8a23280a56015330e8577259587b12606f4c937ea13606cb3bb046066ad294261e2b22022bcc74678a5520570d88e4ceb42692631e7e3711c4b2fd5347f0328598340cb3c65c8f55ac02716831094cb6eb90f175b173d9c650329aaf513633633bb2ce6858e7447abc41b6fb06da8782572c332b09660366926bf529ed8caaa6243ccdb152b36ba6e47c714145c86f5b3b61de84ef1470d03fa0135e35194fa1fb3bc860fa500d1299aee88ce56054376c1199c553dd90a8d6f9cc763c811d0c66da6f851abf1056635a34a68aa7815868f153a3a5c77fcc8b1eb1807fbf62a6fb43b355700e78230943a2ba1e11b181345b11b4d46266e7b359f074a500c8857d79ba60f64262d662ccd9c8489a4c19df67437db193f95b9765181d9152262b1166f97be53497f001cb1be79024d6a2289bcc704e1b1d821015366a3cc8a484e6bc2e1f1b889f19323e3101aa09ad9ea62ba4005039bbfb5998055f93fbf77b14433116d5958422654dada1127213f02b78717a5a0454271d5b0c02517a6c27a3c3610101d753c09a25571775477dc13b2e404db4965b9a9350330c73a8a3642d39af8a23839ab85c6355b12f279f849813c280d54c5913e99b6946a0aaf012c8cab025396b255f002d837c761d42a4aeb38c5f456aaf79e162700c6b4048eca6f9a7367f90238d67bcf8e6a0d8a553c071522f9d2394e28483d2048be2a8f9c8c8e39991a41273c7eacaefc6a308be870b45b41176412954a1a0fd83d362a5ab288663dec5456b6286d0b2cecb01922fb3d473802ea2b86639bce02450339261cffb114e1e725e90677826a1688f686b29a78779c9822315dafc55753e98c8ed3221f2b3220805c8a28983355207da36fb72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d"; #[cfg(all(feature = "kyber512", not(feature = "90s")))] const SK: &str = "d6eccd635a4f19d80256bc9ca3c23deb783e2e16937ea151e136648db4cfa173c618552b57221ce3e43244d078f5c77a47b1a27b23bc7afc2b0a7991cf5a0a8e712cbd9c2f41250a6beb7cac3bc0e42bb446f3511f8a369b6082ba4477305ccaad9864bc3a4a15a6495644368028a4597ba78cb27a86e64333890f2783a8202a3fa018b100d1cbc49622e16a818a681d242a964ff8859b637b59a047f40cccd5d66770c08fb2b2c2eb538c6cd230b792448ee4acbebbc7ff57a798b296b596c858e85760f96e8eb0cac1380cfa20024d4aaa56c48031e4767fc544d982a72d135f56c24d5e157fdae24010c3b8a6c26a2f8713e82711f138906b020d8ef4a2676b1621fb38c9565512259c6d9ca54f64cf5f4b0860eb016caca6007db79e5890d9da874bf30bc53bba3de17ecf48c52dd028e92bb4edd75ec1b952fed596e1bb1507b3644f956ed4e8c352b61edc740fcee65cd907552562a31bb6898f0c17bcf894537b94d6c18f270a9b8b760a5be29ba4e61f9a0873459351174330c7a863b6d788c4895bb62058b8d5982fe525f88744bfa87f3bf223a967674d9601f22c022a149bdfc45bee5589a802996876471c36ab6fa31eec30b4324aa5a03cb29f93738e7519b1eb39b69b7092a9590fca8789978a61511df5ab7f38804255625151034e75244c7cf46a41e2a7447015c4109683714271fcb97fe8a1c2594f886161f5c36d022bc43c692ade56893b3341e63a01da870452fb7129cca4296a6fab49bc9e551ad40ab3067c679362c3e3c53191fa77e753ca69c092dad30032d665a237ce55f1044050c1000b8291c14b3fca500835711bc53df275996420892fac8a208683432c0854320d707985b35ba6aea0290f33108a29450edcc69613a00d1aa49a3304c5691eb4d6c3c0f32d4ab47e21184169b5a6e9fa89424cbfc49812304479d4411574320b45a10f21a352f412c4ae4305a09a801d8a6e211623c3207a3d893e98cc18709689f040561845cca42c154a2b04c912c39dc4831e14421fa2a9dbc322cc742aa78c8f1b7c3dac75bc596c8697d96d1af67365b621c6e7625fc44b99d7584f38cd28360cc5625a905b96af12930ed5b5fe2a82fc5aa7dc4b829fe37635f13f5af2a6d3081dad878785698a0aa914374c4e43b89f094a7892aa149a38b49c06a068d829a8d249e753a375d097a0f162e6c3a4dfe8c79761410c605ed3899a3fc44378e14f28879e8f148077e6bc3bb2ae56178c491611bf6aaf5f9a9cb9b5659223007940bcd6f8a23280a56015330e8577259587b12606f4c937ea13606cb3bb046066ad294261e2b22022bcc74678a5520570d88e4ceb42692631e7e3711c4b2fd5347f0328598340cb3c65c8f55ac02716831094cb6eb90f175b173d9c650329aaf513633633bb2ce6858e7447abc41b6fb06da8782572c332b09660366926bf529ed8caaa6243ccdb152b36ba6e47c714145c86f5b3b61de84ef1470d03fa0135e35194fa1fb3bc860fa500d1299aee88ce56054376c1199c553dd90a8d6f9cc763c811d0c66da6f851abf1056635a34a68aa7815868f153a3a5c77fcc8b1eb1807fbf62a6fb43b355700e78230943a2ba1e11b181345b11b4d46266e7b359f074a500c8857d79ba60f64262d662ccd9c8489a4c19df67437db193f95b9765181d9152262b1166f97be53497f001cb1be79024d6a2289bcc704e1b1d821015366a3cc8a484e6bc2e1f1b889f19323e3101aa09ad9ea62ba4005039bbfb5998055f93fbf77b14433116d5958422654dada1127213f02b78717a5a0454271d5b0c02517a6c27a3c3610101d753c09a25571775477dc13b2e404db4965b9a9350330c73a8a3642d39af8a23839ab85c6355b12f279f849813c280d54c5913e99b6946a0aaf012c8cab025396b255f002d837c761d42a4aeb38c5f456aaf79e162700c6b4048eca6f9a7367f90238d67bcf8e6a0d8a553c071522f9d2394e28483d2048be2a8f9c8c8e39991a41273c7eacaefc6a308be870b45b41176412954a1a0fd83d362a5ab288663dec5456b6286d0b2cecb01922fb3d473802ea2b86639bce02450339261cffb114e1e725e90677826a1688f686b29a78779c9822315dafc55753e98c8ed3221f2b3220805c8a28983355207da36fb72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d23497b31279a8b715f912f30a181666270913bbd72598eb9cd65a6da680f5c6b3e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber512", not(feature = "90s")))] const BAD_SK: &str = "06eccd635a4f19d80256bc9ca3c23deb783e2e16937ea151e136648db4cfa173c618552b57221ce3e43244d078f5c77a47b1a27b23bc7afc2b0a7991cf5a0a8e712cbd9c2f41250a6beb7cac3bc0e42bb446f3511f8a369b6082ba4477305ccaad9864bc3a4a15a6495644368028a4597ba78cb27a86e64333890f2783a8202a3fa018b100d1cbc49622e16a818a681d242a964ff8859b637b59a047f40cccd5d66770c08fb2b2c2eb538c6cd230b792448ee4acbebbc7ff57a798b296b596c858e85760f96e8eb0cac1380cfa20024d4aaa56c48031e4767fc544d982a72d135f56c24d5e157fdae24010c3b8a6c26a2f8713e82711f138906b020d8ef4a2676b1621fb38c9565512259c6d9ca54f64cf5f4b0860eb016caca6007db79e5890d9da874bf30bc53bba3de17ecf48c52dd028e92bb4edd75ec1b952fed596e1bb1507b3644f956ed4e8c352b61edc740fcee65cd907552562a31bb6898f0c17bcf894537b94d6c18f270a9b8b760a5be29ba4e61f9a0873459351174330c7a863b6d788c4895bb62058b8d5982fe525f88744bfa87f3bf223a967674d9601f22c022a149bdfc45bee5589a802996876471c36ab6fa31eec30b4324aa5a03cb29f93738e7519b1eb39b69b7092a9590fca8789978a61511df5ab7f38804255625151034e75244c7cf46a41e2a7447015c4109683714271fcb97fe8a1c2594f886161f5c36d022bc43c692ade56893b3341e63a01da870452fb7129cca4296a6fab49bc9e551ad40ab3067c679362c3e3c53191fa77e753ca69c092dad30032d665a237ce55f1044050c1000b8291c14b3fca500835711bc53df275996420892fac8a208683432c0854320d707985b35ba6aea0290f33108a29450edcc69613a00d1aa49a3304c5691eb4d6c3c0f32d4ab47e21184169b5a6e9fa89424cbfc49812304479d4411574320b45a10f21a352f412c4ae4305a09a801d8a6e211623c3207a3d893e98cc18709689f040561845cca42c154a2b04c912c39dc4831e14421fa2a9dbc322cc742aa78c8f1b7c3dac75bc596c8697d96d1af67365b621c6e7625fc44b99d7584f38cd28360cc5625a905b96af12930ed5b5fe2a82fc5aa7dc4b829fe37635f13f5af2a6d3081dad878785698a0aa914374c4e43b89f094a7892aa149a38b49c06a068d829a8d249e753a375d097a0f162e6c3a4dfe8c79761410c605ed3899a3fc44378e14f28879e8f148077e6bc3bb2ae56178c491611bf6aaf5f9a9cb9b5659223007940bcd6f8a23280a56015330e8577259587b12606f4c937ea13606cb3bb046066ad294261e2b22022bcc74678a5520570d88e4ceb42692631e7e3711c4b2fd5347f0328598340cb3c65c8f55ac02716831094cb6eb90f175b173d9c650329aaf513633633bb2ce6858e7447abc41b6fb06da8782572c332b09660366926bf529ed8caaa6243ccdb152b36ba6e47c714145c86f5b3b61de84ef1470d03fa0135e35194fa1fb3bc860fa500d1299aee88ce56054376c1199c553dd90a8d6f9cc763c811d0c66da6f851abf1056635a34a68aa7815868f153a3a5c77fcc8b1eb1807fbf62a6fb43b355700e78230943a2ba1e11b181345b11b4d46266e7b359f074a500c8857d79ba60f64262d662ccd9c8489a4c19df67437db193f95b9765181d9152262b1166f97be53497f001cb1be79024d6a2289bcc704e1b1d821015366a3cc8a484e6bc2e1f1b889f19323e3101aa09ad9ea62ba4005039bbfb5998055f93fbf77b14433116d5958422654dada1127213f02b78717a5a0454271d5b0c02517a6c27a3c3610101d753c09a25571775477dc13b2e404db4965b9a9350330c73a8a3642d39af8a23839ab85c6355b12f279f849813c280d54c5913e99b6946a0aaf012c8cab025396b255f002d837c761d42a4aeb38c5f456aaf79e162700c6b4048eca6f9a7367f90238d67bcf8e6a0d8a553c071522f9d2394e28483d2048be2a8f9c8c8e39991a41273c7eacaefc6a308be870b45b41176412954a1a0fd83d362a5ab288663dec5456b6286d0b2cecb01922fb3d473802ea2b86639bce02450339261cffb114e1e725e90677826a1688f686b29a78779c9822315dafc55753e98c8ed3221f2b3220805c8a28983355207da36fb72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d23497b31279a8b715f912f30a181666270913bbd72598eb9cd65a6da680f5c6b3e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber512", not(feature = "90s")))] const CT: &str = "c832cea277dcfb4aa23151db2b58c6ec0eb3ceb01b3d0b6aa130a2f94b451557d24a0edcf6525d3f4c3a60214a4772105b21bed1d4105e4567290ad64c14b32e5f4677d17612559bdbe05bdb4e19a4e6f80ceeafa298c95c42a570bee36d94a4d120e83cc524da06b9c56e8760fc5cc2c3a33c768d742ecbcd4742e240c2bbf5f29ba7c941da5ecb04d133c08f662bb84810ec6a0a90e8075f934449f6a24e4d8c84effb9d93c232286e911367558bd2b3ff3a4580c5e3b59790a550a63e3f945a6745bd3ee26a265f0734cecf87dd4b4f3d6fb076b6b20de643b36e9c84ec9d5103afed796672b24bc6ec980c9d1f73db634454aa977668dfccc988c5ff9f1c62554fa7b438722a2edb180eacd37c85d907f3f3a1ef8b3d94dca9fdf7522b8700e64cbd0b199a9892b4144db3131931501b7a1850432fbd3a954554cafeb8f1de1a9167652dd068c26c61d1d9a51d4e1dc5d7e8bb1d368b798831cbc4b051edc55b2b6236ca6ad0d59ed2b5b9ebdd7c1e816f8c2111db198fbeaf25b134fe9e57dd87479e9136572b181b307b346fec30be8c8e032094ec03cbfd2ee5d0f7b7055ee7346f2a4394399497d1dc9399f0577e8230e7ac067b9cabad993b6e0f5ac512c870fe76286fc4bd173b0341f627f695c6464649dc01e9422abd8471e988e028a03f5217c16b4169598152f0dcf9d78bd390bc9d6ae62a885ee291f145e1c6d37d432a129039854238b62bed00ab3dad389af8c5385ab613fa18f9b7463324d82e12dcccf45327f6201282586214dc5a1c4c12572fea4e47abe9c1023a9a1ece3fc46019e5e95a428551b1ddc108bfe68a117229ebae81f3829e70ce953e81a58986db1452e819518b1095c886d86e12395679e33227d724102b38211e812f95897265d40b62caa435438882069e33c0bdf886d14b6f26b61317581513ea625cdfef4d21344f9c10192e6f8c03fa354a067c289572d5062d4c9ad3048f54138211afa19feaf39ea444f3774a74a6a868e126b7a5c7b4e1dbb9cf1c949e2a072cff6c943c1b723cd6273c4bc4468991e4a4ceca6e1c4bcd42fa6fc7c73002"; // tvecs512-90s #[cfg(all(feature = "kyber512", feature = "90s"))] const PK: &str = "fb5185f6364a270037bc75654e5589c46a2b6209b2307b0299dc63659bb5557456bd2ba10f450ac2ca025448b3732275d467bdbf403fd923a5bdb54ad480911be3a86141ba9d7246ff452b070019a05c9f6ea33029c70d1d95059205aabdd578a9cc0da8427ced89427585b1b08a3ced4467ee9016d808478a27007a4c8add270e88611b0e6679faa55982d96ae03b32942cb47ba673d8e01f717b5def7a4c4ab4513d2a7b67c38737a8bc1ff00afc855ad8845699098eee6096398a95c84b0f9b60c930459076909f7310573146774b261d9f278016218f4b8075b752b52f67186f7195f92855fc4047fe8000e7e5344b52047bd48185e0729795996639cff689b6f6daca155239ce39025a1147b5e66993b26ee121b991d08c80643d97b8122272cd9c40582ca767cdc3367e563b3fb08dfff697a5b34c74168cb56a17799a2fa5f29c5542520b1151e2e63d601aa81f642994dc3d7c27692c5028c7f275cb373ebfe800aca67714f71f3dda1b53929211154ab5ca9b7ebc64d3ab1e22900bed3261ce0b58106861eac27400749cefcbaaf4c82384f1ce6cec4d65785e4bc7058bfb182a2b1c74caba4194351aa35956924879dab38e5a4f554496db44a8fe999d2010bc8132193a014b5d4b422a162fac304e96206a175a9516c67b63885286e9078101871b7b5d41c920751c8ba8c3bf8b972a10c97e635ba8c7d45eea56bdf8e608a34badcc087dee072a6ae80c4c222fb6e78391c9335361049b719642a92177112df8e90671182295b53109c39ab2b5614e2a8e55178f46498ac7416af59b43e151b883126b8af729ac377eab3284ca07b55ec705ba2454abfca3b52c3da0e4b81941b4ff6a15b1090161165cb7b957674822945c18abd3ce248205c23a1811c293a0058da4d274d974be748aa515ac59bd4a5a0f64a89f51c59ccb92e515cbcfc0967e1154aa47a8b7576f2feb5c452898355c4e77b44845e14a8d6c7942ea90ed0263009db2e7e2444c1acb4f558de7090cd5083f1c309720a23fcd08caa4b6043daa6bcedc0848d0585a660d4ddc66d7ac0c45da9d9a5536a9a3c35f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d"; #[cfg(all(feature = "kyber512", feature = "90s"))] const SK: &str = "162610b1fc1b3ed6b0ac4a13a8930c617715f26b121807b395fb3a6b905de9b894b297782cfa34e59759970ba6d08a866c68a678c0a541e1c9a2469183c09c77a6231868a05653348f94623310c8311b1a3c745c68ba0f8df6cda8e41ce73178473b17b3d768c206bcd13aba148c46b069ae28d40fef3c8bade25023438b84e84820d25713db5cdcd89641c79799268bd28a7ec3e74186104151646b0b31068be035f552a5815585f4745ca5b87ead1cc408946962278ef9a75326ac189b91bb44016207e984d894c4e45b7914e384c280503a392c843b6de60c0da1527369f45948230cbf199c415c58c16a5a6c5b0ffef96aebd52f7d8903da42c1d2d6a675b56fe5e0b19a6493025a5f84b9b770198b752a277569b7dec2438cda9919c10ee60c5528ea6a9eb047a8947f5ddb4de1c12e05e0b7b994c03fc01c8fb58b89709a5ec32c4ed59d72896c11d7860a37b758104531ba9d96f68236484714891c1596b103ecbcb7693caf7454951b801c480a94212d53eba26787390ee791c6ab7d54ecbae7d364a3b1cfd032789f651ff88b1c45e6b290051ebd93042534183e416de9d400520a893b720c47f480feb950d881a1e9a52571178bafa93335574594021128f236930cb76665347010093f6a9a4623609a703f6e574f86d14aba87c38956beeb502c821206536bc04544cc46e453488aac0818270218ce0993b67a1272f5c93d4704abf1a52e6f86142bc784d2d26621f5a7bf063218ba9e4e289a426620ec042cadca2a44c12a8d05cec0366e8db6be2930198b142d0f10a2b9f10d8980a7ece0713434a5853069771140e0814fa549ab120a758f431547aa18f2008173d445d41b7e39f840472293ed87cf3245052ef15022065d3301498c51a314f08d1baa416e2cae7734596f343a4d46724dd5cddb2b0e5b76885d8a17359875e9f51892350a375607c3a55511f625eb0a363a642b59d639f8914ba1a40e05c1a5809732593a7b675a7089390db8b65f7b5167ba64ab7b0348a4005e0273723d2074b7976cd0f7b96bd173e6b04a01f6cbe5a4093d2c1ddd53b2b2439b9e38cbfb5185f6364a270037bc75654e5589c46a2b6209b2307b0299dc63659bb5557456bd2ba10f450ac2ca025448b3732275d467bdbf403fd923a5bdb54ad480911be3a86141ba9d7246ff452b070019a05c9f6ea33029c70d1d95059205aabdd578a9cc0da8427ced89427585b1b08a3ced4467ee9016d808478a27007a4c8add270e88611b0e6679faa55982d96ae03b32942cb47ba673d8e01f717b5def7a4c4ab4513d2a7b67c38737a8bc1ff00afc855ad8845699098eee6096398a95c84b0f9b60c930459076909f7310573146774b261d9f278016218f4b8075b752b52f67186f7195f92855fc4047fe8000e7e5344b52047bd48185e0729795996639cff689b6f6daca155239ce39025a1147b5e66993b26ee121b991d08c80643d97b8122272cd9c40582ca767cdc3367e563b3fb08dfff697a5b34c74168cb56a17799a2fa5f29c5542520b1151e2e63d601aa81f642994dc3d7c27692c5028c7f275cb373ebfe800aca67714f71f3dda1b53929211154ab5ca9b7ebc64d3ab1e22900bed3261ce0b58106861eac27400749cefcbaaf4c82384f1ce6cec4d65785e4bc7058bfb182a2b1c74caba4194351aa35956924879dab38e5a4f554496db44a8fe999d2010bc8132193a014b5d4b422a162fac304e96206a175a9516c67b63885286e9078101871b7b5d41c920751c8ba8c3bf8b972a10c97e635ba8c7d45eea56bdf8e608a34badcc087dee072a6ae80c4c222fb6e78391c9335361049b719642a92177112df8e90671182295b53109c39ab2b5614e2a8e55178f46498ac7416af59b43e151b883126b8af729ac377eab3284ca07b55ec705ba2454abfca3b52c3da0e4b81941b4ff6a15b1090161165cb7b957674822945c18abd3ce248205c23a1811c293a0058da4d274d974be748aa515ac59bd4a5a0f64a89f51c59ccb92e515cbcfc0967e1154aa47a8b7576f2feb5c452898355c4e77b44845e14a8d6c7942ea90ed0263009db2e7e2444c1acb4f558de7090cd5083f1c309720a23fcd08caa4b6043daa6bcedc0848d0585a660d4ddc66d7ac0c45da9d9a5536a9a3c35f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d5ad8243fee696235f5d1bb7a01393c76fe61bd9f95f0f51d7351e44e4049f72a3e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber512", feature = "90s"))] const BAD_SK: &str = "062610b1fc1b3ed6b0ac4a13a8930c617715f26b121807b395fb3a6b905de9b894b297782cfa34e59759970ba6d08a866c68a678c0a541e1c9a2469183c09c77a6231868a05653348f94623310c8311b1a3c745c68ba0f8df6cda8e41ce73178473b17b3d768c206bcd13aba148c46b069ae28d40fef3c8bade25023438b84e84820d25713db5cdcd89641c79799268bd28a7ec3e74186104151646b0b31068be035f552a5815585f4745ca5b87ead1cc408946962278ef9a75326ac189b91bb44016207e984d894c4e45b7914e384c280503a392c843b6de60c0da1527369f45948230cbf199c415c58c16a5a6c5b0ffef96aebd52f7d8903da42c1d2d6a675b56fe5e0b19a6493025a5f84b9b770198b752a277569b7dec2438cda9919c10ee60c5528ea6a9eb047a8947f5ddb4de1c12e05e0b7b994c03fc01c8fb58b89709a5ec32c4ed59d72896c11d7860a37b758104531ba9d96f68236484714891c1596b103ecbcb7693caf7454951b801c480a94212d53eba26787390ee791c6ab7d54ecbae7d364a3b1cfd032789f651ff88b1c45e6b290051ebd93042534183e416de9d400520a893b720c47f480feb950d881a1e9a52571178bafa93335574594021128f236930cb76665347010093f6a9a4623609a703f6e574f86d14aba87c38956beeb502c821206536bc04544cc46e453488aac0818270218ce0993b67a1272f5c93d4704abf1a52e6f86142bc784d2d26621f5a7bf063218ba9e4e289a426620ec042cadca2a44c12a8d05cec0366e8db6be2930198b142d0f10a2b9f10d8980a7ece0713434a5853069771140e0814fa549ab120a758f431547aa18f2008173d445d41b7e39f840472293ed87cf3245052ef15022065d3301498c51a314f08d1baa416e2cae7734596f343a4d46724dd5cddb2b0e5b76885d8a17359875e9f51892350a375607c3a55511f625eb0a363a642b59d639f8914ba1a40e05c1a5809732593a7b675a7089390db8b65f7b5167ba64ab7b0348a4005e0273723d2074b7976cd0f7b96bd173e6b04a01f6cbe5a4093d2c1ddd53b2b2439b9e38cbfb5185f6364a270037bc75654e5589c46a2b6209b2307b0299dc63659bb5557456bd2ba10f450ac2ca025448b3732275d467bdbf403fd923a5bdb54ad480911be3a86141ba9d7246ff452b070019a05c9f6ea33029c70d1d95059205aabdd578a9cc0da8427ced89427585b1b08a3ced4467ee9016d808478a27007a4c8add270e88611b0e6679faa55982d96ae03b32942cb47ba673d8e01f717b5def7a4c4ab4513d2a7b67c38737a8bc1ff00afc855ad8845699098eee6096398a95c84b0f9b60c930459076909f7310573146774b261d9f278016218f4b8075b752b52f67186f7195f92855fc4047fe8000e7e5344b52047bd48185e0729795996639cff689b6f6daca155239ce39025a1147b5e66993b26ee121b991d08c80643d97b8122272cd9c40582ca767cdc3367e563b3fb08dfff697a5b34c74168cb56a17799a2fa5f29c5542520b1151e2e63d601aa81f642994dc3d7c27692c5028c7f275cb373ebfe800aca67714f71f3dda1b53929211154ab5ca9b7ebc64d3ab1e22900bed3261ce0b58106861eac27400749cefcbaaf4c82384f1ce6cec4d65785e4bc7058bfb182a2b1c74caba4194351aa35956924879dab38e5a4f554496db44a8fe999d2010bc8132193a014b5d4b422a162fac304e96206a175a9516c67b63885286e9078101871b7b5d41c920751c8ba8c3bf8b972a10c97e635ba8c7d45eea56bdf8e608a34badcc087dee072a6ae80c4c222fb6e78391c9335361049b719642a92177112df8e90671182295b53109c39ab2b5614e2a8e55178f46498ac7416af59b43e151b883126b8af729ac377eab3284ca07b55ec705ba2454abfca3b52c3da0e4b81941b4ff6a15b1090161165cb7b957674822945c18abd3ce248205c23a1811c293a0058da4d274d974be748aa515ac59bd4a5a0f64a89f51c59ccb92e515cbcfc0967e1154aa47a8b7576f2feb5c452898355c4e77b44845e14a8d6c7942ea90ed0263009db2e7e2444c1acb4f558de7090cd5083f1c309720a23fcd08caa4b6043daa6bcedc0848d0585a660d4ddc66d7ac0c45da9d9a5536a9a3c35f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d5ad8243fee696235f5d1bb7a01393c76fe61bd9f95f0f51d7351e44e4049f72a3e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber512", feature = "90s"))] const CT: &str = "c832cea277dcfb4aa23151db2b58c6ec0eb3ceb01b3d0b6aa130a2f94b451557d24a0edcf6525d3f4c3a60214a4772105b21bed1d4105e4567290ad64c14b32e5f4677d17612559bdbe05bdb4e19a4e6f80ceeafa298c95c42a570bee36d94a4d120e83cc524da06b9c56e8760fc5cc2c3a33c768d742ecbcd4742e240c2bbf5f29ba7c941da5ecb04d133c08f662bb84810ec6a0a90e8075f934449f6a24e4d8c84effb9d93c232286e911367558bd2b3ff3a4580c5e3b59790a550a63e3f945a6745bd3ee26a265f0734cecf87dd4b4f3d6fb076b6b20de643b36e9c84ec9d5103afed796672b24bc6ec980c9d1f73db634454aa977668dfccc988c5ff9f1c62554fa7b438722a2edb180eacd37c85d907f3f3a1ef8b3d94dca9fdf7522b8700e64cbd0b199a9892b4144db3131931501b7a1850432fbd3a954554cafeb8f1de1a9167652dd068c26c61d1d9a51d4e1dc5d7e8bb1d368b798831cbc4b051edc55b2b6236ca6ad0d59ed2b5b9ebdd7c1e816f8c2111db198fbeaf25b134fe9e57dd87479e9136572b181b307b346fec30be8c8e032094ec03cbfd2ee5d0f7b7055ee7346f2a4394399497d1dc9399f0577e8230e7ac067b9cabad993b6e0f5ac512c870fe76286fc4bd173b0341f627f695c6464649dc01e9422abd8471e988e028a03f5217c16b4169598152f0dcf9d78bd390bc9d6ae62a885ee291f145e1c6d37d432a129039854238b62bed00ab3dad389af8c5385ab613fa18f9b7463324d82e12dcccf45327f6201282586214dc5a1c4c12572fea4e47abe9c1023a9a1ece3fc46019e5e95a428551b1ddc108bfe68a117229ebae81f3829e70ce953e81a58986db1452e819518b1095c886d86e12395679e33227d724102b38211e812f95897265d40b62caa435438882069e33c0bdf886d14b6f26b61317581513ea625cdfef4d21344f9c10192e6f8c03fa354a067c289572d5062d4c9ad3048f54138211afa19feaf39ea444f3774a74a6a868e126b7a5c7b4e1dbb9cf1c949e2a072cff6c943c1b723cd6ff6cc0c843ecca94d03507fae1e942d28de5b5225cc1532b7d227415019501c8d0167c518aa1e422107ca5f2cee81677d8e0b0f59bbce5cc79f89f1b0fc5989cb9a65305a5fb7076e2ba8edf7dbb716dc9ede615866963574b113317952847bea548384345351a532d9cba0b6297691acf8d9dbb94e5f9b01e1bd2750f66043ab73e5565287dd6c5f0d952e656b2ddd6a4d84393bfec3eeec543480e6ed38701a3740afb76eed164fae4192e0c4b9a7efa6b4b85161f6676c7ff5082e8d0bedc20a5d9664af6acb82a20fa2087db80ddfbaf3a18b94c1ba47dff8e279124059d2cd0ee9e0c6385a92660e39c7ed911844ec7b5016b32cfcfd77466ccca2e851096ed58fab40ad1b369b7b235adf4bb3d75ae2ef155cceaef698dfdaa70f8b9469d4b27e3ec5e406dde9f079da7d33895a61c653c83db951efa9fbe4dacca8558cb75b15663f302b0a7097953fee8e8acd4fbb3fc30d060e56cb92ce3efecefe65b664bd34ada20f51bf77d2f4574159b5ee36ff3c9af0ecca6b023dea7568f90c861d1bc7293630fd5147f5159de95c44a61343e187f0e5d55dfde218e26e210228f163babae613c1e978afeb55a36e3d267fbf3456f6ade6e7af292c3744a599b1d580168fb180f2b16fbfb0bb38817dd621e66eaaf4cd752f67a1923db3ec6fa6a0d757cc21ff0914059029807ca1eab8b1c711777354eee4235524c0cc8cb04dbd64a769aaf167ac44c974ca72487a6249b2b9395f862ed2f8d4dc51218ab7d02c12e66ac51e04a6480f20798d4f49d494543b2fceba9f1192fb8b19f0f1de5e25478c4b028ece3d662cd83238ff13dacc2d411de01476313b00c0e04e7ca669fc5ecdf9515d18377c2d98a49ef5b7c145273c0db9c635a9e2ac9579cf5991dcea7733ae34da43bf580989b55399af670911a171b7ce366a6d189f970ada8bba8a2bc5df2fd468559ea2e5779a2158e5a14a8e9fea4c90ad4b062c056597ce8def61b7c06da034195bf8af5940251ea8ff808ada18aafae81e6ff8f2dd84043a2a0fab7eee624ecee951a063a72dcea0d21e093eaf5088558b3d1f12a7a24273c4bc4468991e4a4ceca6e1c4bcd42fa6fc7c73002"; // tvecs768 #[cfg(all( not(any(feature = "kyber512", feature = "kyber1024")), not(feature = "90s") ))] const PK: &str = "38d4851e5c010da39a7470bc1c80916f78c7bd5891dcd3b1ea84b6f051b346b803c1b97c94604020b7279b27836c3049ea0b9a3758510b7559593237ade72587462206b709f365848c96559326a5fe6c6f4cf531fd1a18477267f66ba14af20163c41f1138a01995147f271ddfc2be5361b281e6029d210584b2859b7383667284f767bb32782baad10933da0138a3a0660a149531c03f9c8ffccb33e3c3a5a7984e21fab26aa72a8a6b942f265e52551a9c800e5a44805f0c0141a05554213387f105df56458496bd8f469051886da223cb9fe78e7b390bf94b0a937691af9550082b76d045cb4d29c23c67942608d078a1c80f24767a945d19f077d82c9b9b197073464abe69cf7c5626177308f384672d5263b0c4826db4470e1a70e4751e3918abe8fcbc3bc0531ae89e5512214b5cc94a16a014bcb3826c79fbf4add0825eeefbab88cb7cff37bb8d491f8de902578a1e961655565b7718782a23504fdc13c783f130e177925e305d1fbc63cc8c15c2c67f85500cca785de9f480490558ef71aaf0fb5b513914401269b309c4c59c64d2a757d8855f58465615925f1ea6812cb143fff383e1048e285118bf932944b86fbdf4b1b9e65685664a07775c46952aaada1168f54b47c7a231e7355c64637467b5a3c09cab67bb35f58640c2726283bb63530a15f66eca48a840c00ca8862e283c73bfbb413a2915b8d1159a043f12c59bfa828248249b76106faa61a127a0280c586350e7a42cb74ca49cabd606891ec7cb8e84affe4b2e14c71658332b755611bab7977fa76ce736b21ed34a17ac0ec3561ca9b282d4a2bc407697924b1cf918ba83d3a4fdc82564c95bd904bdeee91ed6ccb36baa88a05c80712901bf280aee6538ec2078c2a84ee5862fc137cd92e97968d69fc3453a1e1cb161c50c9f2473a0d09037b188a0fa01efc344c2ac8fe8592b0a58456662a95033659a158a2d90a6e50c253a87975785ce29c4570000a154d4b3b2c642205c8c7cf9ac6b1071fbb368ab950a744b88c95ba5243017831120a9048338d29847830d12a933a09abd21a46b828cb14e808cd35129c9dc6e5b931d4a126fefe07909618e2b4586e7b6b424963b7323ba505ba112bb9b834a7d1b78ad0df53d556a1c69369f09148b1dc9938df59223f087fd6833be5b2bc2651fe58911ac01467f9297dfdc22b41a0f1702718710b78cf35b1865813a896d45214d338155b6c043c532330c002d520739467a504a866637fb3451c849f8f83e6a94147f168da53acdf9d8affd968a84124a9abc09af960cd3b29f2344831bb41e67605eebf00df202857117399dd748b6514aed61bb2f6cb841d168d5f35e20054573a331cd4882a04b072c179158825bcf471266da0dcceab1a021c73254751d5a161c1a92062c220a217a69d9823314b4de996fe8d45f6db5af16c1561495a4c43090bc394c94e1b0ec738eb56267201c2ecd1c7b4993c0efc0284bdc9a091c294f95703a7178822c8a95b79b1e4591e0998d893875c1a879c08a073cc67df426bba792c18ae6c1feba879bec54812c2affa012973b700ad48e271078280864268600a7aa309eaa1098750a0f8a522eb929577b412f7855613688b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d"; #[cfg(all( not(any(feature = "kyber512", feature = "kyber1024")), not(feature = "90s") ))] const SK: &str = "462396f6b21ff625b96b4b1f5c3a38b3c80708f33bcc1784bedb48bee0253b426cfb95618712ce9825a53b5cc87c8143afc46b40627b4c4bbd2e382cec457e48a7130c8412c2605c475915bf08476de4b8aa70298ab99def9386c1f11253c398c6d0adf9d97e2264a026e40211b59a26a23f16102a220a6f2bf27a14015f6f3261e274758cccb757a406005317a050c22d399f994974aa7313edfbba4608371613985481b0aec89edd6002754b18e275b97af8b4adc682b573b9a568732423b20df418da0a0f6908663be9833eda1269127702e97db82bb11de22cc0765e26cab60d256cbb27221315c2c1d75f56e6aa4c08cc8345a16b6800e330756cec0267c02d1de1ca3ca8738156c88ed6ae90f8429b5aad8c5a53fe2687d2074fdb18b1241a489e8550abaa7b559acc6ab4b5396c821b854305caa66a478039cc2cf7365f56a344d1f09aa73a667a15ce71b210d9b930403a38a2a10cdef39b9e8960ad463313b7ab3d723a715c1d729b79b46b7bcedb31b92b77864ac9146c15a89bafe1601fcc8328e657a6ebbabef8115986dc87f17234baa3885e33a185688b915883ec4809c5c9691b95a08179a48577c1724aa1bcf664d5ea49c69a727cda3e31e71e67257e65e847df5947abe2967573ac2d6159f96699ae16a55f654e8fe00bea6791135aa045d851d0d73cd159be5c00041b1033af18500cc62b8dc636bed70e4dd4981e378820eb73a7d3bc69a42dcb9103ec8bb8020763ba76b48211806529553da6487539894722443672bc7ec31646158ca66343e2e69bd638cc4a3c711e3775ce88b4968a2cdbb772a0d9af6aa39168550074a6582da19366f61be174034472182d900c0598369a6c656d30c99557aaf6e43023f417bc4a2d8e2944c4e6010152bf28eb2119a90467aa185706396f933722f19373d3431b017b794a19b98b3990188bcc7142cd23a75a28a95d2c25aaf7c2dfd8ba06e47066940c1fa55655dab9beb686428c72e90070f81a6bfb6345766151ffc059ea64255fb24aa3e47cfc01300f43911ae393e6d7a89e1c228f3b55d70b9d9d4b5cc00671ad0b6948674a296952ff5765a3752c93c87ee615c683e3a1f7914d2c72534e6bb231bb1016ea60e7a5b897e32e4d62a383945fd99136bfe7cf144849ecaa4a0547c040999a55f2497527c572ebcb2fec46eb294107f4bf64796be4bc99bc6b86b29860515745f5b404ec79093bb36fc7bbad79b6c0c8a3ba4edb56a4c88ff9478b74e7c90b2c25690882ac84518d5111ffa36ff1e49b5bbc5af4e57bc202af125c66082a304dda86edb606b64373abb6683b56949661ab60c011e14c2b23c8923587a974cc79574c8295621091801d3723975785583169c358d182596c344b22964a40958b2272bafb0ffd2bcce4b14f0210cbc814476f4047f480568396742b012332a1a1191056dfb9b43a757ba6ac37bc6662e433caf1598395e64fa9a72f3b71006aeb8eb37376fdd6174ae0605a6b532ab614f02641ae563bf2301900f401edd3b431d390a9ea4a2b369bcff4b838e84a887991a167c868cc9ba16b3c3189b3e1908f7364604f382a2a0a85c8e341981b9fec4733302a1edb44719e3b537b770b38d4851e5c010da39a7470bc1c80916f78c7bd5891dcd3b1ea84b6f051b346b803c1b97c94604020b7279b27836c3049ea0b9a3758510b7559593237ade72587462206b709f365848c96559326a5fe6c6f4cf531fd1a18477267f66ba14af20163c41f1138a01995147f271ddfc2be5361b281e6029d210584b2859b7383667284f767bb32782baad10933da0138a3a0660a149531c03f9c8ffccb33e3c3a5a7984e21fab26aa72a8a6b942f265e52551a9c800e5a44805f0c0141a05554213387f105df56458496bd8f469051886da223cb9fe78e7b390bf94b0a937691af9550082b76d045cb4d29c23c67942608d078a1c80f24767a945d19f077d82c9b9b197073464abe69cf7c5626177308f384672d5263b0c4826db4470e1a70e4751e3918abe8fcbc3bc0531ae89e5512214b5cc94a16a014bcb3826c79fbf4add0825eeefbab88cb7cff37bb8d491f8de902578a1e961655565b7718782a23504fdc13c783f130e177925e305d1fbc63cc8c15c2c67f85500cca785de9f480490558ef71aaf0fb5b513914401269b309c4c59c64d2a757d8855f58465615925f1ea6812cb143fff383e1048e285118bf932944b86fbdf4b1b9e65685664a07775c46952aaada1168f54b47c7a231e7355c64637467b5a3c09cab67bb35f58640c2726283bb63530a15f66eca48a840c00ca8862e283c73bfbb413a2915b8d1159a043f12c59bfa828248249b76106faa61a127a0280c586350e7a42cb74ca49cabd606891ec7cb8e84affe4b2e14c71658332b755611bab7977fa76ce736b21ed34a17ac0ec3561ca9b282d4a2bc407697924b1cf918ba83d3a4fdc82564c95bd904bdeee91ed6ccb36baa88a05c80712901bf280aee6538ec2078c2a84ee5862fc137cd92e97968d69fc3453a1e1cb161c50c9f2473a0d09037b188a0fa01efc344c2ac8fe8592b0a58456662a95033659a158a2d90a6e50c253a87975785ce29c4570000a154d4b3b2c642205c8c7cf9ac6b1071fbb368ab950a744b88c95ba5243017831120a9048338d29847830d12a933a09abd21a46b828cb14e808cd35129c9dc6e5b931d4a126fefe07909618e2b4586e7b6b424963b7323ba505ba112bb9b834a7d1b78ad0df53d556a1c69369f09148b1dc9938df59223f087fd6833be5b2bc2651fe58911ac01467f9297dfdc22b41a0f1702718710b78cf35b1865813a896d45214d338155b6c043c532330c002d520739467a504a866637fb3451c849f8f83e6a94147f168da53acdf9d8affd968a84124a9abc09af960cd3b29f2344831bb41e67605eebf00df202857117399dd748b6514aed61bb2f6cb841d168d5f35e20054573a331cd4882a04b072c179158825bcf471266da0dcceab1a021c73254751d5a161c1a92062c220a217a69d9823314b4de996fe8d45f6db5af16c1561495a4c43090bc394c94e1b0ec738eb56267201c2ecd1c7b4993c0efc0284bdc9a091c294f95703a7178822c8a95b79b1e4591e0998d893875c1a879c08a073cc67df426bba792c18ae6c1feba879bec54812c2affa012973b700ad48e271078280864268600a7aa309eaa1098750a0f8a522eb929577b412f7855613688b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d75300cab0666ec1294f14aeb07434c9884ba44003ecdb4839183821a2485a7c63e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all( not(any(feature = "kyber512", feature = "kyber1024")), not(feature = "90s") ))] const BAD_SK: &str = "062396f6b21ff625b96b4b1f5c3a38b3c80708f33bcc1784bedb48bee0253b426cfb95618712ce9825a53b5cc87c8143afc46b40627b4c4bbd2e382cec457e48a7130c8412c2605c475915bf08476de4b8aa70298ab99def9386c1f11253c398c6d0adf9d97e2264a026e40211b59a26a23f16102a220a6f2bf27a14015f6f3261e274758cccb757a406005317a050c22d399f994974aa7313edfbba4608371613985481b0aec89edd6002754b18e275b97af8b4adc682b573b9a568732423b20df418da0a0f6908663be9833eda1269127702e97db82bb11de22cc0765e26cab60d256cbb27221315c2c1d75f56e6aa4c08cc8345a16b6800e330756cec0267c02d1de1ca3ca8738156c88ed6ae90f8429b5aad8c5a53fe2687d2074fdb18b1241a489e8550abaa7b559acc6ab4b5396c821b854305caa66a478039cc2cf7365f56a344d1f09aa73a667a15ce71b210d9b930403a38a2a10cdef39b9e8960ad463313b7ab3d723a715c1d729b79b46b7bcedb31b92b77864ac9146c15a89bafe1601fcc8328e657a6ebbabef8115986dc87f17234baa3885e33a185688b915883ec4809c5c9691b95a08179a48577c1724aa1bcf664d5ea49c69a727cda3e31e71e67257e65e847df5947abe2967573ac2d6159f96699ae16a55f654e8fe00bea6791135aa045d851d0d73cd159be5c00041b1033af18500cc62b8dc636bed70e4dd4981e378820eb73a7d3bc69a42dcb9103ec8bb8020763ba76b48211806529553da6487539894722443672bc7ec31646158ca66343e2e69bd638cc4a3c711e3775ce88b4968a2cdbb772a0d9af6aa39168550074a6582da19366f61be174034472182d900c0598369a6c656d30c99557aaf6e43023f417bc4a2d8e2944c4e6010152bf28eb2119a90467aa185706396f933722f19373d3431b017b794a19b98b3990188bcc7142cd23a75a28a95d2c25aaf7c2dfd8ba06e47066940c1fa55655dab9beb686428c72e90070f81a6bfb6345766151ffc059ea64255fb24aa3e47cfc01300f43911ae393e6d7a89e1c228f3b55d70b9d9d4b5cc00671ad0b6948674a296952ff5765a3752c93c87ee615c683e3a1f7914d2c72534e6bb231bb1016ea60e7a5b897e32e4d62a383945fd99136bfe7cf144849ecaa4a0547c040999a55f2497527c572ebcb2fec46eb294107f4bf64796be4bc99bc6b86b29860515745f5b404ec79093bb36fc7bbad79b6c0c8a3ba4edb56a4c88ff9478b74e7c90b2c25690882ac84518d5111ffa36ff1e49b5bbc5af4e57bc202af125c66082a304dda86edb606b64373abb6683b56949661ab60c011e14c2b23c8923587a974cc79574c8295621091801d3723975785583169c358d182596c344b22964a40958b2272bafb0ffd2bcce4b14f0210cbc814476f4047f480568396742b012332a1a1191056dfb9b43a757ba6ac37bc6662e433caf1598395e64fa9a72f3b71006aeb8eb37376fdd6174ae0605a6b532ab614f02641ae563bf2301900f401edd3b431d390a9ea4a2b369bcff4b838e84a887991a167c868cc9ba16b3c3189b3e1908f7364604f382a2a0a85c8e341981b9fec4733302a1edb44719e3b537b770b38d4851e5c010da39a7470bc1c80916f78c7bd5891dcd3b1ea84b6f051b346b803c1b97c94604020b7279b27836c3049ea0b9a3758510b7559593237ade72587462206b709f365848c96559326a5fe6c6f4cf531fd1a18477267f66ba14af20163c41f1138a01995147f271ddfc2be5361b281e6029d210584b2859b7383667284f767bb32782baad10933da0138a3a0660a149531c03f9c8ffccb33e3c3a5a7984e21fab26aa72a8a6b942f265e52551a9c800e5a44805f0c0141a05554213387f105df56458496bd8f469051886da223cb9fe78e7b390bf94b0a937691af9550082b76d045cb4d29c23c67942608d078a1c80f24767a945d19f077d82c9b9b197073464abe69cf7c5626177308f384672d5263b0c4826db4470e1a70e4751e3918abe8fcbc3bc0531ae89e5512214b5cc94a16a014bcb3826c79fbf4add0825eeefbab88cb7cff37bb8d491f8de902578a1e961655565b7718782a23504fdc13c783f130e177925e305d1fbc63cc8c15c2c67f85500cca785de9f480490558ef71aaf0fb5b513914401269b309c4c59c64d2a757d8855f58465615925f1ea6812cb143fff383e1048e285118bf932944b86fbdf4b1b9e65685664a07775c46952aaada1168f54b47c7a231e7355c64637467b5a3c09cab67bb35f58640c2726283bb63530a15f66eca48a840c00ca8862e283c73bfbb413a2915b8d1159a043f12c59bfa828248249b76106faa61a127a0280c586350e7a42cb74ca49cabd606891ec7cb8e84affe4b2e14c71658332b755611bab7977fa76ce736b21ed34a17ac0ec3561ca9b282d4a2bc407697924b1cf918ba83d3a4fdc82564c95bd904bdeee91ed6ccb36baa88a05c80712901bf280aee6538ec2078c2a84ee5862fc137cd92e97968d69fc3453a1e1cb161c50c9f2473a0d09037b188a0fa01efc344c2ac8fe8592b0a58456662a95033659a158a2d90a6e50c253a87975785ce29c4570000a154d4b3b2c642205c8c7cf9ac6b1071fbb368ab950a744b88c95ba5243017831120a9048338d29847830d12a933a09abd21a46b828cb14e808cd35129c9dc6e5b931d4a126fefe07909618e2b4586e7b6b424963b7323ba505ba112bb9b834a7d1b78ad0df53d556a1c69369f09148b1dc9938df59223f087fd6833be5b2bc2651fe58911ac01467f9297dfdc22b41a0f1702718710b78cf35b1865813a896d45214d338155b6c043c532330c002d520739467a504a866637fb3451c849f8f83e6a94147f168da53acdf9d8affd968a84124a9abc09af960cd3b29f2344831bb41e67605eebf00df202857117399dd748b6514aed61bb2f6cb841d168d5f35e20054573a331cd4882a04b072c179158825bcf471266da0dcceab1a021c73254751d5a161c1a92062c220a217a69d9823314b4de996fe8d45f6db5af16c1561495a4c43090bc394c94e1b0ec738eb56267201c2ecd1c7b4993c0efc0284bdc9a091c294f95703a7178822c8a95b79b1e4591e0998d893875c1a879c08a073cc67df426bba792c18ae6c1feba879bec54812c2affa012973b700ad48e271078280864268600a7aa309eaa1098750a0f8a522eb929577b412f7855613688b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d75300cab0666ec1294f14aeb07434c9884ba44003ecdb4839183821a2485a7c63e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all( not(any(feature = "kyber512", feature = "kyber1024")), not(feature = "90s") ))] const CT: &str = "ac5913d6b37c9b3168ad3db9c839053b5bf491a4a17d17d685384baceede11efc0de58c0a6c5e4a58bd930ea71082a4db72f15a931bfd77bbf4c9b3debd580d79010c2f09f2e73b92051408f076b1d34c521f5f25fbe8ec7519d07fa83df3e5e90a5c8d6c190d594b3ad7184c2b8ada4c8328be534603fbe99fd0b7b6e4b24d08d91bb0aae6317ece1b1706c565641f53dd29d6111a53995fe67d5064c7b18d92cd3aa25223ab1b3c9e8a8248661162cf56bc2c5e1a40f126d8518fe5fe5e2941576e070bbdb3d2ff3df094c2fccc3181fd2ef85887ba98a7a419fbb704ed64b1236a874e4e34561ff490436a8222a6508d3349cb124a95f79f8f4dc5fa64703ba8d3876184a42431fd94ee114c6f4108b0c4ccd735d40936be66198a60f46817276b56d6607473a58d91148c87fe4da071397a1621548d213d05033250a99924023069b5785aba24e444d82befa2cdbdcd1cbaef8cb64d416d795de48d1c3507ac5dcf5ee984a7ee46991dd145dbe503b7c7d6fb6ccebd02bb1c00c5a5158d98dd81ad492ac0b9ad65e5ff3b74209ccf0437169b06ffd80c99af7820c4e34796c627110a32535b11773a9f40f88df20b35be11da2c8c2e79b36db8cf39754846f97e369b93b68af2ff9ed1eae15a09bdcb1c633dc5c05a1b3e8f9f29c437e431e6b9c4f6c0d4b284d585ee7e5787a0cc966ec86758f6ed33f2632615b2ba57745e0d1f8404a2bd3e240591ffc775dfc5c9f60b207713b7c09c89e57023d48abd551083a1c9421b712292452e6837d3a3e232e3277cde8f41f8915dfc96c48603e5862bb2549e0228a2256e58397dd2195a95213d3050f4f43dc72a8c0a10b75c5a0185771e7ba9fc342ddbfc17d0a3b5552c8eaf8a386780ddc48a79b3da8d71f487d813799c49cf01367abc343ff3f1cccbcd8d14ffd096a3c9b53dacda41c1b4824fd7634d02affafc8f5c9919c6f8297fe343a8ee09eb16785b41d3e19f677e9b459ec1d90dbde9f195b324ce872d5fa263a6b5dcd7dba43ca7ccafdb8a0c1e2cc79d54eb87049b69920aeffe2eb8135512dbcfc6dc686e96c7c9f105177aaec6515d348eb32ec579f32731e12cb56931bcff2dd888876629b98b75b12e855cdee47860b5bc8f1fb0c00c9cb6fd091fb7cddbfeaddd7940304a8ab1baa3b8fc1ac66eea138ac8884dbba112885de5e39fb19eea8fe5444d34248cdf6b02cbbe458a6d1c6d09b2f3a51052f57d2822890d28dd4391f4c0b3f1ea189a0912464cbd41fd566c48a9a6454c2dca57f28c21e70fe56de08317e674c8ff1d9f3e225ccc5bd1fc9faa58c9bab9d54900e6d71cbd14265645a779a4856c9c26903357f95ec632c4de088b247cd821af63abd9a247591e0d0d710234db269a665c376f974edbd5e6cac5ba7d1f19e2e4d6caa3fbd4dd3c37702c8d00300051c16bf0ba0fa9dd0a730922eee0ff7e3ae817f5cba734f2a28105790db3d1ab02e9acc763e5fd2bc0447ac32e11fa02612e6f987e5f777ca2e7ac36551cf62649c29483c"; // tvecs768-90s #[cfg(all(not(any(feature = "kyber512", feature = "kyber1024")), feature = "90s"))] const PK: &str = "33cb9679095aeb053e69351ed1c3363a344c090801d0500951d743ac51518dd51a14168be2661edce32585c875f05c0c01181a7bf9804b66034e93122cf52ba2ea8e7e6a8860b2be5c602725891f55ec47092a96c5267d86b38c0d92a27b959e1b96a921733c3ca28f09d2c7b7b18b8423491bb1201463b2c12b52f9f3ab8fa8242e7400f8e00b56f70805295e10a964a85377952785e35aa055f2080e59bfa3cc0b12e127feda068cc3867ce31f714cbd5e9b292ee81c295718b16346d43b409112474af110f0641d3c2967616a9fc64364b141c55fe8357f85114ed1876e644c7775af9a952bf5a5bf3da717c9a3187fa41f551919c5e240ad7c04f1b4ce33804a45a6b45489c59e6225ea6a8099a22d221b1f8b2100d269b68884564fa31fe9ac7c0ed00fb0d909f40345a83554c97cc6e4625f696b44b7303639379c494a964d5b2b01b5157cd70168ba5bfd9c9ad620848d608298fa4a7be6b5dc703dc3222ec8bc21cd0737b89005c4e0b32522a9de0cc7dc804facca327647b8a3c309c55366f6b4758d017370c77ab2950ae215975a74af7567b008f1862b381d875520f2ec9b7f280c727ab451fc4b428602df48949e4a8b74baa263d74edef8c055233aef4a7f3e95afac9575c2ac86f0365fea0824d53a8b40b1bd18e600c4c442ed601cb0334f28da06a2f4738a40a95b21b38c4c5ff7d27c29f1cbc506ad7ef392c29002667513ef002cfad9518f4acd6fc0a90202a8d534052e097a5ee6450c242beb8c122c2044a4025792974112c41b2efc062591180f69961f98648f2362ff1789f56605060c47f091aa6687c0ef6bb744755adadb67bc1b896a8bcff25a594b865c6c2abe68c5058b7c4c10cbcaa4f438d9350b7ef9520367b42c5581472823f6ca188eb24a60bb169998a00fcbc6e34368d4420eb7897d1d98a27520bdc6f48dc019bfd1ba3d9ea461737046dae8b2e1151ce734b4e952a119d6a601893c5c951b20eb56b12ac03395a497fb689b189b4f7ac84457463eca471d41883b49b02ed99f3358a2201461464b0c0e511f47656c0cb90c018a27457a1bdf2a1897e17fe77a70d58b4297ab9b68dbc796477477085c6f1272e62911a3bccfb469495ceb4843363652603b6059372fac140723a5dd4c6d2edac516563d4b846e9a8ab30f60c46153173c3b8d8746801d12a1a1919c0bd59f907c93c66c8760f3296fa6bc358c557f1ccc6efa66ef3bb2c14c4aafd56ddc4413859963bcabc0dc170117a11623635669e975d73c3ce9559642495bb9386ac049cfc40a39b1b56522b4540acbbad9b046cc990d192c2e2cf49422b60b763282cfa32dacf82cb4169c74e42368b962a30912cbc76c23bb49cfdb4f477b4ee4e651c0c80f38b5b06deb18833292c201a69c22a4ec43a8fec5ca04869f6dba8263e6acca761dcf2cc1bb65cefc902a4a123285f53f8c4283f1342c119b6ce0616776b6cb5607446f4948e0e5023d593c0ed585ea1a44a85c691ab49750222ac7775bf559bfebda3f8b3baedc4b1c6498a1328a73e7aa9370653cbc502e620aaf112718fdc002b9dc60cf3c250da55f8237b034acb7408347db34a436d492cd8629014230502294e6611e5f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d"; #[cfg(all(not(any(feature = "kyber512", feature = "kyber1024")), feature = "90s"))] const SK: &str = "910c5a48053837472f7dcacc4e74709f3a29e7177e83198ee8228390d43d164a2d3526a72aec993fc5642023b0cb08a5c4b05d3e7baa3b27943b1b1ca6589aa565344c5c63a6b6c3dd5b53ffac269478958776127c1520f9dab47cc24a9c5b1e0125a7db596213c0526877b829b6484cc21f4d0397a3d39fc328af7dd1ce39d1291ba628d9189b69291659229021173f0b8b0bb09c56f52c566979a6603c19ac4453b6862aae8ba96983ac0d8a674af237397b369d1050f9a441d6c3c336fc5b22e62421723bdfc04eb074075f2b3b61c0268614744675ab30f2cede9c4989d922d8c3c740189aa7b65dca9a1892d998fa66a6cf37186a983151f065ba42cdd0dcbc08ecc6ac544aa8178e383940dc328d199a3e749c00d796841f64a5872ab74cec8b0ecbbc2db58e462ccd87e385be11a0948c19de9581d7d682c5b73ee3a868fdb0a61c82cce47a7615319397b13e64438b67b5747e6bad05f81f5b08ae9071a7d9106cfff80c39879e75879f06231ecf0495a896ab11727e97b1c638bc28893a948567bd0e98749604b0ec8587d0e49a38663fc1d33dd632162ed17a3f320a12e1c56c040418b25c5f478b62539a8bd765edb203da9c0a871b59a5e60c51f9295f263373999c96ac4f32684a52649fd109bbc256acec86c4c1c24dcce386414c692e4aa4e4496b87080fb9438e82468f95862441970ba79120c6f446ba6228c5719d19cc2d7fc8ac7de73a0d2ac7151480ae183d78fb7f1d3053b5a82f75131d702a1ae4c8c3028c5d1a2968e58726410b5b7be6888633cd3952024ef953809b69095a0aacba00e837a77e262b1ca9cca263328a74a789f01d8d25aeaa50c24e654d8fd42126ec0a6ec8462c8865ea01960e5b822ba9452f5542047804c190cbe8787256c80248a52e326c1a6c4465d4437323b25d86d46d366a200298a30d71ac1ba2c2ee6a31a3509eb46200f2aa4fa55b386a7087468b41df5236e8034bf059b5a5cb7d439a6ef5bb1704550c559c9b6428c87df1195c595ebd93ada3096796c15300fd86f18b55ee844b175b70dc0bb4e11376e7a81df433add04553d687ced41805f69a3a3f760aa476bfc0a04392387a3598824af2c2373762d1274e300c452118880542a50e1671ff778bb36390459b6477312b012c93ea43c45bdc3931d8ceb6949970e899ca09206f0841ee7961106b94f8831cfbfc3d856a9bc0b403c9f362d6556ffd97746eb896a0e44d1fabaebda13c39d1c00274cc77981ef26016ec89aa002c7d57f20b32ac5a9456bb2ea6a0fb1a517f9043fd31582e07a70b34380a324e2b52b366a2aa2f36c01d40560e9215f2a06ca6a2c147830e7fb8a1b959783f57c6a54963c42881dab7a96770a44df945fac73731a29e770129652211fe23cdf1fb7d565c23183258f0d43c3503093fc1b918b84353825eede34a77c7aeb9e78e0bf218498610f51067449137d925a9c3e4b5a7a031804a9e4b847f8478561e8c8756024032a661db899742203fbf233594823db7187d71659c34b61fc9a3881a4129c552b70ebc41a463a5446ccce536960cd86ed57b892f2b64580b636e69060b33681bb09dfbe31f9ad761d6074e8f628406a8994f829333cb9679095aeb053e69351ed1c3363a344c090801d0500951d743ac51518dd51a14168be2661edce32585c875f05c0c01181a7bf9804b66034e93122cf52ba2ea8e7e6a8860b2be5c602725891f55ec47092a96c5267d86b38c0d92a27b959e1b96a921733c3ca28f09d2c7b7b18b8423491bb1201463b2c12b52f9f3ab8fa8242e7400f8e00b56f70805295e10a964a85377952785e35aa055f2080e59bfa3cc0b12e127feda068cc3867ce31f714cbd5e9b292ee81c295718b16346d43b409112474af110f0641d3c2967616a9fc64364b141c55fe8357f85114ed1876e644c7775af9a952bf5a5bf3da717c9a3187fa41f551919c5e240ad7c04f1b4ce33804a45a6b45489c59e6225ea6a8099a22d221b1f8b2100d269b68884564fa31fe9ac7c0ed00fb0d909f40345a83554c97cc6e4625f696b44b7303639379c494a964d5b2b01b5157cd70168ba5bfd9c9ad620848d608298fa4a7be6b5dc703dc3222ec8bc21cd0737b89005c4e0b32522a9de0cc7dc804facca327647b8a3c309c55366f6b4758d017370c77ab2950ae215975a74af7567b008f1862b381d875520f2ec9b7f280c727ab451fc4b428602df48949e4a8b74baa263d74edef8c055233aef4a7f3e95afac9575c2ac86f0365fea0824d53a8b40b1bd18e600c4c442ed601cb0334f28da06a2f4738a40a95b21b38c4c5ff7d27c29f1cbc506ad7ef392c29002667513ef002cfad9518f4acd6fc0a90202a8d534052e097a5ee6450c242beb8c122c2044a4025792974112c41b2efc062591180f69961f98648f2362ff1789f56605060c47f091aa6687c0ef6bb744755adadb67bc1b896a8bcff25a594b865c6c2abe68c5058b7c4c10cbcaa4f438d9350b7ef9520367b42c5581472823f6ca188eb24a60bb169998a00fcbc6e34368d4420eb7897d1d98a27520bdc6f48dc019bfd1ba3d9ea461737046dae8b2e1151ce734b4e952a119d6a601893c5c951b20eb56b12ac03395a497fb689b189b4f7ac84457463eca471d41883b49b02ed99f3358a2201461464b0c0e511f47656c0cb90c018a27457a1bdf2a1897e17fe77a70d58b4297ab9b68dbc796477477085c6f1272e62911a3bccfb469495ceb4843363652603b6059372fac140723a5dd4c6d2edac516563d4b846e9a8ab30f60c46153173c3b8d8746801d12a1a1919c0bd59f907c93c66c8760f3296fa6bc358c557f1ccc6efa66ef3bb2c14c4aafd56ddc4413859963bcabc0dc170117a11623635669e975d73c3ce9559642495bb9386ac049cfc40a39b1b56522b4540acbbad9b046cc990d192c2e2cf49422b60b763282cfa32dacf82cb4169c74e42368b962a30912cbc76c23bb49cfdb4f477b4ee4e651c0c80f38b5b06deb18833292c201a69c22a4ec43a8fec5ca04869f6dba8263e6acca761dcf2cc1bb65cefc902a4a123285f53f8c4283f1342c119b6ce0616776b6cb5607446f4948e0e5023d593c0ed585ea1a44a85c691ab49750222ac7775bf559bfebda3f8b3baedc4b1c6498a1328a73e7aa9370653cbc502e620aaf112718fdc002b9dc60cf3c250da55f8237b034acb7408347db34a436d492cd8629014230502294e6611e5f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d4fb89130551689123ba3c6ed310295dea662cdbee35fd1162c8d26f3a18458d73e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(not(any(feature = "kyber512", feature = "kyber1024")), feature = "90s"))] const BAD_SK: &str = "010c5a48053837472f7dcacc4e74709f3a29e7177e83198ee8228390d43d164a2d3526a72aec993fc5642023b0cb08a5c4b05d3e7baa3b27943b1b1ca6589aa565344c5c63a6b6c3dd5b53ffac269478958776127c1520f9dab47cc24a9c5b1e0125a7db596213c0526877b829b6484cc21f4d0397a3d39fc328af7dd1ce39d1291ba628d9189b69291659229021173f0b8b0bb09c56f52c566979a6603c19ac4453b6862aae8ba96983ac0d8a674af237397b369d1050f9a441d6c3c336fc5b22e62421723bdfc04eb074075f2b3b61c0268614744675ab30f2cede9c4989d922d8c3c740189aa7b65dca9a1892d998fa66a6cf37186a983151f065ba42cdd0dcbc08ecc6ac544aa8178e383940dc328d199a3e749c00d796841f64a5872ab74cec8b0ecbbc2db58e462ccd87e385be11a0948c19de9581d7d682c5b73ee3a868fdb0a61c82cce47a7615319397b13e64438b67b5747e6bad05f81f5b08ae9071a7d9106cfff80c39879e75879f06231ecf0495a896ab11727e97b1c638bc28893a948567bd0e98749604b0ec8587d0e49a38663fc1d33dd632162ed17a3f320a12e1c56c040418b25c5f478b62539a8bd765edb203da9c0a871b59a5e60c51f9295f263373999c96ac4f32684a52649fd109bbc256acec86c4c1c24dcce386414c692e4aa4e4496b87080fb9438e82468f95862441970ba79120c6f446ba6228c5719d19cc2d7fc8ac7de73a0d2ac7151480ae183d78fb7f1d3053b5a82f75131d702a1ae4c8c3028c5d1a2968e58726410b5b7be6888633cd3952024ef953809b69095a0aacba00e837a77e262b1ca9cca263328a74a789f01d8d25aeaa50c24e654d8fd42126ec0a6ec8462c8865ea01960e5b822ba9452f5542047804c190cbe8787256c80248a52e326c1a6c4465d4437323b25d86d46d366a200298a30d71ac1ba2c2ee6a31a3509eb46200f2aa4fa55b386a7087468b41df5236e8034bf059b5a5cb7d439a6ef5bb1704550c559c9b6428c87df1195c595ebd93ada3096796c15300fd86f18b55ee844b175b70dc0bb4e11376e7a81df433add04553d687ced41805f69a3a3f760aa476bfc0a04392387a3598824af2c2373762d1274e300c452118880542a50e1671ff778bb36390459b6477312b012c93ea43c45bdc3931d8ceb6949970e899ca09206f0841ee7961106b94f8831cfbfc3d856a9bc0b403c9f362d6556ffd97746eb896a0e44d1fabaebda13c39d1c00274cc77981ef26016ec89aa002c7d57f20b32ac5a9456bb2ea6a0fb1a517f9043fd31582e07a70b34380a324e2b52b366a2aa2f36c01d40560e9215f2a06ca6a2c147830e7fb8a1b959783f57c6a54963c42881dab7a96770a44df945fac73731a29e770129652211fe23cdf1fb7d565c23183258f0d43c3503093fc1b918b84353825eede34a77c7aeb9e78e0bf218498610f51067449137d925a9c3e4b5a7a031804a9e4b847f8478561e8c8756024032a661db899742203fbf233594823db7187d71659c34b61fc9a3881a4129c552b70ebc41a463a5446ccce536960cd86ed57b892f2b64580b636e69060b33681bb09dfbe31f9ad761d6074e8f628406a8994f829333cb9679095aeb053e69351ed1c3363a344c090801d0500951d743ac51518dd51a14168be2661edce32585c875f05c0c01181a7bf9804b66034e93122cf52ba2ea8e7e6a8860b2be5c602725891f55ec47092a96c5267d86b38c0d92a27b959e1b96a921733c3ca28f09d2c7b7b18b8423491bb1201463b2c12b52f9f3ab8fa8242e7400f8e00b56f70805295e10a964a85377952785e35aa055f2080e59bfa3cc0b12e127feda068cc3867ce31f714cbd5e9b292ee81c295718b16346d43b409112474af110f0641d3c2967616a9fc64364b141c55fe8357f85114ed1876e644c7775af9a952bf5a5bf3da717c9a3187fa41f551919c5e240ad7c04f1b4ce33804a45a6b45489c59e6225ea6a8099a22d221b1f8b2100d269b68884564fa31fe9ac7c0ed00fb0d909f40345a83554c97cc6e4625f696b44b7303639379c494a964d5b2b01b5157cd70168ba5bfd9c9ad620848d608298fa4a7be6b5dc703dc3222ec8bc21cd0737b89005c4e0b32522a9de0cc7dc804facca327647b8a3c309c55366f6b4758d017370c77ab2950ae215975a74af7567b008f1862b381d875520f2ec9b7f280c727ab451fc4b428602df48949e4a8b74baa263d74edef8c055233aef4a7f3e95afac9575c2ac86f0365fea0824d53a8b40b1bd18e600c4c442ed601cb0334f28da06a2f4738a40a95b21b38c4c5ff7d27c29f1cbc506ad7ef392c29002667513ef002cfad9518f4acd6fc0a90202a8d534052e097a5ee6450c242beb8c122c2044a4025792974112c41b2efc062591180f69961f98648f2362ff1789f56605060c47f091aa6687c0ef6bb744755adadb67bc1b896a8bcff25a594b865c6c2abe68c5058b7c4c10cbcaa4f438d9350b7ef9520367b42c5581472823f6ca188eb24a60bb169998a00fcbc6e34368d4420eb7897d1d98a27520bdc6f48dc019bfd1ba3d9ea461737046dae8b2e1151ce734b4e952a119d6a601893c5c951b20eb56b12ac03395a497fb689b189b4f7ac84457463eca471d41883b49b02ed99f3358a2201461464b0c0e511f47656c0cb90c018a27457a1bdf2a1897e17fe77a70d58b4297ab9b68dbc796477477085c6f1272e62911a3bccfb469495ceb4843363652603b6059372fac140723a5dd4c6d2edac516563d4b846e9a8ab30f60c46153173c3b8d8746801d12a1a1919c0bd59f907c93c66c8760f3296fa6bc358c557f1ccc6efa66ef3bb2c14c4aafd56ddc4413859963bcabc0dc170117a11623635669e975d73c3ce9559642495bb9386ac049cfc40a39b1b56522b4540acbbad9b046cc990d192c2e2cf49422b60b763282cfa32dacf82cb4169c74e42368b962a30912cbc76c23bb49cfdb4f477b4ee4e651c0c80f38b5b06deb18833292c201a69c22a4ec43a8fec5ca04869f6dba8263e6acca761dcf2cc1bb65cefc902a4a123285f53f8c4283f1342c119b6ce0616776b6cb5607446f4948e0e5023d593c0ed585ea1a44a85c691ab49750222ac7775bf559bfebda3f8b3baedc4b1c6498a1328a73e7aa9370653cbc502e620aaf112718fdc002b9dc60cf3c250da55f8237b034acb7408347db34a436d492cd8629014230502294e6611e5f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d4fb89130551689123ba3c6ed310295dea662cdbee35fd1162c8d26f3a18458d73e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(not(any(feature = "kyber512", feature = "kyber1024")), feature = "90s"))] const CT: &str = "769bba9ca387e4547a85272b32a51ebdb331176a71637fbb7071bf91462aa4eb160131625ab37b0f7aad7a2ee470ec33ba6907c311d722ecdb98bdfa2db93dc9bb3ea2e542c1fedbd8973bc424bdb617534a83aa7931cf3b9d8a5c29609851cf9f9b2f4e810bc382cf5a3b88e8c6e4efae09e9dd22a7dc665d9cac37c0d9b9f977a3c273704dccdebf294c4b4836cffc32ddd6a09978602a1fe45269d3850a01c79a02c719823233fada96d0a286e1170717ab8b8c868edd9f1a7f1eb7883585d9d3b0d7183a5d8d8d9bde501075d13212299d74af356133fcdb6823c68525b368302a06ec647c25b2192647fd32c7da807a30862bd6fea6bc9c2b7f159f35539e655a36611831845f6d29bcc2dbcd889fdddbaaee11a4ed1eda9749f9a08efd2b707a05e2166cdd037e7fcb28451216bfcf71022f504b3e4705b0447d61c4207a12b6913003b39bcbfa6796ad128f6dbcc6a6346addd2c136a7f90d55787af060229c94f6cac497efeac2a625feb1804d46b12b4869bf6af30f75401cb721077cacec47c119995df8258f676ebd8f2199a4354466b52332b90e7fffd181d82b059a2468d06384470967475ba340401364a6831f7b52d010ad5ede2345f8a9bbb9327350b9563ad4eec2565198dbd23d32ca9374df78af100c2f1c27ccbd35083bf2515a956108f20291dc9c2954b8865994e40addb6ae358992503755306fd86793e822565b02bc73ef7b47b4a0e99d6bc65e0d0ac1cf1a6adbc24e5b9516733da4a99a1913edf15f7188be52856424eda5c994e333a738a8af3bfa680fb67df329fdfe7cce6786a7217dd1aa74dcbac13e4357e79db1ae5b7f57c7e8bd42829949c455f248193eefeb183ea7fa2e36884610b3e8c611a5079307148c7a4b3273c69c9d9b7fc1201d649888803463470c596a8e75cd8f96fa3d2b1eb45e257fbc04596453615d54be9f411ade2dd129386e4bf54e111b79ef0ebcb7dcb202f02bcb2e5734bd8393e9b1f36067e50b18bead1333728f4f171c6590e365c391acbde3dd75432f8ec846e86d4249c9982fbcaf8717be029a8f2387b6b1f835ee3a48b4161c1cd73cadd42bced3d5a2b0c68b9963e0af500f156e22bb09a097d9f502ccf8cd8ece80e28e423ceb4d1993cb4257b65a73040671a125294d2c77687e7b096e54044382c6eb916609be778f96054680c1da5f4c81c54755d26cdf0adbcc68d22e796cb8c41f19568e9e36c9d9fcdc14c52a11d21f15f628650512022e543160ebcce5ddf282f3307799addef28cce458a53debc70e2376972b328205b94e3abd786a08aec8239b60fab8ae06e58e6863585f4591659d2317b1fb7b5d2a9e1e28f5d87a3e927260fc620fca5fa29e5327f3ed18d96e74fefe0c9f70fbc26bf5a425eedc0bed0e7859fe63f7c6ed79ceab1fef92b7897fce490367df2e27bcf8794c937f2c3913657be8cd8229ea42ce4cdb1ab6f33f2f915043042e88fcda4a01f83d95e3ce5632be90e4fdb619ce323f4904d370a8983d1592dd065b0"; // tvecs1024 #[cfg(all(feature = "kyber1024", not(feature = "90s")))] const PK: &str = "9779a4d1fc45ec261f048b9c9daa38c9ec228b6505e8905226b38486802059c2c5c89601560634cb1337b1315365144842bc405a292e683cafa4514526945c4dfb68ee2acdb8b79532836696d53125a045bdbb8a3bcc8123083d1e682c5bd7820c76c448351151474f69d601d7708dbb2c979d77527494b68520a8ff66c34162ca2aec8072a2a51ff259389648e75b95c16abe14604edbfabaf400b76a7a0f07db61dce19102f43b2d1060747b02c4425485341fd5d9bffaa7016061374963b985209c6b9a7db3f94958311d027900a3d8c44f8435b093a236a0509f1928df7719ce8c4e90228f4db87cb9e882f2712180238845d31eb906c60eb63e0ff55e84b867a91b79ae74a03ac00473c8c1b3e6aedcc37f1e69b8e136019bdb01c374a122e164c32584b2fbcf5e013a45127c893326b6860378cb5525a48b522b30132b7688214b69808dd19aa4ff033e16252016fc9479222424393e51db7115e38114e6893cdcc8ae1117a4316548010ab4629fb672148d031a6c601a6a4a661d872d8ef693750a115958716ab9263eb0516357102358cde5256464805ca8f59661751ad6a475a7ec78cb7319c3bbc544e1bb1185aaaeb751ba0b3923246e33f40a4ff4780b745362a218d169474d7208a9f7577228308af20f8d2403a27477cf53cff133a247d5c2b298bf21bac6dc44649e63afcef54ad3a07a74e447b36bacca295e053368ef7c146e1c28edb31b3777c941a7c27dc559437b0ff83c2910f827ef244d7726af2b9708654bcfb139a26844c6f4b79cd9e4747065a77596b927f96cbdbc7267ac9e32ac396f6c4ce739aa0aa60fccac178edab1e04688fe71a74201a99bc64b55f8cb89e11545e5275af48626ec667520ba8a7c88c2307e793455ef8780fae16412ea59e92406f595902dc21c612b142801cf31abc0475c7bde772d51c55a2dfc651bc5ab4143022813cc4c8cc6f52c8d27e3cd7851849a8c4343f0c7ed6c6cb9f765c5047e55bc48aad5b932128287f70939db753a61c0d7db1830c256288c1c85cc9bbce58366dac528c893d61b69850bcb82758e836936e1f8163861586482cad35b4db1437fad6980b66280b1652d72f52407a8015f85c29e75b2158933a4f5887db320b583cdcbca274eac21f8702879b8bc4afb62ba056d146512921554c765464d4c96bd3c9a9720187c3339d0593bc4bba59155469ff6b8688a5fc5fa6b46d4070668bd168c5f796492760940999927628236b2412968438d2cbc2a978abc097320291b0ed7e4631ec9bbe28ac63ab6860e976ac1552afc43897d6937a092432dc481a914c3a1273c43009e8ec523cb93ced9898f90905340ba6e01bc572d03a893fa21c4342d88dc3e77b33b1fc063dcdb689d8c4ffc840ce879cfb3471385512cc7c7591383b1fac89832bb1cb3324e6d2868918844cb20ca4df812b42824192a43380430a37a7f3ac41ed064cfe055157b91b5c0108fb7a613a0112af4d64e48f8a345328a99b7bf0c91cb037215b0177ad4c263e6d78f5958c848158e4fd2117c248e0cab3cf98c1e27868838f8428ba0562df6b61e8736e2b8b266607918e0ce2ce3af67c81fa5c2a4d2bc8e871825b702b3beca397b33a518dac8b1393d494a90900c01b55925857cbf8027051d36a4f141a4d2dc440341305e033cb50a074be459c76a339a9a52c447360dea2a5699ccea683a42430aa6fc9545c75c0492641af7a4e9267bcc384e55714cf49741eba3b69d6417a555475d3c021112b8b3588c63747b5ce2ccfee91297fa419f9c4298978fff0870d8a855b48899ca9bb47d836d62d2038cc3816f3a698bb3bbff78c7a015b0ea1960634292e1d50b03e1043a98ca9b27063e668b05e2c17d692d382b181365a818518ec747720337ca1868596af42a90fab1870373d74b8f6d42ac86b18bca3ab04764680cf2060c529abe5b8ef4474dc8cc47a8033ebd884d3e0a0f1a94420d8a3c9162b7af87a2c8a394647434f4a3bc2b477813ac82cf387185b587f7f68938eccddd6934d143ba17bb4a712566d2a55aaddb3323713667401b4a20b86c23bf1076439cb6b8c115389dba4e6f0c915be7602b9703b535070e4a5c5649a5d7080515026706b2604575cbd0687f2729a92a997d21ea7200c41ed8315275f4c7b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d"; #[cfg(all(feature = "kyber1024", not(feature = "90s")))] const SK: &str = "462396f6b21ff625b96b4b1f5c3a38b3c80708f33bcc1784bedb48bee0253b426cfb95618712ce9825a53b5cc87c8143afc46b40627b4c4bbd2e382cec457e48a7130c8412c2605c475915bf08476de4b8aa70298ab99def9386c1f11253c398c6d0adf9d97e2264a026e40211b59a26a23f16102a220a6f2bf27a14015f6f3261e274758cccb757a406005317a050c22d399f994974aa7313edfbba4608371613985481b0aec89edd6002754b18e275b97af8b4adc682b573b9a568732423b20df418da0a0f6908663be9833eda1269127702e97db82bb11de22cc0765e26cab60d256cbb27221315c2c1d75f56e6aa4c08cc8345a16b6800e330756cec0267c02d1de1ca3ca8738156c88ed6ae90f8429b5aad8c5a53fe2687d2074fdb18b1241a489e8550abaa7b559acc6ab4b5396c821b854305caa66a478039cc2cf7365f56a344d1f09aa73a667a15ce71b210d9b930403a38a2a10cdef39b9e8960ad463313b7ab3d723a715c1d729b79b46b7bcedb31b92b77864ac9146c15a89bafe1601fcc8328e657a6ebbabef8115986dc87f17234baa3885e33a185688b915883ec4809c5c9691b95a08179a48577c1724aa1bcf664d5ea49c69a727cda3e31e71e67257e65e847df5947abe2967573ac2d6159f96699ae16a55f654e8fe00bea6791135aa045d851d0d73cd159be5c00041b1033af18500cc62b8dc636bed70e4dd4981e378820eb73a7d3bc69a42dcb9103ec8bb8020763ba76b48211806529553da6487539894722443672bc7ec31646158ca66343e2e69bd638cc4a3c711e3775ce88b4968a2cdbb772a0d9af6aa39168550074a6582da19366f61be174034472182d900c0598369a6c656d30c99557aaf6e43023f417bc4a2d8e2944c4e6010152bf28eb2119a90467aa185706396f933722f19373d3431b017b794a19b98b3990188bcc7142cd23a75a28a95d2c25aaf7c2dfd8ba06e47066940c1fa55655dab9beb686428c72e90070f81a6bfb6345766151ffc059ea64255fb24aa3e47cfc01300f43911ae393e6d7a89e1c228f3b55d70b9d9d4b5cc00671ad0b6948674a296952ff5765a3752c93c87ee615c683e3a1f7914d2c72534e6bb231bb1016ea60e7a5b897e32e4d62a383945fd99136bfe7cf144849ecaa4a0547c040999a55f2497527c572ebcb2fec46eb294107f4bf64796be4bc99bc6b86b29860515745f5b404ec79093bb36fc7bbad79b6c0c8a3ba4edb56a4c88ff9478b74e7c90b2c25690882ac84518d5111ffa36ff1e49b5bbc5af4e57bc202af125c66082a304dda86edb606b64373abb6683b56949661ab60c011e14c2b23c8923587a974cc79574c8295621091801d3723975785583169c358d182596c344b22964a40958b2272bafb0ffd2bcce4b14f0210cbc814476f4047f480568396742b012332a1a1191056dfb9b43a757ba6ac37bc6662e433caf1598395e64fa9a72f3b71006aeb8eb37376fdd6174ae0605a6b532ab614f02641ae563bf2301900f401edd3b431d390a9ea4a2b369bcff4b838e84a887991a167c868cc9ba16b3c3189b3e1908f7364604f382a2a0a85c8e341981b9fec4733302a1edb44719e3b537b770b23857a68f33f91bc80311c932a005900fb6ce1d3a73a3395e0e03d54dc25a637b6f77409b5c1784c820a15aa65b351c61b04a063cccb74594d6d079b82c2bc405401ec72bf5e399d200932868c22b4c91b9b877f1d7681612a068e8b79d0d22c4226a4ede16b5a506987b4781a2444fc75c2845aac1757638145322356038943a200ab82e417a354eaa7def950452b67cee833fd6716fba691c026c5df654c21f417a0a24bbe4a4a94c3c646d5c0d1a8a3d85b2749222afe070b0f015c94891bd919b658f1217555ccd7729d920b593ff631cac07e2de953cdd6bea061165893a2fdb879190a08343c96a6ccca76264938d22b2716480261cf809b81a8039768b3ccb1f910fa5c5e03b25ceb7b418f5ba39b8c713e6392045b58e1c92d73a44ee180282eb2b474d3464cf4aa4823afcb285e4a018ba8a7c476970da0e29de5f699f068465d6a36d012351f46995a7c303a3aae26a7afbd9962ed60a9dde95b4bf8ac7a47493cf61ee3f29ba046ce15a1763f0c21faba246700ad5409b0addccc9779a4d1fc45ec261f048b9c9daa38c9ec228b6505e8905226b38486802059c2c5c89601560634cb1337b1315365144842bc405a292e683cafa4514526945c4dfb68ee2acdb8b79532836696d53125a045bdbb8a3bcc8123083d1e682c5bd7820c76c448351151474f69d601d7708dbb2c979d77527494b68520a8ff66c34162ca2aec8072a2a51ff259389648e75b95c16abe14604edbfabaf400b76a7a0f07db61dce19102f43b2d1060747b02c4425485341fd5d9bffaa7016061374963b985209c6b9a7db3f94958311d027900a3d8c44f8435b093a236a0509f1928df7719ce8c4e90228f4db87cb9e882f2712180238845d31eb906c60eb63e0ff55e84b867a91b79ae74a03ac00473c8c1b3e6aedcc37f1e69b8e136019bdb01c374a122e164c32584b2fbcf5e013a45127c893326b6860378cb5525a48b522b30132b7688214b69808dd19aa4ff033e16252016fc9479222424393e51db7115e38114e6893cdcc8ae1117a4316548010ab4629fb672148d031a6c601a6a4a661d872d8ef693750a115958716ab9263eb0516357102358cde5256464805ca8f59661751ad6a475a7ec78cb7319c3bbc544e1bb1185aaaeb751ba0b3923246e33f40a4ff4780b745362a218d169474d7208a9f7577228308af20f8d2403a27477cf53cff133a247d5c2b298bf21bac6dc44649e63afcef54ad3a07a74e447b36bacca295e053368ef7c146e1c28edb31b3777c941a7c27dc559437b0ff83c2910f827ef244d7726af2b9708654bcfb139a26844c6f4b79cd9e4747065a77596b927f96cbdbc7267ac9e32ac396f6c4ce739aa0aa60fccac178edab1e04688fe71a74201a99bc64b55f8cb89e11545e5275af48626ec667520ba8a7c88c2307e793455ef8780fae16412ea59e92406f595902dc21c612b142801cf31abc0475c7bde772d51c55a2dfc651bc5ab4143022813cc4c8cc6f52c8d27e3cd7851849a8c4343f0c7ed6c6cb9f765c5047e55bc48aad5b932128287f70939db753a61c0d7db1830c256288c1c85cc9bbce58366dac528c893d61b69850bcb82758e836936e1f8163861586482cad35b4db1437fad6980b66280b1652d72f52407a8015f85c29e75b2158933a4f5887db320b583cdcbca274eac21f8702879b8bc4afb62ba056d146512921554c765464d4c96bd3c9a9720187c3339d0593bc4bba59155469ff6b8688a5fc5fa6b46d4070668bd168c5f796492760940999927628236b2412968438d2cbc2a978abc097320291b0ed7e4631ec9bbe28ac63ab6860e976ac1552afc43897d6937a092432dc481a914c3a1273c43009e8ec523cb93ced9898f90905340ba6e01bc572d03a893fa21c4342d88dc3e77b33b1fc063dcdb689d8c4ffc840ce879cfb3471385512cc7c7591383b1fac89832bb1cb3324e6d2868918844cb20ca4df812b42824192a43380430a37a7f3ac41ed064cfe055157b91b5c0108fb7a613a0112af4d64e48f8a345328a99b7bf0c91cb037215b0177ad4c263e6d78f5958c848158e4fd2117c248e0cab3cf98c1e27868838f8428ba0562df6b61e8736e2b8b266607918e0ce2ce3af67c81fa5c2a4d2bc8e871825b702b3beca397b33a518dac8b1393d494a90900c01b55925857cbf8027051d36a4f141a4d2dc440341305e033cb50a074be459c76a339a9a52c447360dea2a5699ccea683a42430aa6fc9545c75c0492641af7a4e9267bcc384e55714cf49741eba3b69d6417a555475d3c021112b8b3588c63747b5ce2ccfee91297fa419f9c4298978fff0870d8a855b48899ca9bb47d836d62d2038cc3816f3a698bb3bbff78c7a015b0ea1960634292e1d50b03e1043a98ca9b27063e668b05e2c17d692d382b181365a818518ec747720337ca1868596af42a90fab1870373d74b8f6d42ac86b18bca3ab04764680cf2060c529abe5b8ef4474dc8cc47a8033ebd884d3e0a0f1a94420d8a3c9162b7af87a2c8a394647434f4a3bc2b477813ac82cf387185b587f7f68938eccddd6934d143ba17bb4a712566d2a55aaddb3323713667401b4a20b86c23bf1076439cb6b8c115389dba4e6f0c915be7602b9703b535070e4a5c5649a5d7080515026706b2604575cbd0687f2729a92a997d21ea7200c41ed8315275f4c7b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d9a2f5395087f11d58dbc1d25588ae110209daaab75dd954576ab40aa709979d43e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber1024", not(feature = "90s")))] const BAD_SK: &str = "062396f6b21ff625b96b4b1f5c3a38b3c80708f33bcc1784bedb48bee0253b426cfb95618712ce9825a53b5cc87c8143afc46b40627b4c4bbd2e382cec457e48a7130c8412c2605c475915bf08476de4b8aa70298ab99def9386c1f11253c398c6d0adf9d97e2264a026e40211b59a26a23f16102a220a6f2bf27a14015f6f3261e274758cccb757a406005317a050c22d399f994974aa7313edfbba4608371613985481b0aec89edd6002754b18e275b97af8b4adc682b573b9a568732423b20df418da0a0f6908663be9833eda1269127702e97db82bb11de22cc0765e26cab60d256cbb27221315c2c1d75f56e6aa4c08cc8345a16b6800e330756cec0267c02d1de1ca3ca8738156c88ed6ae90f8429b5aad8c5a53fe2687d2074fdb18b1241a489e8550abaa7b559acc6ab4b5396c821b854305caa66a478039cc2cf7365f56a344d1f09aa73a667a15ce71b210d9b930403a38a2a10cdef39b9e8960ad463313b7ab3d723a715c1d729b79b46b7bcedb31b92b77864ac9146c15a89bafe1601fcc8328e657a6ebbabef8115986dc87f17234baa3885e33a185688b915883ec4809c5c9691b95a08179a48577c1724aa1bcf664d5ea49c69a727cda3e31e71e67257e65e847df5947abe2967573ac2d6159f96699ae16a55f654e8fe00bea6791135aa045d851d0d73cd159be5c00041b1033af18500cc62b8dc636bed70e4dd4981e378820eb73a7d3bc69a42dcb9103ec8bb8020763ba76b48211806529553da6487539894722443672bc7ec31646158ca66343e2e69bd638cc4a3c711e3775ce88b4968a2cdbb772a0d9af6aa39168550074a6582da19366f61be174034472182d900c0598369a6c656d30c99557aaf6e43023f417bc4a2d8e2944c4e6010152bf28eb2119a90467aa185706396f933722f19373d3431b017b794a19b98b3990188bcc7142cd23a75a28a95d2c25aaf7c2dfd8ba06e47066940c1fa55655dab9beb686428c72e90070f81a6bfb6345766151ffc059ea64255fb24aa3e47cfc01300f43911ae393e6d7a89e1c228f3b55d70b9d9d4b5cc00671ad0b6948674a296952ff5765a3752c93c87ee615c683e3a1f7914d2c72534e6bb231bb1016ea60e7a5b897e32e4d62a383945fd99136bfe7cf144849ecaa4a0547c040999a55f2497527c572ebcb2fec46eb294107f4bf64796be4bc99bc6b86b29860515745f5b404ec79093bb36fc7bbad79b6c0c8a3ba4edb56a4c88ff9478b74e7c90b2c25690882ac84518d5111ffa36ff1e49b5bbc5af4e57bc202af125c66082a304dda86edb606b64373abb6683b56949661ab60c011e14c2b23c8923587a974cc79574c8295621091801d3723975785583169c358d182596c344b22964a40958b2272bafb0ffd2bcce4b14f0210cbc814476f4047f480568396742b012332a1a1191056dfb9b43a757ba6ac37bc6662e433caf1598395e64fa9a72f3b71006aeb8eb37376fdd6174ae0605a6b532ab614f02641ae563bf2301900f401edd3b431d390a9ea4a2b369bcff4b838e84a887991a167c868cc9ba16b3c3189b3e1908f7364604f382a2a0a85c8e341981b9fec4733302a1edb44719e3b537b770b23857a68f33f91bc80311c932a005900fb6ce1d3a73a3395e0e03d54dc25a637b6f77409b5c1784c820a15aa65b351c61b04a063cccb74594d6d079b82c2bc405401ec72bf5e399d200932868c22b4c91b9b877f1d7681612a068e8b79d0d22c4226a4ede16b5a506987b4781a2444fc75c2845aac1757638145322356038943a200ab82e417a354eaa7def950452b67cee833fd6716fba691c026c5df654c21f417a0a24bbe4a4a94c3c646d5c0d1a8a3d85b2749222afe070b0f015c94891bd919b658f1217555ccd7729d920b593ff631cac07e2de953cdd6bea061165893a2fdb879190a08343c96a6ccca76264938d22b2716480261cf809b81a8039768b3ccb1f910fa5c5e03b25ceb7b418f5ba39b8c713e6392045b58e1c92d73a44ee180282eb2b474d3464cf4aa4823afcb285e4a018ba8a7c476970da0e29de5f699f068465d6a36d012351f46995a7c303a3aae26a7afbd9962ed60a9dde95b4bf8ac7a47493cf61ee3f29ba046ce15a1763f0c21faba246700ad5409b0addccc9779a4d1fc45ec261f048b9c9daa38c9ec228b6505e8905226b38486802059c2c5c89601560634cb1337b1315365144842bc405a292e683cafa4514526945c4dfb68ee2acdb8b79532836696d53125a045bdbb8a3bcc8123083d1e682c5bd7820c76c448351151474f69d601d7708dbb2c979d77527494b68520a8ff66c34162ca2aec8072a2a51ff259389648e75b95c16abe14604edbfabaf400b76a7a0f07db61dce19102f43b2d1060747b02c4425485341fd5d9bffaa7016061374963b985209c6b9a7db3f94958311d027900a3d8c44f8435b093a236a0509f1928df7719ce8c4e90228f4db87cb9e882f2712180238845d31eb906c60eb63e0ff55e84b867a91b79ae74a03ac00473c8c1b3e6aedcc37f1e69b8e136019bdb01c374a122e164c32584b2fbcf5e013a45127c893326b6860378cb5525a48b522b30132b7688214b69808dd19aa4ff033e16252016fc9479222424393e51db7115e38114e6893cdcc8ae1117a4316548010ab4629fb672148d031a6c601a6a4a661d872d8ef693750a115958716ab9263eb0516357102358cde5256464805ca8f59661751ad6a475a7ec78cb7319c3bbc544e1bb1185aaaeb751ba0b3923246e33f40a4ff4780b745362a218d169474d7208a9f7577228308af20f8d2403a27477cf53cff133a247d5c2b298bf21bac6dc44649e63afcef54ad3a07a74e447b36bacca295e053368ef7c146e1c28edb31b3777c941a7c27dc559437b0ff83c2910f827ef244d7726af2b9708654bcfb139a26844c6f4b79cd9e4747065a77596b927f96cbdbc7267ac9e32ac396f6c4ce739aa0aa60fccac178edab1e04688fe71a74201a99bc64b55f8cb89e11545e5275af48626ec667520ba8a7c88c2307e793455ef8780fae16412ea59e92406f595902dc21c612b142801cf31abc0475c7bde772d51c55a2dfc651bc5ab4143022813cc4c8cc6f52c8d27e3cd7851849a8c4343f0c7ed6c6cb9f765c5047e55bc48aad5b932128287f70939db753a61c0d7db1830c256288c1c85cc9bbce58366dac528c893d61b69850bcb82758e836936e1f8163861586482cad35b4db1437fad6980b66280b1652d72f52407a8015f85c29e75b2158933a4f5887db320b583cdcbca274eac21f8702879b8bc4afb62ba056d146512921554c765464d4c96bd3c9a9720187c3339d0593bc4bba59155469ff6b8688a5fc5fa6b46d4070668bd168c5f796492760940999927628236b2412968438d2cbc2a978abc097320291b0ed7e4631ec9bbe28ac63ab6860e976ac1552afc43897d6937a092432dc481a914c3a1273c43009e8ec523cb93ced9898f90905340ba6e01bc572d03a893fa21c4342d88dc3e77b33b1fc063dcdb689d8c4ffc840ce879cfb3471385512cc7c7591383b1fac89832bb1cb3324e6d2868918844cb20ca4df812b42824192a43380430a37a7f3ac41ed064cfe055157b91b5c0108fb7a613a0112af4d64e48f8a345328a99b7bf0c91cb037215b0177ad4c263e6d78f5958c848158e4fd2117c248e0cab3cf98c1e27868838f8428ba0562df6b61e8736e2b8b266607918e0ce2ce3af67c81fa5c2a4d2bc8e871825b702b3beca397b33a518dac8b1393d494a90900c01b55925857cbf8027051d36a4f141a4d2dc440341305e033cb50a074be459c76a339a9a52c447360dea2a5699ccea683a42430aa6fc9545c75c0492641af7a4e9267bcc384e55714cf49741eba3b69d6417a555475d3c021112b8b3588c63747b5ce2ccfee91297fa419f9c4298978fff0870d8a855b48899ca9bb47d836d62d2038cc3816f3a698bb3bbff78c7a015b0ea1960634292e1d50b03e1043a98ca9b27063e668b05e2c17d692d382b181365a818518ec747720337ca1868596af42a90fab1870373d74b8f6d42ac86b18bca3ab04764680cf2060c529abe5b8ef4474dc8cc47a8033ebd884d3e0a0f1a94420d8a3c9162b7af87a2c8a394647434f4a3bc2b477813ac82cf387185b587f7f68938eccddd6934d143ba17bb4a712566d2a55aaddb3323713667401b4a20b86c23bf1076439cb6b8c115389dba4e6f0c915be7602b9703b535070e4a5c5649a5d7080515026706b2604575cbd0687f2729a92a997d21ea7200c41ed8315275f4c7b72f9bc85c0a13b9d041586fd583feb12afd5a402dd33b43543f5fa4eb436c8d9a2f5395087f11d58dbc1d25588ae110209daaab75dd954576ab40aa709979d43e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber1024", not(feature = "90s")))] const CT: &str = "356178262a886ef530c9dbdcf57edb11416bd1d688cab7954e0d714aec97d883589a475b186446904462ab24bff71e46136ed080445f574ff3e43c9590cb2ea31ab78abd99878ff32317a4577134f7bfe357e57cb9ddde79b89bdf9944a6b37fe0b94c45922003e4ebbd787839e830549dfcc09b1c8458e7fc9bcec204c487d0ce0a411f3efdc25f582e882a69dff455d91bf236e400e795b723a2e621d5c537542fff1ea480ed4a519c9c6c02de44ac29f12887bb9ae4822036b150cfd425d20bd5d83a6e8b0707fe362d3aecf494b889266484167e84ba7d7278bf8c92e8708b09cf347dce96f2195d83782cf2c90b26a9ee0d0965800245545f5b2b95681fad4af28007dcaabbcd10fc3411b7c0675622b1c268965f04ad087b968b7313b79c2e1de905f81fe1357c0948cacc34616afbb42e96bd955950c2e8807b048dc5db3bac52eace0827480e40257eee1bf91f357a2dcbbad364c94f007c297100d7676f5f49593899c8a9a048e824eb2da2d080c0be7d9bc1a7e668f8c7216c8d51f68f593056c26f81b6d8ab5aeb4a61826ffba6acacf13dc4a4f92d88605014df84d86dbe1bedae8689a8afdb9873d9c3deb8f2ccbbf375bac374dc387bf17ed89e544c2e8e79a39f9d14ae374f3e862c209f875ba7142e0f0316e4d1d0e0aa8464a8850fd196c0165e1424e84effd846d467351d40ea7a628d7135e5570e4c7fb76882191ca6e3ac6866b5e8712bce385b541a2dce0f5e94613ed4cdec3c5752a21471c89ed8fa1b2df2df6194707d5212410dae98cfe373d3bff38fb4140699eb9dbc63205937d69af6bb9ed3965084b18354e6c241563d7101fdc3f9a1106307af4c76e80a2eb41afcfa652ff5f38714e214a8b32cf30279906552820e33de0572177ed42c58208be2911f91a9946d673a6494cc2013bedc4814b8f33fc1f594edf414f28bc1855ea3bfe70d6a78bb3f99414163ded4612e17cddc0320f950b257d9fd3ecafafbcdf24ec67b72e7e4e8aa3c6fd7e77bd2da2645a0c3e5b93b221e8bc03a176392cb34472d1b73aafab25525f4a34c1d00d6d116e07da01477b72c4e3fcf8e55acb763a306b059439579732b54f983430bcbb888da1faed7b2de645dc65ba203c8f231d94f201862404b086c3c750fe5f30f66978628dd1080906fc4a56a0e6d0307fa6258d932679c02e6c723fcc4cb4dd2de1d5452f44ef38d6b1e615ae013a1e983a18303bd4eff5ac998a40892572003c867a019ecc493ff9ddb358e2fbb005f774f7c5dbdd8e1731b4070bb5bc8966430de9f71ef5544806de67bfc7ddd23347ecaed8bf53a4181018e631b5f808c28a73c649d44232691eaf43c905e04b41926b6d020bcbf114e8cbfc0f3ee32072d47eb9173ae6cf06f0c9ac4223957ce95cf9bedb9ce052632e977924e1ed3d2bdbc7452ef9705bf02a9bfd96338ae9da77393d30efd35f61bdc13193bebf6b4bdc9ece1846d751d0c1459bcbbb95708aa60eab6b33afc665fed46d9de7b9ff6f3e6064e4ebf2372c01ba38add6526d1ba4a6c77e665788033884089e6626d2bb07e4e4c77f7d467b69d0eb6f5dbee22fbf5ec4de71076e008b7e717ebf9fcb269dea669f0dc97863726e0aa60946a85d40d98f28d03a6eb733bf434ac7feb7b6192efdebf17b8e73e91a946a4cd6a7ef1280d866b6786c6bd98daf0ec697dd4ce3111ca76a1beafa37770d1cad2f168cfb622ca342c9a61b27c46ae27cae8517eec1a0268424cf186ab9840d1a9d7076536878728f1970bd2d05a1bc55349c89621939e443e80f611c719efa394cc7cf232d88ed92d77d68a13e6600f679edab767d687e45b3b3d78fc00bea738a12d02ca2f481ed1ad4a22b64e8c7fb9ebc771855255abb2c26908cf0644a2aaa622046e6a65eaaa82c1acb444a352d41a0be6333a2328bfaf952ce68c145f194092d00d987b7df091150727346a792f78f8ea0668c7e00cf8356ec7670a043b8f35a2a4976fb5dd411a128287d4cdf08320a791a9e2b75284e361141fd0423a0edbc744a7571f901f28dd29c27cf8713c59743e36b799cbe929c297252311b516fa9f92c6436f0ed4e17792d57d84be56f21b280d9d0a584e688ceab670a525bda1efd32fb01412f40e58b0f4c2398792afde334b92020467478e677c60d11d5c8e680e0205d583e09572822e71773146cce3c42c9f0473ae93"; // tvecs1024-90s #[cfg(all(feature = "kyber1024", feature = "90s"))] const PK: &str = "b7a2bafbf41df0399408c41f1dbab85f8819cb0ba7c4b13daca064e08c7e35c42b3e70729959269635b6d2c808017859cc474616e000884606143814b3292f14ba618e786276434e0236670dda02251868a82851d24b0cf45a90a08256e21952b0ebb12e7cbd730b5ef8a4a32c566fad6909cc0b8054f56f2ebc651b96633f06158b3b32b2c89f4ef09be7b0a314b533c7960613207422f76b7788182d9376a7049f5cfcc57f3450eac5c12c2c1284c2342e0467c25842e60602d6553132848a57465d0bfb848a948901b1b8ea91057269c325542217a5932b673065f87019712ff1bb27f0d03a0e52c7129ac5496bcaf4d818e2dc8d4f9c51d1d9194cea7681c5afe090c9e810af15768a040cb7adeab558f66f9253318616bd4b604029b1027885421317319d4c30db8075c320531f0688ab91c60f8a408fa10785895e31a4856263915127c158b46abab0b73a44baefa0a3eed6090e8464be4187a7c5ac49a591021b24b49c6dbfa69362e820e519b9646577347b24b92ac2384b894db48adb216420f24e46547b50a87df3d89307578ffaab13b81a419e268cef8a0f8db8b165b03b55164c6eb28c1ea7996605121bfb75edb08a9905092c8a3f1e22c7c97cb87ebc74c060786a12bb73c4c46969292125118281c4c0598264cc5ab3c933949668ee19877757b701353fcaf219b3245685bbacc892be7bb38488c1ca9cac32c8d69918dab908081da6ac86140a036d7932d0795a86d7888733bd39181f13961df7185a06669b848855eb8c8c371b2c5cf0650e005ddba23d0d38052ad65780b28205fa7ee804b7ad3954d42b50d56330ee34600c84c47e684e3ec9c669c349080902c800bc1f9c165ce65292c18bb4a04b042148f0b6598d76b9fd356e50e274d2f5626072bd07620237c9ca232571c7005e81f47bdaf1a8909822d06047524b015e013ee92732358124491440987b4b84355431115f3bd4ae64cc527566941e44cdace12ed4656c89624cb73b1c427131af026ad73c3ced431ea4ac8b46c480550b247cc056d24c7fe4a28103bba2a99566ded7a1d168a2014a5ff7240decf68973146b8e26772f8119d874942dc33492796fd22b3066b26b73893a0b9242033b90b85744c90c6dd1758e14599bb4ea00c0170140d257330840a73a82d8b14211c55c0c68c30372a37bac60e4690c75f052fb40a959c13f47855164f31e2c28b0a136798312b1755770bd54a0d5c8c0aa623f14d3ae7a261e35c99de6c89f773b331854c86d27011c5408ee37013fe875a2e8788711b6d55762b144a127b02ed4e3adf4a1bde9b10ccba26de0a53b9c109e259156e5f1bf8b970ecd9c6864db48bfeb31a02157c10061feec5743618417866519e350fbc155fb47c67c5cb7fcd4ba00917d8b478f3f4aa85b9506ce7b1ea3e71b7778c7832c8ead1301e91c39d2f68389b63e41a69f8ca6b2de30c8b9f9a5e8d316b5b45fbea182c14804b3a0cd160338dd84a493985289f275ddab24d69bc45fd616b348978adc8f6256687a603fab81530344cde51828d320c53ff04d59106bec98cc82407cf6601a512c96c73436b8518c343269ffb324345368f3861ebb673a351b9e5677855d396bb2d631f4a845096cc170726168c597af210a7717c2caa19c602cc30c3cc041392afb29a0cb64ad391394b26434fc578ec54c280a4844e5c615eff1c0862c3c3fe4bf16149bc58b91f4ea5bf6f866f5e76cb9726ada27a230f39fdc0877735b29155a9deca2121df7692514193a34bfc147b6572c74b3b2c300097319176cb33658e92784943233e0971ed677b3276c68c590c899e49832659e0fec9b251bccd9a319ac786b951041c0e8b1f2cc83f1d793e691a61318b4173ca5819b22fe72900f2a50fff6bb1361cb7a057d9bc3b9dc1c6d934323962b7571678debcb3cca93b002c513b9388600f7623bf5a1831326780140b312571d6465961a1aa868ad07b9c34b50a46f10bc7dc7c1ba38b896f1b2da5559c8725d83495441606a99874cedec979e96bba5a13149da0edd0a6e33993ab4810145bb830687cb2c604910e2c33e3c810978c5d4e0ae99d177a19a646d3084ad719b555a7389da122c718274fa310a67ca03da866e6a6582700e966a1f1ed8cf72a5bb77590e208910a313075f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d"; #[cfg(all(feature = "kyber1024", feature = "90s"))] const SK: &str = "910c5a48053837472f7dcacc4e74709f3a29e7177e83198ee8228390d43d164a2d3526a72aec993fc5642023b0cb08a5c4b05d3e7baa3b27943b1b1ca6589aa565344c5c63a6b6c3dd5b53ffac269478958776127c1520f9dab47cc24a9c5b1e0125a7db596213c0526877b829b6484cc21f4d0397a3d39fc328af7dd1ce39d1291ba628d9189b69291659229021173f0b8b0bb09c56f52c566979a6603c19ac4453b6862aae8ba96983ac0d8a674af237397b369d1050f9a441d6c3c336fc5b22e62421723bdfc04eb074075f2b3b61c0268614744675ab30f2cede9c4989d922d8c3c740189aa7b65dca9a1892d998fa66a6cf37186a983151f065ba42cdd0dcbc08ecc6ac544aa8178e383940dc328d199a3e749c00d796841f64a5872ab74cec8b0ecbbc2db58e462ccd87e385be11a0948c19de9581d7d682c5b73ee3a868fdb0a61c82cce47a7615319397b13e64438b67b5747e6bad05f81f5b08ae9071a7d9106cfff80c39879e75879f06231ecf0495a896ab11727e97b1c638bc28893a948567bd0e98749604b0ec8587d0e49a38663fc1d33dd632162ed17a3f320a12e1c56c040418b25c5f478b62539a8bd765edb203da9c0a871b59a5e60c51f9295f263373999c96ac4f32684a52649fd109bbc256acec86c4c1c24dcce386414c692e4aa4e4496b87080fb9438e82468f95862441970ba79120c6f446ba6228c5719d19cc2d7fc8ac7de73a0d2ac7151480ae183d78fb7f1d3053b5a82f75131d702a1ae4c8c3028c5d1a2968e58726410b5b7be6888633cd3952024ef953809b69095a0aacba00e837a77e262b1ca9cca263328a74a789f01d8d25aeaa50c24e654d8fd42126ec0a6ec8462c8865ea01960e5b822ba9452f5542047804c190cbe8787256c80248a52e326c1a6c4465d4437323b25d86d46d366a200298a30d71ac1ba2c2ee6a31a3509eb46200f2aa4fa55b386a7087468b41df5236e8034bf059b5a5cb7d439a6ef5bb1704550c559c9b6428c87df1195c595ebd93ada3096796c15300fd86f18b55ee844b175b70dc0bb4e11376e7a81df433add04553d687ced41805f69a3a3f760aa476bfc0a04392387a3598824af2c2373762d1274e300c452118880542a50e1671ff778bb36390459b6477312b012c93ea43c45bdc3931d8ceb6949970e899ca09206f0841ee7961106b94f8831cfbfc3d856a9bc0b403c9f362d6556ffd97746eb896a0e44d1fabaebda13c39d1c00274cc77981ef26016ec89aa002c7d57f20b32ac5a9456bb2ea6a0fb1a517f9043fd31582e07a70b34380a324e2b52b366a2aa2f36c01d40560e9215f2a06ca6a2c147830e7fb8a1b959783f57c6a54963c42881dab7a96770a44df945fac73731a29e770129652211fe23cdf1fb7d565c23183258f0d43c3503093fc1b918b84353825eede34a77c7aeb9e78e0bf218498610f51067449137d925a9c3e4b5a7a031804a9e4b847f8478561e8c8756024032a661db899742203fbf233594823db7187d71659c34b61fc9a3881a4129c552b70ebc41a463a5446ccce536960cd86ed57b892f2b64580b636e69060b33681bb09dfbe31f9ad761d6074e8f628406a8994f8293345ab7348052264014490b0f0ae4a9cfa494bcd57702b8362356c29918b921633ed6ca66f9d9c658995693f146cf5abec9431a544a70446757f5ba6d57a7814348b8250505fdfacf3cf767202007f09a49bea65602589a39f59a830b15bbf96e5a66b4d514772c5c48854b3ff12c3ef0f9cb7a760219e26cca636fec873f28290c68840245c40412351b07b0b5dedc41947aae80580b539a8eb24ca76ada55293a1ea331b4b66a5621c8492185bbd9766d639acdb9863303c738debc3baa438c90428ee43643dd28b436f477b395599b4293dd733b7a0390047b59181c4b3d9305b9b768e4dc472759c4310b3f95645b891843f88847f8a67df1776173aa852551cae9e5923c758af27754df395da89033f919c8fbc312d30a1dca33c579016ad81256977046da17941fe347cb790834b44107aaab416a1432ea74ed060c22a0966daaba0ea629399794fbf79b2db74a6979081458a989f409fc355846f03cd9bc904d564e0bf7a067361c7ee05dd192ae9887173e52720442ae13fbbe9d2098b7a2bafbf41df0399408c41f1dbab85f8819cb0ba7c4b13daca064e08c7e35c42b3e70729959269635b6d2c808017859cc474616e000884606143814b3292f14ba618e786276434e0236670dda02251868a82851d24b0cf45a90a08256e21952b0ebb12e7cbd730b5ef8a4a32c566fad6909cc0b8054f56f2ebc651b96633f06158b3b32b2c89f4ef09be7b0a314b533c7960613207422f76b7788182d9376a7049f5cfcc57f3450eac5c12c2c1284c2342e0467c25842e60602d6553132848a57465d0bfb848a948901b1b8ea91057269c325542217a5932b673065f87019712ff1bb27f0d03a0e52c7129ac5496bcaf4d818e2dc8d4f9c51d1d9194cea7681c5afe090c9e810af15768a040cb7adeab558f66f9253318616bd4b604029b1027885421317319d4c30db8075c320531f0688ab91c60f8a408fa10785895e31a4856263915127c158b46abab0b73a44baefa0a3eed6090e8464be4187a7c5ac49a591021b24b49c6dbfa69362e820e519b9646577347b24b92ac2384b894db48adb216420f24e46547b50a87df3d89307578ffaab13b81a419e268cef8a0f8db8b165b03b55164c6eb28c1ea7996605121bfb75edb08a9905092c8a3f1e22c7c97cb87ebc74c060786a12bb73c4c46969292125118281c4c0598264cc5ab3c933949668ee19877757b701353fcaf219b3245685bbacc892be7bb38488c1ca9cac32c8d69918dab908081da6ac86140a036d7932d0795a86d7888733bd39181f13961df7185a06669b848855eb8c8c371b2c5cf0650e005ddba23d0d38052ad65780b28205fa7ee804b7ad3954d42b50d56330ee34600c84c47e684e3ec9c669c349080902c800bc1f9c165ce65292c18bb4a04b042148f0b6598d76b9fd356e50e274d2f5626072bd07620237c9ca232571c7005e81f47bdaf1a8909822d06047524b015e013ee92732358124491440987b4b84355431115f3bd4ae64cc527566941e44cdace12ed4656c89624cb73b1c427131af026ad73c3ced431ea4ac8b46c480550b247cc056d24c7fe4a28103bba2a99566ded7a1d168a2014a5ff7240decf68973146b8e26772f8119d874942dc33492796fd22b3066b26b73893a0b9242033b90b85744c90c6dd1758e14599bb4ea00c0170140d257330840a73a82d8b14211c55c0c68c30372a37bac60e4690c75f052fb40a959c13f47855164f31e2c28b0a136798312b1755770bd54a0d5c8c0aa623f14d3ae7a261e35c99de6c89f773b331854c86d27011c5408ee37013fe875a2e8788711b6d55762b144a127b02ed4e3adf4a1bde9b10ccba26de0a53b9c109e259156e5f1bf8b970ecd9c6864db48bfeb31a02157c10061feec5743618417866519e350fbc155fb47c67c5cb7fcd4ba00917d8b478f3f4aa85b9506ce7b1ea3e71b7778c7832c8ead1301e91c39d2f68389b63e41a69f8ca6b2de30c8b9f9a5e8d316b5b45fbea182c14804b3a0cd160338dd84a493985289f275ddab24d69bc45fd616b348978adc8f6256687a603fab81530344cde51828d320c53ff04d59106bec98cc82407cf6601a512c96c73436b8518c343269ffb324345368f3861ebb673a351b9e5677855d396bb2d631f4a845096cc170726168c597af210a7717c2caa19c602cc30c3cc041392afb29a0cb64ad391394b26434fc578ec54c280a4844e5c615eff1c0862c3c3fe4bf16149bc58b91f4ea5bf6f866f5e76cb9726ada27a230f39fdc0877735b29155a9deca2121df7692514193a34bfc147b6572c74b3b2c300097319176cb33658e92784943233e0971ed677b3276c68c590c899e49832659e0fec9b251bccd9a319ac786b951041c0e8b1f2cc83f1d793e691a61318b4173ca5819b22fe72900f2a50fff6bb1361cb7a057d9bc3b9dc1c6d934323962b7571678debcb3cca93b002c513b9388600f7623bf5a1831326780140b312571d6465961a1aa868ad07b9c34b50a46f10bc7dc7c1ba38b896f1b2da5559c8725d83495441606a99874cedec979e96bba5a13149da0edd0a6e33993ab4810145bb830687cb2c604910e2c33e3c810978c5d4e0ae99d177a19a646d3084ad719b555a7389da122c718274fa310a67ca03da866e6a6582700e966a1f1ed8cf72a5bb77590e208910a313075f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d16496ef0f275f685261312928f19be085b60ec2d2047ff9b6daeba28648ac5423e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber1024", feature = "90s"))] const BAD_SK: &str = "010c5a48053837472f7dcacc4e74709f3a29e7177e83198ee8228390d43d164a2d3526a72aec993fc5642023b0cb08a5c4b05d3e7baa3b27943b1b1ca6589aa565344c5c63a6b6c3dd5b53ffac269478958776127c1520f9dab47cc24a9c5b1e0125a7db596213c0526877b829b6484cc21f4d0397a3d39fc328af7dd1ce39d1291ba628d9189b69291659229021173f0b8b0bb09c56f52c566979a6603c19ac4453b6862aae8ba96983ac0d8a674af237397b369d1050f9a441d6c3c336fc5b22e62421723bdfc04eb074075f2b3b61c0268614744675ab30f2cede9c4989d922d8c3c740189aa7b65dca9a1892d998fa66a6cf37186a983151f065ba42cdd0dcbc08ecc6ac544aa8178e383940dc328d199a3e749c00d796841f64a5872ab74cec8b0ecbbc2db58e462ccd87e385be11a0948c19de9581d7d682c5b73ee3a868fdb0a61c82cce47a7615319397b13e64438b67b5747e6bad05f81f5b08ae9071a7d9106cfff80c39879e75879f06231ecf0495a896ab11727e97b1c638bc28893a948567bd0e98749604b0ec8587d0e49a38663fc1d33dd632162ed17a3f320a12e1c56c040418b25c5f478b62539a8bd765edb203da9c0a871b59a5e60c51f9295f263373999c96ac4f32684a52649fd109bbc256acec86c4c1c24dcce386414c692e4aa4e4496b87080fb9438e82468f95862441970ba79120c6f446ba6228c5719d19cc2d7fc8ac7de73a0d2ac7151480ae183d78fb7f1d3053b5a82f75131d702a1ae4c8c3028c5d1a2968e58726410b5b7be6888633cd3952024ef953809b69095a0aacba00e837a77e262b1ca9cca263328a74a789f01d8d25aeaa50c24e654d8fd42126ec0a6ec8462c8865ea01960e5b822ba9452f5542047804c190cbe8787256c80248a52e326c1a6c4465d4437323b25d86d46d366a200298a30d71ac1ba2c2ee6a31a3509eb46200f2aa4fa55b386a7087468b41df5236e8034bf059b5a5cb7d439a6ef5bb1704550c559c9b6428c87df1195c595ebd93ada3096796c15300fd86f18b55ee844b175b70dc0bb4e11376e7a81df433add04553d687ced41805f69a3a3f760aa476bfc0a04392387a3598824af2c2373762d1274e300c452118880542a50e1671ff778bb36390459b6477312b012c93ea43c45bdc3931d8ceb6949970e899ca09206f0841ee7961106b94f8831cfbfc3d856a9bc0b403c9f362d6556ffd97746eb896a0e44d1fabaebda13c39d1c00274cc77981ef26016ec89aa002c7d57f20b32ac5a9456bb2ea6a0fb1a517f9043fd31582e07a70b34380a324e2b52b366a2aa2f36c01d40560e9215f2a06ca6a2c147830e7fb8a1b959783f57c6a54963c42881dab7a96770a44df945fac73731a29e770129652211fe23cdf1fb7d565c23183258f0d43c3503093fc1b918b84353825eede34a77c7aeb9e78e0bf218498610f51067449137d925a9c3e4b5a7a031804a9e4b847f8478561e8c8756024032a661db899742203fbf233594823db7187d71659c34b61fc9a3881a4129c552b70ebc41a463a5446ccce536960cd86ed57b892f2b64580b636e69060b33681bb09dfbe31f9ad761d6074e8f628406a8994f8293345ab7348052264014490b0f0ae4a9cfa494bcd57702b8362356c29918b921633ed6ca66f9d9c658995693f146cf5abec9431a544a70446757f5ba6d57a7814348b8250505fdfacf3cf767202007f09a49bea65602589a39f59a830b15bbf96e5a66b4d514772c5c48854b3ff12c3ef0f9cb7a760219e26cca636fec873f28290c68840245c40412351b07b0b5dedc41947aae80580b539a8eb24ca76ada55293a1ea331b4b66a5621c8492185bbd9766d639acdb9863303c738debc3baa438c90428ee43643dd28b436f477b395599b4293dd733b7a0390047b59181c4b3d9305b9b768e4dc472759c4310b3f95645b891843f88847f8a67df1776173aa852551cae9e5923c758af27754df395da89033f919c8fbc312d30a1dca33c579016ad81256977046da17941fe347cb790834b44107aaab416a1432ea74ed060c22a0966daaba0ea629399794fbf79b2db74a6979081458a989f409fc355846f03cd9bc904d564e0bf7a067361c7ee05dd192ae9887173e52720442ae13fbbe9d2098b7a2bafbf41df0399408c41f1dbab85f8819cb0ba7c4b13daca064e08c7e35c42b3e70729959269635b6d2c808017859cc474616e000884606143814b3292f14ba618e786276434e0236670dda02251868a82851d24b0cf45a90a08256e21952b0ebb12e7cbd730b5ef8a4a32c566fad6909cc0b8054f56f2ebc651b96633f06158b3b32b2c89f4ef09be7b0a314b533c7960613207422f76b7788182d9376a7049f5cfcc57f3450eac5c12c2c1284c2342e0467c25842e60602d6553132848a57465d0bfb848a948901b1b8ea91057269c325542217a5932b673065f87019712ff1bb27f0d03a0e52c7129ac5496bcaf4d818e2dc8d4f9c51d1d9194cea7681c5afe090c9e810af15768a040cb7adeab558f66f9253318616bd4b604029b1027885421317319d4c30db8075c320531f0688ab91c60f8a408fa10785895e31a4856263915127c158b46abab0b73a44baefa0a3eed6090e8464be4187a7c5ac49a591021b24b49c6dbfa69362e820e519b9646577347b24b92ac2384b894db48adb216420f24e46547b50a87df3d89307578ffaab13b81a419e268cef8a0f8db8b165b03b55164c6eb28c1ea7996605121bfb75edb08a9905092c8a3f1e22c7c97cb87ebc74c060786a12bb73c4c46969292125118281c4c0598264cc5ab3c933949668ee19877757b701353fcaf219b3245685bbacc892be7bb38488c1ca9cac32c8d69918dab908081da6ac86140a036d7932d0795a86d7888733bd39181f13961df7185a06669b848855eb8c8c371b2c5cf0650e005ddba23d0d38052ad65780b28205fa7ee804b7ad3954d42b50d56330ee34600c84c47e684e3ec9c669c349080902c800bc1f9c165ce65292c18bb4a04b042148f0b6598d76b9fd356e50e274d2f5626072bd07620237c9ca232571c7005e81f47bdaf1a8909822d06047524b015e013ee92732358124491440987b4b84355431115f3bd4ae64cc527566941e44cdace12ed4656c89624cb73b1c427131af026ad73c3ced431ea4ac8b46c480550b247cc056d24c7fe4a28103bba2a99566ded7a1d168a2014a5ff7240decf68973146b8e26772f8119d874942dc33492796fd22b3066b26b73893a0b9242033b90b85744c90c6dd1758e14599bb4ea00c0170140d257330840a73a82d8b14211c55c0c68c30372a37bac60e4690c75f052fb40a959c13f47855164f31e2c28b0a136798312b1755770bd54a0d5c8c0aa623f14d3ae7a261e35c99de6c89f773b331854c86d27011c5408ee37013fe875a2e8788711b6d55762b144a127b02ed4e3adf4a1bde9b10ccba26de0a53b9c109e259156e5f1bf8b970ecd9c6864db48bfeb31a02157c10061feec5743618417866519e350fbc155fb47c67c5cb7fcd4ba00917d8b478f3f4aa85b9506ce7b1ea3e71b7778c7832c8ead1301e91c39d2f68389b63e41a69f8ca6b2de30c8b9f9a5e8d316b5b45fbea182c14804b3a0cd160338dd84a493985289f275ddab24d69bc45fd616b348978adc8f6256687a603fab81530344cde51828d320c53ff04d59106bec98cc82407cf6601a512c96c73436b8518c343269ffb324345368f3861ebb673a351b9e5677855d396bb2d631f4a845096cc170726168c597af210a7717c2caa19c602cc30c3cc041392afb29a0cb64ad391394b26434fc578ec54c280a4844e5c615eff1c0862c3c3fe4bf16149bc58b91f4ea5bf6f866f5e76cb9726ada27a230f39fdc0877735b29155a9deca2121df7692514193a34bfc147b6572c74b3b2c300097319176cb33658e92784943233e0971ed677b3276c68c590c899e49832659e0fec9b251bccd9a319ac786b951041c0e8b1f2cc83f1d793e691a61318b4173ca5819b22fe72900f2a50fff6bb1361cb7a057d9bc3b9dc1c6d934323962b7571678debcb3cca93b002c513b9388600f7623bf5a1831326780140b312571d6465961a1aa868ad07b9c34b50a46f10bc7dc7c1ba38b896f1b2da5559c8725d83495441606a99874cedec979e96bba5a13149da0edd0a6e33993ab4810145bb830687cb2c604910e2c33e3c810978c5d4e0ae99d177a19a646d3084ad719b555a7389da122c718274fa310a67ca03da866e6a6582700e966a1f1ed8cf72a5bb77590e208910a313075f7f5c2504f59871b3e7da307fe5e3e4123fb2896e20c45ddaf9cdc54a592f8d16496ef0f275f685261312928f19be085b60ec2d2047ff9b6daeba28648ac5423e2a2ea6c9c476fc4937b013c993a793d6c0ab9960695ba838f649da539ca3d0"; #[cfg(all(feature = "kyber1024", feature = "90s"))] const CT: &str = "45039c00f10120df9ab21dc99e39e131db36e772d6dbf1674b01c373397c0ac184c6cf643b72cca5b1114563f2e3d77c2662ca7733fd44b44d720b83d2f88800213a1c2c1bad43bbcd8d96d1859ee68e5c31c6c897cf4986fc78ac79eeba67965d65ebb62ad54b45a1cc58a54608b82308932299baa74bff835e81b3fa420a8b7678c16fbd5bfc5d0a48e5114db91a11e205ab7c576ce8f2bdf1fe1d7eef6850709ec0fcd05f5f3e9c796e1b3dbbab0a89a7c87f0c97adf666183ceff8d99dc89ee6ba12b5aa578d297c35a7897cd2256b1975a7dfa1c58a3b764e6b5ae5ad7a6036ef725b0c3cdf6a46505d3ed6b2f22ba8d339180a0b73ffee93ede006c55911ea09a265959be22a527902315bb2eadc1286116019d28477bebe4274483829e9fe7403cda1996b2118fe7599c0ba0b5b4248f55d3d256a97c31511f1ddee17568fa8035cd05bf92d9d8708c20369cae3e79067eb01d5c6fe92f18be94e3e04f45035c29e4ffe01df1c8c4c2b65c4adbfa798fbd4dfbfc755ea2de1820077ccf90feb427436bc3a96481f70561439c79259162f5cdcb644350030e7e9f5d97951bc3a040fc54d26a8776fd89fa0bb14bc98656590257629585b69b6314ecb8ff783fe089419fe9f5e8c40d3385f444ac659b3cc2233cfdc08244f44442a5aa12d6ff3486955ca595e1f83b3193910002b8a65cd6e7a57e046d08761ad374f03133228efd4b9fc794dc5d889e080af2925138559029eab45ba269867a72eec08f32e286b0cc6155bf676503a71a82eafa63e3403f020539ab5de1b574208b05d71bb150eb7c9a8c8766137ce16d8024947cad656926199fc9f750e4bbd8cc99ff3962db5c4bb3d6862947a80f0f2c073c949b69914bfe1dd4e76949c459ee71febbab354d315426a06f99c949be3e41e690d0323da8a18534c31cdb6ee5c7d707eba044ef69251beeb619bf5fb8cabc72c5617c80b0ed77e33dc0e49f8e458facfafb13cdc51c7a50271b6e9428d2913190a35cbad304dcb7b1c24003215de05cbdd34248e57a7a014a2b7a9cb295e2f0194d701ba75f045fdd690874f4a2ebb6081eabf1a4d17ac0b4b7082bbd8852be96505e7c6c0d2bfef26d34a7540e8445144dc7f4243b89d52c59901aaa6faaaa87529925752012a3be0418c70983550733359d23babf17c994339bc411695cb8ec813fc986bf676ac17b7483047279706a7da32fc8c832ae377b09faa50abc0e9319f433f82fed700fff7d3a0b09f3b39fb417e07d07d2db595b9aa2244714633e857a676d6fc01bbdcab69d3b09fb5fb69544cc3ef1413a74336fe59bc2d6fe10a8b3360ab0a011d308d4b267119a822865ec56c6e8e94b0ffa0290fe5dbb391e68e9c06c7f5375a678f37e7f23c1e6eacca4a82a9d20bf14bfccdbc9ac6106782391f2b900d836361e16e563a282992b8ce469a4a166a97c43b13dd67e046eb4b31a63c78075e0126684b8b17cfb3eb37aec09ed44a84c796decd851567fd5aab299ee7e10be6239e70acc00c74e62471a99bf0ef0341ec7cc31e51ac1a96f372c2542c7365fbb32a983344acf738609b1bb6b1e13d8a7a69703e45c54b68586a03c19a119ed7db72d6ea4701bc04784b05607e9bf9c3e1fc4694cef58e3efdbf72e71082cbfd4b4cd957b01b92501ce2af996249a1e54601a9973bfadd8db33e6494f1a1109c9353d3fdc96d5c9c07316d5e75b275bd0603da71cd9896b9c975c91bf3cf1f91adf93eb89af7294cd6c047dd3f88299a8ce56f5aadc607bcaa10bbc8189f6beff6ff5c65b93566ac5d0e4bd6783ba9a0f9072cf5ee6729006d252a110a3bfc5a61d4be6b92f0035e9e3f1a8d725fdd8f3fe129f54567fedf8fee52053279946424a76e8d1522894096f6cc790b49456394fc79812d6bacd2eeeb9fbd1c0aac8cec4767db75ee53a828b62913532c033f7fb5adefe7e7f5e59c077c4dcf3527007fc62ebccff96e3867adf6d4f6a77293da5caffdef083fb7dd3adbd1c4a90cb8b76e8bf65b9b4c6c24b22bf7bbfd8bf6f02e105f880c74d199b5c6482c241b181e8d001aab471cd83eda8d38925702ab1fbe0dd18ba370916dd1c8bdbfa090bc5f2621fb891d94126f0627ced17cf29f74e6c04129de0132f8c19fd3221038ee651ce69f7d43df0b8a0a9e5b5a5deee26396e952cdb55e9855daf870dde03f048b3b8bdfeb435960";