"""Golden vectors from tests/fixtures/ml_dsa_44_golden.json"""
ML_DSA_44_TEST_ENTROPY = bytes.fromhex("20739d89b87379e83a915a0764366ed1e72eb307b3c7846dc135933370f00b266277961d536b47026f7eb874603384e3a2b9ea51f033aa4257acd17606d2cd86bc6c2a6745d59dcc148d5a8776be46e127e3ccf57212bd0eef8085aa871cc40b91693fd9a79034504f639cea0e618509afd84d943b3928524becc473c3fa3c2a")
ML_DSA_44_EXPECTED_PK = bytes.fromhex("41e0532041722eef4f8dfbf1bf21fe36e471b74fa50151a9073cf84e698102e20f2e86b874081be2a17077196ded9f8baf9d3ea968610ebf17fc93011e41cad4d2b79645dfef7c79160facb0ce272f6eb7143755420bac0bf88b1d3dee29e8adb9ed388d42b7221fb909fa6a7971065e23e86c1ef6b7be2eaa27d3d8744a467265446fff06ced154d6d249d496b220ecafc6250ed089883372a081148d815449912a78758bbfdd2f4d5a59ecd9b913c2d943c3dd5d7360fc2a025b68f374161e467c6e3e9f71000bb89f43272d16299917dad7ef5e3c127d34ee3566f62b50adf562363d5640cad941f2f7b96be604d01742ce0cd23f1d49dae81c0621c6551748f38ce11c59bfe9c626114d98ee65099a9091297237bba4f2c8018962fd7c85815239ab6197d525f4d4bd612ac3c60a557e640942390d080bfe384ae9a944e9a2198e376128e351e1c69bf9ebff1443b8eacc93935458bd919c440d710653075014b350892115261b672bb45b1d3843aace51b33ed7675f0c45513805aa901743c30acb35377349aef22793ea0595dc2a76e555dd5422b1d54640acb22b87aca04efe58403b2ef7f56f258d420146404bf668b6cff314ca265083b89b368b94872d41cd4b4f66781d478f17e0e90d33a30886b5f37fd588f44bb52b81575773131984d3c807e0d107c4e485f962ccd1923fc802449e37f75dfb3e25101f57d8c79c4d86a30e29d6d7aa34679ebf5f07eb9f24bc29c60522fd1ffb857b23380b2460e1e47c1ba6e82116757e43bd424771ac2c693924c4296fd42b295a8149e39b673513df80be004739ab175c4c17fe5a39ced18dfaae95f463cff87b33bf831ed165e0a578e08db570c3caf46d41dfc1633b7f12d6453aef49143758b28ec0774fae4f0e5f6fd45ffea6b45c6875649398416738bd1161230c86de9405d957f8f494f45645d5e3b971c92082dc7a0810eb9c1ca37d79d9966d3ceb8c0d05acbb073c00f707e41e4f971bfaf9d3923a51909d6872792840ce1b370c04d47270ef9c38031fbc07adf717e46c5f86d6e0d5ee3375ca9a88ae900540de3ecb79f23f6717d5224ba9a882356bea5cb4b7908d5e33510c2dfb28d49ea4deccd56b645bc98d4bc0888b915a0cebf916657fb3f9d797a9d2f7629438df91cce473172f002d058e146b5908333125dd70b5bb66af3be2861c7a49c25a16e21cb1bf020fc2b97236519946468f7510b527f2c8bb5e5116329b619dd0dd72e829a57f156f9b6d7e11e5818c91da26a2592755eca81abfbac01d5460040f824df49cb43797a57766948b7f2a20eba9066c4d24327b258fe3ebf72bed834479afbf116d5e868c169296814bcf6916671a6dcac18c612a3e1789134e49f2bea55d874bd02a560b042990d721c7010602abcb65f72f7025a751f961ea25cacb647e20083d6fc752c8cd83409933d587dc478e4877b94df4d3ee0314083f188eac2cb289bc6ee1a19df2ff794b5700d3946dee14841cbbe28c52da9dad76ded1fac675d94906762dc0952c76c12db1dd19db27adc7ec2dd47326a00e026dff7bbad24a582150c85da4fe3bca80678a40a8e573c51c5ba3544276d1d79d20e3d63d4ece0285d80d56e0dad9ca49373876a683d567de7b63ce05302e08729c313fe43a5a3a9ddd5e9d9af8d7559a1bec3cca5c3aa433c165409b454df634a2977016d5a8116fdc4c2e5b9742bd8e0c5b42b66cc06e7dcee7ed46a312d49a7abb6b0bc997f613afd575afd7e1903d834c0eb4bfc97b62d438e1e0c83b7f65ab6c85fb04e675a7e9b7735b7bb3ae176790927748c888e7d1d7563ddfeb3d673d0c294b10289cc4c85c")
ML_DSA_44_EXPECTED_SIG = bytes.fromhex("922d03517e92a68bcbc8794501e663944b8c856c9ba8cc81c460cf35cc202924648524f614d6bdbb6502f248090d55a70193f2099c48a4420af307147c620ebe2dea5a7ad30bf82b5805e64d5f180ee692b666762d8dac59cdc1c904efb08a975555d1cdbd6fed1c5dfab72bb58e4a001916420c52e40a6685ef1ee1a8fc8ba01d362bb8687d38b8aa72ba774c10329ee07f5d61c946305c9e5e2466a0884aecd2db046bef2a1ba00e042425b44cc07198fd946c588453a0b0eb1a05c864db45002a7f72cdc8222985cfc25f9c33c59ea59f0e37fe1436eed4d9c621f4daf2074e2c466549fcc1f5bcad8da9d8f08ebbafe996f1d1672748766e3794ef676ef9d03daab395656b9be95d00703987cbb5912235f18a6b0ddcd761eaf5b1ffb0134e609302d4d4a29ad92cc454c26ade707301c8c74b634668b1a9eb05f1e16a62f13d27adb6131e1f77521cef0a2029c802dc080502f1becdff22d7d2ee2a1c2f60b6b612f6704c938f3d9d9c15c8012a6b8f46552d147fa494e319d929044fc39af5324c4afb157d2a97df3c17ee1d305b11cd3c3793f6fdeb36001abde910633ebd992c15351aecbaf433bf3cbc64d6420e1c9a61ea47fa3ed40dad6812f8b85c08b30618862cfa9ea7f424b44c3bbc3afb4550a57911d5b011fb8fa1e280238e0ed24c5012c9989826b8186790337dfd90293c9872a50d0fd1ea3cd0e03fb2d135f323e6ad77243bf4aa0069058f22a1a86abf00289ff41e2cb822eedff243579b37cc19710f3e66a8ff39689f568d0a211e7aaf41c982c36f352800dbde6fb3ad256686ffdc9f05a6e384d90c5a7ed5e263e1f78ff486e671e0a089796a4601d5178761d03561af585063958a8d2758d7d08ca89b2fb114edb1f9275337e134c1a3eb7b9577143a1880c2eeb018c0b445e9fb2c95682d23f3645438e050f09fa1735f1472cbbc4a516027ac601a01a8f7c59f7ff50dd950a2d6e796047241e707dc63a8c2304efcad21b6b0da74da8970b1066c2a62284b289bfec5622de0d75c89622ee0723f82178cb77b488afdb8e502d5b198c36de2f2359a632d46fafce3f2be686aec4dae87b2a3378e0a699e0ebfa5ad8939a2c8b60ceadea643c5854ad805803074bc294708b5f92c2999d7dc4e2c131303ac6a532be57c3a1d65ef155352844febe4fc5c9fb02a459c88d59e400d38cd1f1a197d978811d7bf4c2112b67b424357733d972a1cc05e524c92ed171d737be7c85dbd8635522af2219c48f6101482d068d23be0ef9aad2085215eaec7a62bb87e5a651a58120355658d59ed7cefdf876b5b663c1d2e9ad580cae5996fb8aa763e388ecee34188a33a4b073766c085b8e5cda9489d8406f004bd2aef2d70239ba240f37c9b79df95a76c167c1e571ceb4920c3fbc9bac886993a0a4200636bd8200bb0f81249e1d65198fb003015fc62a6d59425d46263e009f077705b793eb088b224c177cc010d77bf54214b1911a94220b147eeae9ee12cce270613214f56b7c2d19447fee9178cf05217b7966e6fe5bc615e3ca7c2046dcbc5bef738576a7694d83b4a79496b9f5877c75f4fbf7e3a3774a0e599e8270f78d73b862a4fd8576badf8a62949c45e1f61bf3292eaaada5004c30f6b4a944cf1c02bd128efc92bb221ef20779089a08c8e5404fd6f5834a2168c1d402a6a141225651e21e3531a2bdbb09707cbf1ac443577164eec4fdfa4bdc9f07026179fb1b390b1f46df9473a82d0618e18b21f490c2467dd63c9b084c663818251a35b0097bc0bf1489386aba9ed7d5f3d649ee5ee8425db18bc798eafc4aece589802da0830e4b53f273683a12a1fe24344d59173d484e45fa1e44afd8a7bc1cc8b9254e8734d3da649c966e240616f98ea115dbadb3c02c608c552f7a6e12b67d68110bebad877711174c6790ded2894ef5484de166a7c19aa4c3bd3b3bdfe8ac82e855f9445271ba064ed0b35adb7edd4b4668b815df6a8adc291be4c244b02be609869263b2c0ef8dffdd66951c1d691f620ffa9a9ee6f7551b3cdb304ccd2e60210f5e7e8b5c72583caa030df4b50deb7ab968eba363430be22895144a95f70fb2100732c16e980dba9f2906a35843374af6f3370b2047609753b69294418852c98accb010c648ec9ab115eed02789748299a7b742884f695a7d0aeba5c66f2dc7925b37274cb05d3137bd78e9ab890c441b74285859953aa623421578e328c93296bf22314bb89d7c1fa8ec7a72eeb6ea2842ee7aa815a95ca35efdeda16c0bfbd01ef9f19d855e7f8a4bab964699a3b5e50104aee5e0400ff0013837ff2482d983dd62a1a74a97348d90fb17f16cf63e86c04932324c4271c6579ba5c97ff8761df179293f3840b314c3747c3f40510c4fb45d9153e2f80a2b4fd47d09d6875790778c699159e0705725bf956c597b0bd9f9b8ac7b26dc711b15caf07d3c2d0920602d63068d845b3bb7dcdb68ec5d240cbe4bc5439543c4614cee5a13c239a626cfcb244743306db927055093e00c147339f15553c6ccd854516bef4d848bca13be68dd3dcb7b54f95a6d7afeb917d17681a478f2e38a395f3c93a3c20b532622dc230235d0d83ba57bdff91dbcfaab792824f6ed57fe30c13553e348614be8dde07c3f48c4a38b16a9bc2eb0cdede6d5e6ad0fe02c11e77940e4222af64741be3cc83aafa471b81ec4781b8b75e17664c3b62e507d24cce6c1835cf9951255a1e26d93c5dd65db74e9d77c298ff0e124d5e860d5fae46e4a9b62cc5a91327a2c8cda31f0c6729ed793b59d6816f92595e31d40cca7c170fe31d1923ff7bd69bc52bdab95f7210c7af2391c8d5c0724d29bc4f39d78fc9c862e87f40b186960c772b01adf4fe8fb47e7bb5fcc565ff14008d6021404da17147a1fe9d1fb2798c995b0c328ea4a917a670bf9154c54f59a415df1b7e54c07b7cea00699389d0157d3e964dd89a4cff4f3f619ff6bacc461e51fcd28d9b89515462c18ddc33342436831ac884e64cba0eee7fe505fa228ac104f04ceba101638b4c8b35a5f4dae3d8654346d99ae1de6e1d3ea0153a5a9d2b48a8d099a0a2dc9a2375af85f69396353673bc49d2461049ba333ded09f81ed92e7fbe3ef73fb9630098f73a7dc1390fe3f197860a3c32eece6772832b7cd2ace4535843fa03c895db8f76270d40a5ccd1abad9ebfa7852bc79ad2205df6db41f6675fd69bd38ecc64b1e56717ffa39f2ed1b8b02d8a76da53cb60489e5abb77998e605a588b1f01211eb045508c4728dc3d14cd1ce612203fdecff3f88f0b25334042656c8da8bdceeefafd0a133d434f50587e848f989cd8dffb0e222b3a4c4e5368838b8c8daad1e6f6fa00070b1d656e71898eacaebabbdf00000000000000000000000000000000000000000e1d2e3c")
ML_DSA_44_TEST_MESSAGE = "Hello, Bitcoin PQC!"