Source code
Revision control
Copy as Markdown
Other Tools
var ml_kem_vectors = {};
// ML-KEM-512 test vectors
ml_kem_vectors['ML-KEM-512'] = {
publicKey: hexStringToUint8Array(
'cecb751f326709b49e14caa4be3095eee98558862b83b93356864ead05cb3826954cdbb21dc452446036dd778230094fe3b814c7998f944582d389ccc738974e39496db534d4db784b65446ea9bc59e896a339be6c13463ab74ae2028a12695c5b12c1c9d570065819f6823b533b29bbc8938bc0aa745277e73357d9525cec0cafe1f08a1b9b11a2f8aac1f5abb2a6b45f109569b20cfebaaf32b490644c1884d77fe388a120b08514c96eebb3bc0cd97706769f70f04847098abf6282ac002fa01584ab96760bdc4657093bb6979e0af8540bb720722a6cbbb8481fd036f5d364c564c96f4aa6beb24086b3b104e0af5910638b667d7d29b32e93addba05437823858f7cfc69acdaa94ba74902973b88a9b08ce2fb109b2a16d31f10d8bb452a08996b9547849908a61ba0d92f36f467aa5224cb92caa17abc937842a4facf64af4e2811278496daca6e1a9898a5c028ea46a64e56784c5be7ef93960a910d7011e03b17caf42ce3ec213759693320b2c96b22aef8010a3825d60bcc0e9151a0fa43df10ca3a3cc6b6d6bb6a2f6035fe3c02362ae07e5a979286924d05a54c5137b46b3998574a73cc009875dd566beae6b4d47a279f585af8ec57cfca28116a95403fa6e49e7a4111689f2340fe9088e0743a26e06bc6c54b01261766905cfb2785ef5d5c986ecc9d74c66efec5769a92c8a034890300f2b7c7d20a80ffb731ce4192cec021ad9b9ac25dc9946004ccdcca5f4b29581f27eb3e724504ac36e95aeb7bc49c65a783ab8c2d169ccc0113b1826307e51b3c57307a68ac3e618ba223928d63361512892bf93b15268ae54eac44f621d829439e2987c1bea1326926ab11c5911477c7beb282ae8810b5514538028b8588b1ca5914e559e68325d5f948783733ffc8bb48cd952f8745f76c2639a875410471e8382316d22261632b1a17809d58bbb75d78ba299cfde2a730f8091dc44b8aa736955fa23b816b1d7784d97abcb0cf4cbb7c8364ef12a82b009103c8f7a76c6ac086ae10a3e6b0639cb35ce10c31faaaa26fc22b9d512cca8480a61ac3aa187bfea79117dfbc4fe0b4f9457d87ba4914ee55a4baa946e9155e99baeace9522cc64bee7bd7fa45eb2f6b'
),
privateSeed: hexStringToUint8Array(
'3e4262cad144026de9bd35bf203ffb40263c8c765d05d2a4d00a8ae92507d2d2c560b8435a054d816e5f2535a3df91833ccad263e58e3c34555cd8c57325ad9d'
),
sampleCiphertext: hexStringToUint8Array(
'0e488758dcd45552565bece5b8bda4523544de14eed13fec29cf926016158913143224db555a2d6d42c2ce30f63b7234b825ab11b6b10bbac19835c23cac07e3b37fed08a1eb886199ee2db95e0135af1c21d375edd0c1346617b66cfcd9cda85a8028da745d9d3653fc5b80c6d29b4cd9b02d6c5ac8e7c027a70258573198bc72404a31de1f443854e7becb3bcf390a6fe7c86c3a0b149e51a5103b2dd84b96d20d1f3b1a5308dd9411fa87754d7d8572ad583627db9aa98d2fe09b6fddca3ca8f94e643b56d92babaf105e52ba7082e334f7b8e4866f45f415a1d46901ba932c298dcdb0e964d18a0b725ad058c2d5ea7213ff7f44afeacf1b6a1029fd93ce50a6b34bf51e8323c7da586006d3c1f78c98ca79ccbcff1c14a0309496bfb4f4bc24402a47912f98005defbc082b96c206dca02c9327d7a4166b9ccfea2c45326a98a1ab84dcac0ea35a2b1a2c401b911cdf27652338e74beafab4d945c3f13ca296507c87f73e348bb443b7fa7ec05fa0e35b9f191ec8bade966092748cda729e25a4cf8d9f8fc06daf4a60f3b98530282eabbf57674d34f96cf537639695357825111e0ca9afc04a789df283b125d9f9f1b55927c93bd48e1bcc62f36e7628ea8bddf448ae0ce298442f1a8c8d31dc23b96832603cf2036fbae96fc0fbd2570aa5d6517cc352dddfa944524a4ca6c5c76db98cc796c8f9cfe392748cb3b22eaf5843457729a7b6a801ca0ca9b4656abc9df0911a3d1a11c85be1f41360e85a47e766dcd99cd0a35f1fa6c0945805c846d2a08655363401ae9886d426c3a15aefd0984d5a128c0318f1818d734f624bc6e73a5d42f81329764c3b5186e7d6872e9e3e22de4faef96ae1a772fa1e8fc195e8601dd5468acb80619c658e06e789fab5fd688f8c08c36ac884135232ce832e68a0c15f0165b84c3882afac0bbe4eef7a42de92174af0f685fe47baf2bc797ced19df1808728ace5786cfc5541719ab0ceba544335c1f02ec8b80dde750749743a8a3b91a8e1d2197956c96a02dc51baded9d8846899dbd4ac557a74c4e7843a4c3431132deafa3f418d7c39d5276'
),
expectedSharedSecret: hexStringToUint8Array(
'6b15add5b366b22c668a1d81901d2ee2113303b6afa82eaf6764dbead766b8fc'
),
};
// ML-KEM-768 test vectors
ml_kem_vectors['ML-KEM-768'] = {
publicKey: hexStringToUint8Array(
'0f610218607bac1636d12a24507965bc4b6f3975699e24ba489ab00eb8bb94c416e09b5b3c2205da71a40af38b1095b998b734462a0cdf337be78525fbd984547a981e119a10a19bb62221f71760f4711b3d88317ef78384d52028a94977a7599610b34bc3394b909ccc3abf62fbc2cc66aec617cdc90917c180ba14816864f541c43a1f299877fa284aca655bd5a7b5da3b77e48696bff72525105934269fef4c0bb483ce3d8c126fa4c0e44a181f9731be1839ad0895e27b1bf2e589f308606c50c52d2c0c15785888655e721825d1a4b52565518559c3f2a7b4b58618e6e69149b02962217396897eb74212b1070d9fb09d0cf39375089bf3251ef992b255b15b83c9b475151b932283fcd943ee7a2e7cb248dfb8325dc0c70d557131cc696646a231755be20a9cee4415de085df3a41665560a59c15a9560879696c0bb344a2787916cb7773af05c65bb79cdf924751bcb4d8a20ae59a609c158b1419c83649a74e17e69765ad4f528ac66c98119c620a318c8179814c25758432a5cb6734e31a02aa9c8ba1488a11a9cf36929e2128db8766d95b2ab22b1155a2253e4277dc780b010e59a42ea95c6a9a0d6f945d57345e555c9f339808ae00aa5475ec6c4526bb010fcac24475a218a758e62f920567711c038196cd037abb57ad132ad622a2e3e39617cf366a398564f31adb5405ff6a920c5326ec726a397fc11cf79259e4862e6d33948299e55f56893eacd10dc9f899847ac127cb8b5527caa9e8cf4af1bf5c506014c76058b1ed10fa0f609b778aa26cacc3bb03e04b49e99fa7ac0330ef2925538804ebc24530003cf08173a4b5a787bcb3bb06b6b7de17a7ad74bc3125b9fa0cb46550cfdc9a9a8400a8fe51f9f39a28aa2a752c16119f925e4db6a4a37b26e85c78022b8952b30599833bf1896ba1a16fdb71e4a3031058500c85a05fd36b99741cac790243af94cfbe25dec5808fa43cfc792a9fcc1adf962079832897049b9999a71857288a0ea8423e17e1d50c8a56a97fbfc0ca4195fc9d20d6b7bbf625591a6858f75ca791b6557585b4f23868a387abd2008511cbb4b681c3f90499c53c16e8a3522495848c50a0e379267d0b9bcce9b846b3415be0ba2a952c37dfc6810c4726d01974eba5d4c8ab59a99b75b7b9c6b866de4c387ed584bf391b70ca87a37478544032e00cbbff4d74a1b42991e729c8c4bcb980a487c554bb7556a242383cab936366344e7e33c8c916d64b46ec29935bca65c8eda3f67559edada07301644fbc4643f9c2fea45195d8c67ce5687ffd064d282ca823b449f9b2ee596297ff6a34d3854b587c596e3bc2f7c4e913339bec85435b78321b123a893564441c515a280563150d3f80ffc688674346159461d176c77a4ccc0527357c9d00d1723734e78b5b374b2d895b0e08b33e97b2d73a6b994f90e89bcabeac2bee498bb09c4bc03ca2c8e00ce99fa04fb048d864c3bb6e1236e5cac3de30407c3284b2c643fe02c6efa024d96401f1bc463e5bbd9c08c81792dbae510f1b727f3a1b530402b47c6b6dbd5147579938fa972afc46e7426782e26a9c8e2c57045482adc100317173ee51d03f3197a102c9fd7b607351b4ad5b6bde45113d637332a288e4f6bb67e444c323ee8218b5c1d1599b58dde352fd6cd647a52'
),
privateSeed: hexStringToUint8Array(
'46973b12a054a89f47d53af583ad94676bbe8ac1046b071d666f55813b6898aaaacb5559d007ea6814683b499d8be1a0f5bdf0527ad9dfa8669038fb33be26c5'
),
sampleCiphertext: hexStringToUint8Array(
'1ad401a3c43e18a5808d49bcfa19132e0a3c0a551379169c0770376a12d2dd499efbc860e5067707de7be9b164185a4612dc88ef8cc755f253fe9081b9fb25827f2e316a09ae62ebf85d97454693fb220422eec6d3a1782184977fced1951ad0a8b7eac897f4e8e3bb7d15fd3f78ed8d37ead1a54ebfa230af95f3326fbb0557bc558a8b1950d9e5463a4d2ceaaa1f7a67f8d625c98640a89ed4eec2e63d34c06d7b31ffe83f861a3a7e50fe644b6bc72e78ceb773831d1d905f7a3408acb073ac81bf40ed3766f283a5bc07d206a8264afdef771adce3878f8d1d346f9292d6bbb8b9c6cb8e857ed0479852828935bb68aa0469828434062aa5ea49307a80f110ffc143ac8644e5aa3a74e5853986ce97a2e699add9cb7753a1983d08d253fd5e25efc8d9f110e2bbf89b31957fe0d3cdf5b1f6256ff88d7aa4ecb6b5f91d6620e2c861dc870a903834b4f1b608ac904043ea5c5c0a1f8ec44f91c51c9a2e5fb879d7dbfb9f948c1917ca607ca103a1bfeaccfad2ef34a8799f39261304d6772938b582a2ea948a2839ffb43dc315d0ae311f1e54294cb6dbc1efa904a666b0a381c8b528d10a562641ead95293b74ecc78c2e64af98ba6388278b5091ef29f8b506e7ea4e2b8591cca6145205efc91f9de7e2860d7e2893c888807be0b765a12a8563ce04fcb99d68510312f774fcccd4c5d0f8764cfb9fffffd67b2dc3ff5b4b47da0665409d3dc4ec4da3e36b991f9f3ea2cc01e347d69256ff7057b201f3e04343b2bc81e67009ea659c120e0c606ed2aebe8a67196481ef3c5301bc173a33c61ed931916d21a0e6d9ae73981dd3eb2a33b33a84ecebfbe42249f54a3d817038ec6c60e8998dc9ebd17b96887bd3c69c7b4547f402f24981f5293e0ce5e7707aaf333b9bd982195afffab10a80d53a9ecca129579d5f5fddd6dc5245640f83cf3bf9ae7f839455a14aeaffc2a177d7a5e93110f74f9ea27ed224df258681753683ae1755ae4a8d616fbae8cc686ea06a31b39df7a563735839aadc4ac05f7f4b9edc6b173576fdcc7ce3072dced29dee8355966db7d25bb2f613ea6e32a7c513cc2474b71b3db7d5f8a64c66f7cbeadf3417d7b7f60f27e23566adb11da10c7049ce129fe55a65ad16f60dfecaa1faa0536c54f66a3a0e41e040010c28b2ce6c5e5c9c093599b1bcb0ddd4d23ef4a6a49136a31d769ecd14ca4dd83e66d90a93ac101948875b784a3940b024e3f8ce2d04542fe6714cbf00539f650005ba58eba04377e3734bfe9ff99b6cabfa08743369e4847e3b15445251a94b64270f618a596ce94e22c1f71e40fd19765498bc21c9a59ab7eb77caee81eafed0de8d5424ee3ceff860eabb3b1381fa5287642ec50ea9ee9578a8b7abc00eb187b158c75669c175d50e300a4e00bae5a5333a75933938601183f8a69bf547d5be49b7faea391bd2a4f5cab057642205b55437f99cc8114cc21ba9e9f16e8844cf9dad53931409cf4ef6c6e65e77f21ee2b3e70927129a4b5d78044ea7031264bce6a'
),
expectedSharedSecret: hexStringToUint8Array(
'532e3b9af08e5f5528929b762fb6e4d30b2886f018f970784199f315e3f5cfc3'
),
};
// ML-KEM-1024 test vectors
ml_kem_vectors['ML-KEM-1024'] = {
publicKey: hexStringToUint8Array(
'51e6707169475b3a308f014059583b8304cd2d93687e5315834644793510d8bcb46d9053afe0cb91095f39ac782b8a612781c9ff6a4ef7b17bb762c138b543f48654e6797066ecce85d43d42e793446b74e349296b445afd2c9f45646497d1083f329bc5723b3b6256396a135c310300411bfb17450350b7e180832c0038e2450e78f518ee318442cca136ab938ef87975258bf2cc5162b1a93d8a51ea52a1a8d4ca23b9b60bd68c7f4186a9806999cc886fa3692ffcbb46aaa28f856f9a774357402fb0a5ce80f69631e52336729e0438a1e93a214ae99f15263eff135de0a942d8b3c261b422c034b1bec79036b0a041c37be03334ae42cf8613283ee80e69314989f3696f1825bc53c894323e1775c72f779415b88487ec26f4b16446a0aab0e5226b837b8d13297e31b47b4b41a49b823f6964e5378a78063afa24b5e6294f270bba5a7b90e42a2d6ba4419f858adbb18f901c37a0f278bf6c468e723f00bcba3710809bd55e35bbb520dc9f44614665006f713b5ba264bb26b7106d89bb714c65c0f378df1651a575cd6377a28374b7668bb6b1436612a39c71eaa482eb78b7d07d4914873e36384290a7c44786e9b37b8b427882069f0a9018b487a5ffa8bc83d52aab57956397ac6056313b94b53ce1c39b717e9be28bc7ca12c4938e48bb031a563962c05f25a406da2b7c1b983a555c5ae793622c3193c4c175fe0a8dfe20c1cbb94d9697160160878c6720eef44f8c22549cf62a2b4cbffc119bd1c46a10d0661d5c4b1a9277aa3100d8e3636899bee543127cbb2a8c70b6768cc51aa439938725877187aa253eea51c6784c29b36507e4039c37b845ee4b058155a3b851ca685c054f8086ca955824ab4144c4368ddc70764a184c2a2abecc84add7650736a0f8865ec0c6b4be22345cebc6ed7a27d56161f350a605eb4b3f18a685db1606352e052a97e9a5cfb3b1c909f5545ce0a419c605b785940f32c622e31787c5a361f45ecda50b4b7546e755aa62679f13eaaa78755f3118991b0a579249599a3921471152634b4fe401b11ce7182c54a321899a94b445b7ca32be5c1302f77e51dc86fcf361593b13eb9cb01df3b16993c157c566ac0bbce31083cbb149535b05fdc86655a5766542341f99b9f2747718fb58ef1c0011184c21e3ca80b1b9128b796b169c2b0aad8ebb2da5369f44db2c995ca56756c668e4bdfe38862cc7bae4d1ae505c6e936cbaae9b42e5bb2868c141c25b81ed7cc706846ea9a059ea659602b429dc9111f1b0b318f7402fe20698a93b770978d6035db8d4065c49275ffabe6875c662156d2a07bd3d91cc9a703f0f1b63990363e49bbfb67c86782759f1e3afd1094d66b6100d872b7254bda0b17b17b9cd1544509f9a72b79c21969254823c5013244c681a7728297869bb7cae716f9d59868d0c2aef982153e218ab55b8ce969f3185268a880c31988738589d42b81bbce5aedb29b0e99337f2389aa54350289742456384669187d2c6918c59033c924969a36751b10134549975b277afd9033f50ce65dc633e5a1d01a3b6138c6f01f7aea179c7c8c79e4bfb203fd9b28fa23c14e655ba7791928ac46fe1a6b8b93658092768e65e85c5aed9e897dd8a45712aabcb7c191907656849559ed84d4077c114d911f9e8267028a5856a9023ba51086786689267a56b06e6281f1bc3434b01bf96b0243e0886d7f43725f9aa598b515cea401b7751e1a259816526232a75d07274f6bc4bd0d1a61ebb11804aa79f094008e5a19085431ac11c508a6fbd50268a8c8021c4b19bfa56909720bfb726cae9a7b7736faf17cfba9b3b4a32adbb0450e90024bbe82cdbb02f62005ef334798cb3bd7fdaa7fa635fe3a643ef745f1037cb6b824b7c608515e37f5b73a488248de17c665d3bb4d92575266a0f6565264eb6a4643b52b3d23a80254610585c22c330a1e235ebc73de0babf9b39a9c5f48ef0ac060fe96a00fa4be76bbc4728371de9646dfa7d5c833de1f646287633deb41f4676c744722507f1c353a85e85ea10b3d43e8a784c3ef262f281bdd5db44e03c4ecad2a05b480ba199bb32bb07afc46257f95bdf516fea63c66cc48426facacc0656b7f60179f792b7d686dfe707d7b916b1e8b24950c74b9b6001604e5d333a35992a7cc44ce3bc1bbdb8c72f08428d8a6e5920619d8196a7d3269533bdcd3435183b5d6e98'
),
privateSeed: hexStringToUint8Array(
'd710a2bc4789368cf20af5feeedc8b9a8d0a88ebd770f91e9a441146526f6b0e711d945a8786bdce9f167ddc5da8c7ab96dc305d6a366319d5f8a6924f183959'
),
sampleCiphertext: hexStringToUint8Array(
'd54df4d679314cfd6f3291cb644b9973145a788c98ef94e68e9f8d1f92eb842396849e6914d8cf53090257882f26b1fb4c07a2b6adeaf3bd568c5d3c5b54320d950fa55980af8d96fd7d4965825b638842929f7b6acf5dfd3033f3f345af313280e0105faadd42715fff55550caa64368967f158ca3a7d00aeb4df1eccde240f5b2110efe65f58e9b3ee54987e07eae195279afa373d7462a48d9c79b7c8a3f8162d8430bd0d97bd901436297c123e41f74096065469d587b9e742773ffef91346e351bb95b43b8c082a287b979891174e7186dc8cf2d64a07711f6e9f17cf02addcc3b803fdc2e3eec9d391841f0b385e2d3e0908ab84188267ceddcfb69d2f444f69008816458da4dad59a79e33783339ccceb5524a0227f114a2367dbcc5f9785ef15665e921e877b2405876743eced6d76af9d4aa6a68033c2435158d7b0106058ef9852a81a462bfb3cf8b16027e5e08250c12cb1e4130668173623356f9793db05bd065ea36a61326ccaf53d2ec0a134dc1fc6c72a403d274630b73464aaa16b46a71c82d8a027cb5005f22426c0b5314b04b708d7aca3f4b8538ec19253f940b4b815af22ce82bdcd7da85a61ac187c92ef38c8c29900519164823747eaa5f68bea24e87e623cb74dac2c7b57fa1f285316fd744b83800ef36636cdf529230dc69e7bb28bc5c648db1dbb6148ae0510999b48238c1050ee5ea04986274efea863de71f5528cefccd39e0e179b5749b72729013cbb1e85b96a134759d80bcab2a5e4eb93fd7eef26ae23ed1e07d59172a48d09aeeffafe12ad46d791bfc6a713307dad2b8ed41487f289eb2ccab83612b0ec61c8dc3280ae899a4b57e2e133b5db0d896ad418a5afef5dab36f87c64793239672d50a67b6ac16d6fcbac5d3e711d487ccd0e4ac1c964aa5155cc3ba010b5783dcdd0ef10567e7cf19862c00d71230241ef1329c5213d0983a58f565c12dd786d68d8bc31158de6cd0273bdfd8e58f216489600575b9f3734cfde2a22c6f3301756285019c777f23eed8f101109e9ffbd7565523b5c0fb49509e66a28915e26bfcefc755cc02dc8637f31d359f0e2a7e8214c99d52f299f8c1f2cba34ff1e967458171a40e3c446f0fd2b443a06039f30ace8a07ec9f1577db6f9524f1e705ed797e4a6f99feda605721ebc688f1a72e0b267e9cc4f264f5a6c46da620a47f589ab0f80493e18e5c0559f9718cc99b3b2a9b8dbfe0d9416ece262265e9318094a24f9c0103ccdcf77d7cd00decd2201602b8f4986407021ee683e1a1e21587aff7052d30f76971e9c3486a481df81b224c169565237464eeea0d0c6b2e93f35bde3d08736ce85b8ac48ecf49da790ed8b26ff131e55a3817403f58503a228431655c28bb584323ed02bde2f700c964e5951b71910dd190d71fc37a1fd1931e7a6525c231df5e069e02db176f2e0cff568339d050e7c767a4af85409b60f9a36ba25260157e432c4a5e65718e474a2fdee8e954f35333cb0035f65c86559389e985f633d13a6193c6f8140275a305cbe675996f683532fed0130b4ae130ceec7476ba0b79ef0c3606e07884947c18f3920a32a3b39f66ccda82c159b3718f266d90de831c901cc758cd0dfe4a4affb4de77aad1e8f9ddf5acf39cb6594b5009949e5bca50298d9ad8bc7ae021c489b304d7be8fcde0e18bf4a817d79f7b512d62b30aff6d2bc31a2940d074e6f78c013c8220696cfd02ec83145e7b9802a97042c28e9e61957cafb7dc45d2ba1297223db253ad5c17a71c7de34b67727bfffb6ea54247258550af963751ae43e2a2409b63595e82390fc24c67182b574adc14cc7f6536428ad93ee47e91a589a51963de73aee5b8b050e37da2c899b0a7b67e586c25efa76a23891ec12f935478c9970f7cee6acf92e3f457c35e633bf2acf087bd0ab5ac27a6df9fe097a29e0cf3893dfe4da6b660ce28364a6fb7425789b74f705d8e139481b600616c9c3a9c2add0f8862b44e4c14ed4268f8ed9a6a1efbbac2c9882badd148d14e009d15044cc4e035992009a6036bad6a9ae75fd3659877cd347a45d99e99db2175583ed3ceb2560a8fdcfa35c1509315d4c8fb0e4a0ac298113285629261dd9b2b38fee181cc957a1cb5824711a67b1dce40d99ca28f923b2f99f2b38309643b14c014135021247b6e8d115b24bedf9bb206c7ee1f92aa62cb978c1b8db4f259a9c'
),
expectedSharedSecret: hexStringToUint8Array(
'2f521110a9e853867013cee34a38f107bea1c46890671608e4eca113ede9097e'
),
};