]> git.feebdaed.xyz Git - 0xmirror/liboqs.git/commitdiff
Wycheproof (#2145)
authorh2parson <91481147+h2parson@users.noreply.github.com>
Thu, 5 Jun 2025 23:47:02 +0000 (19:47 -0400)
committerGitHub <noreply@github.com>
Thu, 5 Jun 2025 23:47:02 +0000 (19:47 -0400)
* added wycheproof vectors for mlkem

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* astyle formatting

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* add license and remove unused vars

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* random_bytes_free

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* remove unused rc

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* add assert

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* initialize variables before branching

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* fix dead code warning

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* explicit json encoding and helpers run subprocess addedd

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* styling

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* fixing dead code and linux issues

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
* Skip failing CI test (#2157)

* Skip failing CI test

Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
* Fix typo

Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
---------

Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
---------

Signed-off-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
Signed-off-by: Douglas Stebila <dstebila@uwaterloo.ca>
Co-authored-by: Hayden Parsons <h2parson@eduroam-campus-10-36-104-59.campus-dynamic.uwaterloo.ca>
Co-authored-by: Douglas Stebila <dstebila@users.noreply.github.com>
tests/ACVP_Vectors/fetch_values.sh
tests/Wycheproof_Vectors/fetch_values.sh [new file with mode: 0755]
tests/Wycheproof_Vectors/mlkem_test/mlkem_test.json [new file with mode: 0644]
tests/test_wycheproof_vectors.py [new file with mode: 0644]
tests/vectors_kem.c

index 8299d474ec35c43b2914963b5f6e99faab9ffd71..a05f9908ef96ec51b53ca30464c435bb80dea0fe 100644 (file)
@@ -22,4 +22,4 @@ do
 done
 
 rm "v$rel_name.tar.gz"
-rm -rf "ACVP-Server-$rel_name"
+rm -rf "ACVP-Server-$rel_name"
\ No newline at end of file
diff --git a/tests/Wycheproof_Vectors/fetch_values.sh b/tests/Wycheproof_Vectors/fetch_values.sh
new file mode 100755 (executable)
index 0000000..c78343d
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# SPDX-License-Identifier: MIT
+
+# This script fetches the Wycheproof vectors for ML-KEM
+
+# Then fetches Wycheproof vectors for ML-KEM
+ commit_hash="4a6c2bf5dc4c0b67c770233ad33961ee653996a0"
+ commit_url="https://github.com/C2SP/wycheproof/archive/$commit_hash.tar.gz"
+ folder="wycheproof-$commit_hash/testvectors_v1"
+
+wget "$commit_url"
+tar xvfz "$commit_hash.tar.gz"
+
+fld_mlkem_test="mlkem_test"
+
+for FLD in "$fld_mlkem_test"
+do
+    mkdir -p "$FLD" && mv "$folder/$FLD.json" "$FLD"
+done
+
+rm "$commit_hash.tar.gz"
+rm -rf "wycheproof-$commit_hash"
\ No newline at end of file
diff --git a/tests/Wycheproof_Vectors/mlkem_test/mlkem_test.json b/tests/Wycheproof_Vectors/mlkem_test/mlkem_test.json
new file mode 100644 (file)
index 0000000..951d7ed
--- /dev/null
@@ -0,0 +1,506 @@
+{
+    "algorithm": "ML-KEM",
+    "schema": "mlkem_test_schema.json",
+    "numberOfTests": 39,
+    "notes": {
+        "Strcmp": {
+            "bugType": "CAN_OF_WORMS",
+            "description": "In ML-KEM.Decaps the ciphertext is compared with the output of K-PKE.Encrypt for implicit rejection. If an implementation were to use strcmp() for that comparison it would fail to reject some ciphertexts if a zero byte terminates the comparison early. The chance of it occurring randomly is 2⁻¹⁶. These vectors are valid and test that the implicit rejection path is taken as expected."
+        },
+        "ModulusOverflow": {
+            "bugType": "CAN_OF_WORMS",
+            "description": "These encapsulation keys have polynomial coefficients that overflow the field prime and should fail the Modulus check of Section 7.2 of FIPS 203."
+        }
+    },
+    "testGroups": [
+        {
+            "type": "MLKEMTest",
+            "source": {
+                "name": "CCTV/strcmp",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-512",
+            "tests": [
+                {
+                    "tcId": 1,
+                    "flags": [
+                        "Strcmp"
+                    ],
+                    "seed": "a3896e30892230a6c1dff667f8caee759ff84a08e3462ae484fcbca9971d7959cdc6c5ec65f10a5a24b5145aac863232ee3b2229ca3a6c4b9c8a2dafc315d9d4",
+                    "ek": "871b108fd980108768612345f2fc7317216f55576f914c3ede67878ea89046d636572ca78fd67a4efc9b68e462853b2ae8dab001b6059c390916fccf45bba50b85b7e12504ef931c52030a4efb31ce978866ea0bece660b16700d9ca4fb8eca335cb2395478e6bf845eba6161765c479e0a3c0b64773b0a8f9191789e0b939cbbce7f80317e569a96c7c3ba2596aabca4298c2383ab539a05232f990af03b936d18cb6378363523ccdb75ef237ccf9774776ba0e219c97726c6f82b3168e49081d7b358f6c2dda287796a99775e60de716ae28385b8270451b3a2b8dbb267a8a37266c70718ac30303cad7e5908d0b09897bbfb18c25975bc9f46909df4b3451dbca7a3498eb253bb4246721685b762086b903b6f6a86b2db894cd59567ac9b18a82c5fa67306ef3cd7aa5c82d46aa73111f837c2eadca7b1bf6ba81f769e0530d44b21f5ab161a159014c14ad7292b638b86e548a5c0de9300df1416e619afbb01a77588cd3e1a17546be6af108f8d3ad87429f6dba298d8119a4594310f874def0a9f3f5a20748cde73218e91b428a629e6cb24e611300d9155f6d16c6398b7d2615a0bf486b9ac1c32be69b2212baff1c5ccbb0c247075536f2bc28caa954064bf5f3963060ada289ab5a58628959347356a7ba4c84051a65547a3b56a738eb9acc0d62213cf1291006a502ec7296b42e989905a08393278480290887958c4155a975d37194d25b146344b012318a3aa98060c64946191a871408f6a0917cab9227b956e4dc8081c96b50927944381631237302a0c960a33678a268f2139ca0b5b44203863cba6d2ab37c78b369a4ba5256e173a274567b536cb0d5b6d47b3d8ad738fc022792112a4ca09389b9c1317b2342a5c4a444c73f36468529806842b5297482fb001ceb28b1be8299e612985957bf7ac16cf7e609fe532a33f25690186616762c680b1cb1e986c5f55c37a49bc32219faa8ada839937ac56f7587ac51a12abfc8be413a9b915b4c455ab1e2dba776dc8633083646f7cd95437b129095e75510dff58fa4cc6c3f4531211a3a161418b7da4e6ec8388b0197993898783d963d109590d4ac0092189baabef63fcc3df15b0ab3099078c9580b198e11",
+                    "c": "00ec7fcdb617629fead7f43cf59a7d3a0b946b5c5f472407812c15c44249e52974483eb31fb6ce5e15728708ef24f78bb61bb5c8b6ebb4e8a96e5b898e069c499c44a57efb0907234597e810f4de40d85d6eacd775b83400937ac863cfe5d406469b8d3ca4f6dbe0aced60fbecb32588f1ddaaa08ba5c5b177ab51b548d8ae2218eb2d9b02b31cb4bb6e7754b6a74856316ad3e0394025f750412023a74ab851fc03171cada993c6469fa254b5d384edab1efe8f2efb6eba37c7ba7434bb243331938849114ad398cf91038fb96c30a712f47e1c7183956838d487016f023bd9900a94c606edaa42bf0e67f2aedd03f5a581e55af29e24af061ba73da64c3869d7598a0c95c3c8330ecb4481cab2c85ccaaa366f99f3bafc980362f4d701a233d0967ded78e4f1874b42cda774b888d31f1671d6567d1636d5b2bcc117e2a256f343541c3e173e900b6d6c71bcd55479d23dee6b54e2fe32303c7955fa5f567894605ed75e65e54858222c0d065ba9231fcd82ab86af63c242d10d1d30b4176e2bb8169fbd7f03cfa044098853382083284ef8cecf05f9d0bd3d9af84f6df551e3d11e9281794d36a619f61e47901ea0dd695782241250f0b5c2a20d76d3afefcb11d015179d6a9a74121c448e315f507cb29add40da4eb05cae27320c4b18a25d7af24ac7b0bdf7382143d4d02db3e7d016f9ff5638e0df7968f785ac8000c7545a1a70d6fd43cc3ba28d82e9eb6ccb391e094ba85a49ad6e9f8fd8faa9954062a5df13c69847bee485bc6624b40b8128fe911231b4ef9b4a22ced4f8140df65a5b8180665128273fde02955a65921f0d1be139fbe1edf0ac01db1d2a5ffd95d63d33b0a7627cab4bcd37647238c80197d4fa88a7e34d4caa066dba2ae6fefff6a1e804a72d49ed443c29b2db313fdf25d98d0dee992befc4572f8b1eee0db7227b6e202ef69ea8340ae3690fc064d3edfd8d067934db3061767e4857e805e888294efa7248743fcaa1e01acdaf491de408c58869bc9624c951103c079793be1edfa9442df4dece40eabb99e9b01410fc0108b26a13cd424cd9a9de5bafa1fc",
+                    "K": "cf3bcfeb2679cb43658fcdcd01aa1505bcea1e72a165ccac7bfb66d9dc0c0e90",
+                    "result": "valid"
+                }
+            ]
+        },
+        {
+            "type": "MLKEMTest",
+            "source": {
+                "name": "CCTV/strcmp",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-768",
+            "tests": [
+                {
+                    "tcId": 2,
+                    "flags": [
+                        "Strcmp"
+                    ],
+                    "seed": "cbfc4405d1b2a3a386c94c25e0f2d5f5ee92cb0388ff4d6aa04223086d51c3fd24752da14c9fc3b8ae0d9e4a8b1016b8d8fc69e229c03ea2ef08a4ae0cffc37f",
+                    "ek": "8b9a7354e8c1c17a9898f96caf99bba1c625ae0983c4d26e60c12f59bc25d756182b17979e713fff129e6c336a2317770380858129cb91a902ea5455ca076c20e4158f393aa2783053d8acf92c3286a10436d72af3e8903ce22f8cbab18b1309aca205aa8a3da45807e5b60e6967a640a713a5b81b0d82bc406934e3c88910cc06f09a68bce991009bb56ae233296218ff5baf1f475390b8b7494a4e083645985437f2495a073222fea058e1672034151a2e14c2cbcb4ad9068c8e7bcb02886c4087c14bd8823ec66393fb2e12326b38e655dcab1c13cb2931358715c8be5153293229cc994a5702b7295a6a4a73249ac5a30a32a6b91dca768c177d8fa59054e548bee40257db6962a83b64ec6de0d3be7b1812c5d99e7a38cf54eaa8413aa0bd02bf374461f29c2b6aea56f7d33e10dbbc75bb1bf6b555213aac33e652443a186a618b6e9a293919693f1673ea159d0ee52c92d53e9a5cbd5f4c44419b5493f0286efcb9b5a2ad56a713c4f61ed431aa987805a90475391ccd4c7a28d884bf1a926b7675b9208897a89a6384c154acca3521c32a994949b2e80b2ff2518c0bbd34184cda443de498a05dfba9ce701bb914179a0188be0bcda6fbc2cd93afb042481b4a84d821160a1b0ade8bcb97dbaf681547cce0bca674151a261a21aa04fda318c921c38425b775b995cd7b4eb6369f0b211da186594de815fa3b53a68043e1946468a5899b90578ad49397306f71acab67c258fa17a31893b72d22151ce1afee150fe550bffde8a24fe4740dd43f387c7ad20b5cca5997879536c3071574901147727341c1a6fc8043e6454903e88217f0c92b9a4ac54a86e7909390878a35ba18c1e26b13049f41c522bc049d74db6f76caba39f23d8f07abc26a07a1caba71cb5c12fbc20a715450b2228d17b2ba985cfe2496b033b55f300baf992964388a5422298f627ba567730ddb03a195806a5c23a1d315481c52814b0681ea3c804b02c90688c2fbbce9b17d230a42f8b865417c9e93347f5ff624879962747c7eed886acd48a994b22064ca499c69aa4825be60260d12f63102799828b3ccebaa4340b749605017eb4598ff13a634500a48470de9078a34106267d25a0b144d8cdb1a4d527692153da013c0ab27ae2ca955e7c66238746022d50630892933a05c283a9f4c00c9f984646f75471081722ed3404ce60fed4a06702b8728b62d920b3224206ab0a4694f9c18e3162b529c16af04b87b4a61cd53a757906d67a139629585d423a3b0986f29c95984e2095ea4608784b0b31c20cbc36cfd60b773389fe5a8c0958211a35b2c45f21f51a08693c19bfc388c2d677a214ccc5a7cb0b67030fd6987503c91b0f2646985a9048489dd882bd4141f5419554eb738fa7333c5c57a4ce5541fd6b8ad454c2dea67ad1c6f848c0a44a1872e40a17d987075d762ba5aaa21d435dd079b989a8ee21a2ce898934a98a02d5b381c302a2d76948fa65de15666f57750d580ae1a541c700692dd0b0a6799b5cdb893413bb89bb65182f219a4bc3c80b43bb591bcd05ac6e9a366552558ed5c5fbe7b4acfc7b23372094f6a87f26c0c46646c55a888871324fea7536e586a5149b9b707c86ea076486a6822b9bbf59fbfcaedc13284b9813cabdd526e326a6832d3b36efc3102ef",
+                    "c": "00e96c44eb5f5380d80b4cb05d608971a28fbe838b912b558bf9676c6c67c9692ed6ea063fc47b70d5d6004825c269b9cb8e68b5728d67f44844d97686a11154e3cbd4a6f9e47524d93d851bdce480d7762ded09be53d17cce3ee28dc5a06911c062b99b218355dd5822108c55e2c67f7ea0b74b6189b33b4589d8ff9d0c867d13edaaf1c5f724675320beda3e6acc673c048fa04a1b30f899227d5a555e08a412a47b7db75eb118a8844a71b186880426f6bb6e77186d18e753cbcce93c9fb76c729875b4d473eeca8dab9941969faef04df9ce3178e7341eab416d28bb7aee12bfb8f4c3df814eff45a0187329079acfc41a8e8dba7b08d111f02e37a1d2b69e57eef808fcc6ae23385534a420a93dfb6a95c73e2f1016177c4fe9d3ced769e277293aaceded6d07efc7890eaa885bd1e73f9e5da2b9cfda0d44cbc9090705ac2ce3e7bcd7775b593c706e45ddc97d3a65d9b7e73673f9473df5bfec689671f73e7f6ee77c730a8ebda1f0b2c112a71904d6f28a51d8d479f8323fb485e722f5c4d5857e95989a9cbaf273efd04fc3cbde98baa9969e095e88accecfbd12ef2155497a5b15fe91a70d1106b91a568363bfc2d6736cc8138cbc41ddf1e54fd40511e27d89e2c26c027b63c156e2bbb998faaed3d72186f0cc626dad39a782dcda2087fd13a9498e10b41b685646a227ea1166a5632c195983f4aba2b718b4074030d57126d34c38349892007acbea9e393b967dc3146b270f080a1f0bee90d65a095a6352a7718ed1717a8025a2bd38c66d120baf4247676a1fe044a57ce268c078f8ff46cc26fe4f9c7a03d6467adacb8418d26273662bce1f7bc00b906e0088e95dc0fb419e2232e85aac77b9e7cd563e604de5e1d3e9693dcd3b19865cf4250773691e7e0af9c2755cd31f49d1f96708f3ba2f0b98184525abb869e12d5cea0ac1740181a875035300b05a54b8d42ee3b4ae92b06e43cd807e2b096c977f23c61ef8c989c52ed83754076dea1323f639250bef61bdf903bf7961cec89ba6942d9d0647ac9c8195d93ed8abcedf25754644035719a5a0a1c8c0798912726a9a8258e4c10ae7485322ed9ba331f6f090c4b492a4fcf53d753cd34f28ec0443fce0724f43c89a3942169d5099a8f7430f38691ebce2e3fe4f600d82c7ccedf60673f8e5d4c1a9f84b8b5b23f5ed63defb6a7205e0a8b105bdc6ff4568fc78cb4456b02fedb7f4c48f6fd6b69216a3319821039db40e19a31a0b0c9d471d5a7a73865d26f8be3595525b1ec4a8579efd07ea98e2602e2bffdfd8febc5c7b4c736d326b5030ccc6faf9420a9c156a8f4516b9fff675459dfdcd4ef85d7adbdffd60f4a39628e399cc752c2e99ab2f431dc765e7c9d206bfe32649fbef4ef48b1d7936fc74766d724350ee2245a8d5f23fbc6c7ed8b57168ce1e864e49d7f8c475dcda140bd42473825b3c72eb8c54780188813011e1962a503f9b516e13226de6375b204733b0192183c8f55e870e61cf8947c3191790bc0b657bc43aebc9d86c",
+                    "K": "76c10bb1d86d96d7eb18e298363e51f7728e113f455df7d15017940ed3541451",
+                    "result": "valid"
+                }
+            ]
+        },
+        {
+            "type": "MLKEMTest",
+            "source": {
+                "name": "CCTV/strcmp",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-1024",
+            "tests": [
+                {
+                    "tcId": 3,
+                    "flags": [
+                        "Strcmp"
+                    ],
+                    "seed": "8247c17686a8bc0b3afebe6bed1df1dc3ff7fa07c3670f624930235f20aecb4353ece11faa61f47d946ee501abb9a48029096de63b243a1794c4a760f98cc157",
+                    "ek": "a22bc758f65682632313e5c786952a5a144e9747791a4a382c74618b879e6fd8584dc42fb103c6537384906108ece36734510ab6fb5fc68baba2eb9cdb893ef0bccc0e1a90287213ebf25b4455056055993516439af9b45fb441187b2b0169734809497e24821a888b3502469af74023b376f62b03e3e00259f0540bd1163b67750f8a75eb127bec50031619c1bc362d2ab844baab68925884be574ea5d2cc8f694a37503592d2107ab47ba4258b9b3ab0eddc9c4d1402785665d783b298004feb196c48228cc3a684d6950ae688054f5acb35b09c3f290a76470f548674ddaa92ff808d7a091f7795cd75503d5d6982275c01581c1d22d491d2222e97e172809bc9d9c8c6c3875302a03901914017326440faced5bac1dcd2a9014b426f764335f31fd41a05dce58a731bb6e362a61d712303ba1ca4eb0998e507304b6f8c887254261ab4fbca4a198bac4792894a974dd203cf7c9ab58b9402f515aac64641aba6ee133572835f31b4ab6178ccf5c2a9ca875d8d9866bf8a282c49cf3174a89c415926f5155516baa34aa4c3b47af49ac7c6dc9323c45e69a47d79045d66181041da3cef619449c004bf314ef8a6a02a0819a6511dd2eb88e7336a01b947a1b5618e02865d8a9db031be34c1259fc09230f43d294baab64c5cd348563309564cc30912e672d7eb0ec43a7c8f94c89ab99bf4fb852fe661b4c37d6058312c9a7f3b33ce9103625d886869d79f98c6047555310ce6904ddc050d37b8bc872d93951b703b961773696238b890a0971e90c005cc2e75628746b599f878355df2b355153b282b4dcf7b7c3167cfb48bc6002861f5d000a373239166449a67718a1b9dbb43ce6c18a5be227e23f999c8bbb1de6441a6e1193b5176bba03c4f8c71fdda29ee18c336d120d0c331a0a622c1827166c1aa351bb7dca69d84bb9ec692ca62812fbe4a5f89a65ec5b6a6eb976658585f5a63541a23242f31022c4c44db400dd292227b3976cb741e708369370c9555297433b67da83992b1e06d791aa6faa34a040332cbac151576a51c794e2b791dc3740e0f0136fb2137685ca71b3626fb6a51d8417df2408346929685371dc1532093d38176fb8c670b7a7236bb9035923280016afb5070bb559e78a89bd6c5fc36c87e0a5443587c879aa94368ae6fa6690d38bc18274bab0b4b0f01accd95c0af0ba048a76880b8c842430c4541bdbdb267d39498fdd35907a58faab500a710742a63179d5c15fad0bace8bba301935e7b195794597a206a9ad83ca73b66c18f1a25d6813a242a4d082b646d488bc63852df5b69ef08510a657d3ba5954b6a4df752237d8c5d0a429baa14be2f824e16ca19e694de9c6251cb90958a03159914243dc5e272438e2a6500970b55390b02c3b5e52ccb7ebb2099f646f9518376417896e837c16f783ce568d59e6c6e2068892936b6e584a6d2233e7d98506b740008b6d14e29cc878170c966f80f3c76cb96d3e7665eba6067d996bdb16a45c094d8563958a1015ce833b3cac29d4bb3e970c0d7ae654451b378a1027340b5471790ea68575d200c8af88777e28a203c4b36b0512de6607436a34d83a6691882aa5f81c83649f0370be6b743140fc62db1527d220cf6b66870dc674660b5856a34766fcc66f7480c383c904fc124bc608a38246ebe835b3834487611b8d262578364f5849c94437937fa47341a318487a23129c3636f050a0d693a7cb89f36c78502487a691142ca88d8975b4a92417bed59efea73fe3892a062ba384d404887c498909212a5c913e8953c4d50d87faa6bb9c3536582e39b69cfa59240dc881fed2b9450aa1715b88805966b5e52505341f98f728ef939f7917083057a42c40ce9f364117d6b9752179f8d22c4ba3b00de31363d56ad69b92db30ae809036b93a5437598abf115496126dae81875d633e47d49c27911892a885efd78122b90712d3576d864701a469a25b34d904113629a3231b20cdd5a2ede1188e0c411e619162820ea6f1009bf17f32e36fd716098b384013e60a85572d217aa1239507efdc0604379592f66de032372589404952c87552b5c3326d4cac0172c74254b792463ca428d334ee419994eb501b07789349b1d0c16a352ac8fef45d30da79cfa53147529149bc69b594745ff86e2ba862d128410ed993d5e6b3f011342518beb7be48573d1adb2b712ebe6f7b79802ff3",
+                    "c": "001d80376f40a555c9590838e4dd953cfb9a30edf7768f0f35b298c69eb459a42e081f79b419391b14347254849f1ddeac6d03975f22c9bd0e7a27cef18432e1d42b75d3845130cec8cd2387007116f7b21f69d196eb3340a44d4b3d92b2acfa420ce4654063d0e739ffb9238990c117454ed017d33bd63bc1c2da9adc52cb0fa2dc90f6f7482e3072f4d620d65afab8e908943dd7a4e91ed4e12b9147656a8fe758abdfa2d5d2d810edb4409ab09332b9dddccdc6cabf8d89633c609a0a005af2f4fac6baf70315103825531f513f9fc9f6d088cf28b54ff6fba4725e6ee291131b778058a45ed49bea10c1aa0aed05796a3bc88a1a45bc63a01b3646521e7968bdb0eab72758a6f025411814013e123fe354484f4380a218f6f0b6876bf4a225766890ab191b6ffdf84fc19521533b58cc518a5f40d7e2861e9a51c297e3abfe8b36674a066bdbb52390b6e2c91d0a6e1ae66210f3e700344d1a75978945ac9ef7fe72a7c1f6939690cd33e11ef3a9efbb9dc3285254af07121758aad87d34a85231b63f23a6b81a2e5bd232c0138ff574417d2b1fcbde45b686ed6348da7bb2cef151285ee52f4e0e214139f812a68df69459706baf85e31a0073623c7faec1c0b99d86d34fd3a7145210c1870f37687f8d4c94849a22dd1099cd8c730969fcf8e1cc4c1af623f89bb0f2e3b6e4a4c37b6d4d7c8f66df8c384c66264e7a4b35e893cf7424642db20a844aef74a12f1dd244bd331101486babee54b326440f9f9b97e1f1a603146b42b8266a05781ec8bfff57bab186973a9b7bffa60ff246a01d2c9259950e94e9df25dca30c59890280636dee43f83510ddf7de2a5f77a78854cde70ead0943bac7895ee10d363a9334a1d502c282671161a2355f1d4be99a1f9f67e687b9851caf8a3db107940b1ab4481084f8a96053c6205a207ca19043f8d20090ef245557c6b7c1bd2065d2db7f8343acdcd9f7341491c665a8842c19e19d12ab36b01ec68c95bfd9226aa10370ea1b71f08b326f7817a96c53132d7b5004fa00ecf1d6204198fc785b05438bc687cba235e5c2211d8e1e1f211664f240c3c2e4f4a1990943ec83ad80141beceba6e31384c0aa148783872593c0ce9e002cb2af6de35845dc1fcd6e7d5da96b6e8cf3a4cab1d6490ad18203cdac1a77f608c8460d21230ac8470f841c6c17f5a1faff871c27c5a9e0e93a20b5c1e17d8f7a5c74065ab192c33d08d0c603226a01b9f5976e0f06625baa7f90554ee805d7ee242cb54d3183758bf948ea31024fa3aa368cfc8ba7df1474a4388e84e3f79617080a96ce3af88ce5e1b9ba02871c2e6a54d0fc05050295f5f9a638a63c51428bc935c7f539cdd90a5501b8832a3bea490657f026ec6745d4b30f518e6f4b2bee0afb65b34df1d81a4751aed0865b9cb01f4cdc65cab3ee1b3e988b23c0f2c63cb16e305d4c7b69a2ebac8471d6d61412004bbbd4550debbf64c49f5975df1f4bef53281fbadda4a5fb7dfa63e7261499a74c7f3af2026a997c1fdcde6c07fb3ce720a450f9de6970d6121706245e4cd2332247c6cce84085afbf7fab4f7f1fa98626646630e48e2dab8cb21661c306a22ebd7243beb7fc3c6cf57088a40d05c2381fef655c42817f1bb95de7d20f38d02fc1e3b2d6852b2a8f3a4dd4a262ada59f48482e44468c10c0506368c305ee4efc93d60adac26c13258739640890762077e771ecb57c01efbb895c65a9eb1a2c479f1ad7434377331738a2034840682de3ae673ce47e3e54172556a3a543066fd5e30473c33641ffe90144bbe15d68b5e8ab9c063f48edb3a4480356e7a7ddef32c60f0edffcf1c5fef4eb488476794f42af7b66eb01b19bfba59cacd157d485037b2c383add0cf2ff727c1056a466930e46e3f081af429a45e5ccdfe8e0f3c210474eb0156744c7d5486f761910083b6a8fba1898a52b112b96b4b3387f2f3e4000aa0854781b029e8c01f3f09f0cd361eaaa56a89b2a054a1805248e89ddc32dc8a3e53333595686e4e7b076340076a29c1c0f4f1232af35527e8d35f887e7fe524991b5b74da3b02dc26f7227595c096fd40541b86e7f0705cebd4c2a134c14e8f9eef94fa609a305e6a429f290404f1043c1666387df4bafc2308dc4eb2539c01dedc23d9c2018a9c5cdec50475a8f8ee32d9d13d79b304dcf69b949be7877fab4752b45b9ee04622123db",
+                    "K": "c6338bf92f3930b95f81d87fe669fabc42aaa549e8fecfbfdbe237d739fe4d96",
+                    "result": "valid"
+                }
+            ]
+        },
+        {
+            "type": "MLKEMEncapsTest",
+            "source": {
+                "name": "CCTV/modulus",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-512",
+            "tests": [
+                {
+                    "tcId": 4,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "012d0964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28ace3faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 5,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f21ad03faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 6,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "ff2f0964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28ace3faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 7,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f2faff3faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 8,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28ace01ada060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 9,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28ace3faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a42510d0b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 10,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28aceffafa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425d056b0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 11,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "5e240964f73d10775357e83c3b7a2249cc1b37e1cd0868489a265573f0ab48a82de563ac11a25fe312be3799701920974c3ace4c45072e7c726a51b58e110ba74b3cf23208d006354565a03c7235ad47ae3ff35ef8d7b5fda9c844362371320208663fbd724b1a83c87f929f66e8ab55a53e2a9411c2c30ef66aa2a323c686e825f2ccb92ed792d317969515a5a4f95803577c273c745f94aec7fb060102607bb7555486808e509e8bfc70cf42409e4c6d439a2c96c05dfc6404d65c128f594fa6049f5ba53d27a712f459ccd391bd9506c611d90ab80120e5b4c9cea5b1cd6b1e7efc8b0b54020068b209648681a2afbc875b44478aaa1c70e06c75854a674fd86487b37a66d0078fa53dfdc3a50be51709c2bae9a03392446c777344a3664ac2177ab7412b33ea68b8b0015b9c540850594eeb6043e7b0d7d8912ab6750331072e165bfdd201c3598a6aca457b36147afc97979c4056da81e9ec0389d959cc863dc6564f03b460ea7375ebcb4b39968a4c95ad355a9b65d684325096f28ace3faaa060875f046081ab17b1ef24103eb7b3b838c6122cb44496a61a2b8875242d49a5ace3e362881632119554fec502ad322cc9a7263812b40db6ac1a6762ec3a16e575248cf3b214321557052ea7ab55f3f40dd8107fc275cbee181d153784186a9bc6558b77f0478bc54c47535a22fc8ecd273b84e9c5acbb8d8387af4113ac88777cb9d6622f156c10744f35e99341c11b9ab12a98f13ef5914a84d94848b45ea44802a04454f6459d5bfb6208c77dba176ef5807274b8918c9a7a5c8500f15567677a5d08a78b51d07b219958bfca57a3dbad20a25e565302e3302d582515d8e444ddd6060e889f0ecb80934716ee6670c13362ab845ab56a826e199ccd38a6bc2bceecc14202826c31a353c94b61b7087e0fa2abe971705c1c1c50568cada9c727116297538993f6aa4709646985b915382ef31984399ab4e46902b01b4e196ca7aa640e499c44eef03d515194bba95e77fb998afc33697256755062f0079ac97b1dedd7557ce5c805b6b838a87e6523398f55059b316bb277a425f0ffb0611203959deb8480f9bd1d3fd6a0d8b48a3a48b94069b9562f156a431ddf9f",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                }
+            ]
+        },
+        {
+            "type": "MLKEMEncapsTest",
+            "source": {
+                "name": "CCTV/modulus",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-768",
+            "tests": [
+                {
+                    "tcId": 12,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "016d4cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 13,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d212d0e896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 14,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "ff6f4cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 15,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2ffe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 16,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bb019da8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 17,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4f18d07da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 18,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbff9fa8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 19,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8ff7da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 20,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff86501ad1d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 21,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d1513d0ade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 22,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff865ffaf1d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15837bade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 23,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "8b654cd2120d97581838192bb56463ee2b9a96e620bc7976bf3634f441ab0641ba3a904cfd4b55ba40cc6fdb906ac1a95637112c7a48dbf311d67004bb583e068b9936b32463245da31685a878a90d205162b587a322cebe475fc70186b8b52cab2c9e838873406a98574c65e83b0063d316a8654b5ef7537b487a25114c521bbfdb4780d58804c1c172cfac59b9bb8ba804a10fc6607633cc89d18bc5579d7a0825a2a72bc32869ba8518fafa522a9950ef7ab4625c417e6b6fa3f0165dd47d78ab8587f22b99abad73a90880b2b08c4876b61ca536f675b4b8a37460ad4400910d265e5146ae4be61a09c30a1de01f4636a802413fc8f051cde78e4fc51ba8f3a2cad1474775a7d7ec513a57541861702d6480c70cce8912bd2c01bf11378604005695d64c1969cf25714ae287c019da020d66af70c1528e12365fe25106e8179b04ccf0cba724fb6a89b83ca9f55012b66267337f6618484a7a70e8a1163cb17426ea132e1a56e53ab86e491e39dbbe4e4465a785106b5255dc2190d2f2bbe896a8cc64a228c2b9a8943214f97a3b40a8e41053fd4346a7fcab06fa72de8c33cca788e2e09e09dacd7034038ec13d1a065cf7d14c5de44a6d56873232ba84585b9d0811320659be5a19cdc759969a0bdeca5410977e40163dc2da6665c45954b900e3a97512897d1c7a6cc2a60acfb2175151043ae29a0d240e760c1d100a6877b5a10fb69054d0cf80dca4c15350fc685001899a7a6515e9c7ac3325938997b4387c16022a91ee5c2fa2ab8bd6fa898667831af38349fb1badb52b472210e36bca63342a0cd869a44a04a7e68859f66094d8c104c33b38444b8fb168025b479a5a7772c1bacd73b3ef88ae6fe66aab1846723c65d3d106c1722e2235ac7865a04584324062826e463edc13803c9796e54bce6b80933057abb9328ab501688e69148fbaa811ea9792316068a9abfa583e45ab6549ccb7e9e70d9139c0ebc7b995ec1463fc321f38bff2b2b995192eaa305daf1c44352371089637ed673dd82b8ad8bb3bb2299b9e5369f104a454357e5a2238e6315fa720343064be4ff8657da81d7c5c4b51c5b896669f029483f7c273f763ce26150ce3550c4ddcb26f37b2dea19b2dd197d449c9b693c10a3cb04de8c9f425a523d173240a69c4f0479bc177d836cda34b2cb64440acd464d904b66662295f0950460b710f089090b49fc7a6276e219eb4f19ee4dc12d2045141497064c4beae80a8ded00438d90a012963de54380f137666b2ab09844198ba807a4972f1b35f7b9789d847cc3e5a4a08cb17d4d9065ce09a74609ae935218c5bcd51f9bd774aa720e6423f75a974a3c21835a6018886dd119766909413aa576144c10b49c17ba1c793f78f7c580eba195bd8407f00f568c4d546c7d677dd02c78930c3e969b5584129e1815c6ce32162f09d6f7303f69c5f0216625c782666f9c8cf8678f1b63635067392aa3fba56204a1831491c2eee759ce674abd34251732949f9874059b35b66089a1905896c94111511a449f695e2c036d87b585a74834d676b9a2b2aa74a386cfa446f86934b844068147013396fa2d3bb8fa11d97b992a04a6ba65c189b238106cb8d15f3ffade3c278034d6d86bd50a3049feb37499b08aba61b38ffeaf94bc84cdb360fbc",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                }
+            ]
+        },
+        {
+            "type": "MLKEMEncapsTest",
+            "source": {
+                "name": "CCTV/modulus",
+                "version": "0.1"
+            },
+            "parameterSet": "ML-KEM-1024",
+            "tests": [
+                {
+                    "tcId": 24,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "01ed3b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 25,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738101cd0b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 26,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "ffef3b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 27,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d73810fcffb47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 28,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3017dc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 29,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b610d0094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 30,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3ff7fc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 31,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b6f0ff094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 32,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb014d04c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 33,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f14d0f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 34,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cbff4f04c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 35,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6ff4fff0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 36,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b101cd7261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 37,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13dde18d042256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 38,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1ffcf7261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddeb85542256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                },
+                {
+                    "tcId": 39,
+                    "flags": [
+                        "ModulusOverflow"
+                    ],
+                    "m": "42424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242",
+                    "ek": "0de83b18940b68a85b55309be11872c3318f89423c32a3ab705202805b0bdf7455aab06eed648c443066ed837435d593cbd1769f3a669ae414394a26b4956680c790b49b80f9b9c8d893656cd001c218789cbc91f22702ce988170093683769216057a865c5a65c54f25f166302b9b73254ad2185df37b83cbfa8aa03439e56a8a6e82410fa82be1874f6b6acc04517eea08391ba190d19cc883482b703493d9102145f55fb5f85f4ae76bca212324c4663acc0df9269b05db081f81b9ee824d4ea6bd59979c3d2ca6b4d689ada3c7f505ad02c5142afa6c48b90bb8316baf479f352066c1e3055ca319c2703ff432cdda2c4d63b45b3852811a5a26328227daeac344856b7adc4808c9ce07e737170603256a2be693cc82f22513b518f2d8974e4146dbb84e49c896adb069b8d32f27a64eabd73664b916f9a3bc7382b16914c807121fe8d351ebd361937142fc29902d1c3fdd923428f20aa9994e796ca185db9910496d7f389b2fd73074369e66f42de4234e88a1669db969f4d738106cb3b47bc07c8cacfda5b828937b6d714a4d23a92d445b7952cda7fa81351c3e431bb520294c2adcb41b31a2535bb1a7b0cc5cc3770a433d3eaa3505768c37e1adfe88b97d2c39cca6a806316cdd663d6d1c4e9e2bacb6aa9de9d52ecc4b88b55020cd45c1db192e5aa0cd631642f7a1ce1a7003648445957418cc7649ac217919b5062a4938ee025b8764015ada5bc43a788a293d7fe82abd328e7d678662db6a218b2fea5138d5808872d0c7fc31b81551906fd357e9a13178a3116c93b460b09003396fee64ad02c915911c798d588bd9f33bab01b91f20b466b89214b7436b96b837070786215dddc61df9e99459168b3c3046ef5877f165c425ec9561aaba87e384a0114973740546e59c4e1c11a45842b772547d247c19d668caaa6edf175abdf7141fd534bf953228b5766f04bd943c38eb7634f252700e2a296d1b688a73166b9c7c8a2ac48e434f0d43434548bef03b4201b943b3e357abfa8d6c8a8bb2f83f04e4a2fad8c830868a53e3c065d33a501a8b030961bbb53eb4a462b600cb094304c2337227074d8c0bade99897056c88655b9edc63515a784b85d3c8fb0910b8f71f7bca332690adcf2b6c513500e53b6dd5431e04f0b7865178d8b19200a432e61c891ab932c75c2ed093b2ef4227013445adeab06442033520643e7012bab1015c027641054c496851181b2182e741b1341d5f27b11df49046290f7b71945bb96dc32c4fb2aa44819c594a300398fc330f95698289caee444651d162c9bbbd7ce09dd595805f12cdb7b70838402eebc79cb9e2526734bf7bd45d01f7c66e9b542584a1d2811ba15a1ebf699c2d4a4aff9b9c8ce3996e498b7ffb0a4e2943c6e34fbd591046203616d6a60349285bd895a2eb6c231cae9bb87adf21c21a5abdd7e2896965c786019a4661cebed5105aa9633c4091b7c954d034429b5b5f6ce42da49cc93dc46e997170a097900e8b32fc4b5483394ad958096fec7c37c48018028c3d07917a563d2ddb967d7ac6e9e28d440121f896aea82469d3c49c2f2ac41e8c0c9834201dd9af6eb5087d048e37d1774d521399b07cd6d05f6f24b1f0c07261b03afbfb18c0e4b945e12aaf63c00822894a43a57b8514a5524db703451c7aa678d5100ffca01654c9556095b33700372a9766e9852c5255b774500a29b61aa0ac32f1bd3af61161ba437f58a330dc9d7f0c2c61054a020981a6e406eab200042b69a146387c11295815626dc9cd2ca067376a42800650fe849d67146918859d917a36dba6c0b3c52802133416b262f555186777c397ab9605cb1a35586ce125a9118a5a48566714a1757c04065ae181a8f0ce80f8a449ec9bc149a18cec1213e1213a4c2780609d9d839f4b038aed19b1cc8893a9a9277eb25be8b848fb035f04e2cf090682dc61b51b23aad4559d7fec2ba4694d710c5e0fc804585509f80a720dc84e9131097f8710d8344f4aac62b7b0696fa07c62102f6b0a9280b81f6ac185ac7c14b1f36f9de5770b65afced0ba273a5e1bd210d1d0749c49040b4b605ecc805db803b1c092ee021bb0db9ddb532f22ab87849275d2c9772a37ce4b7a4f0c9c8cf8dc0b0e5bb5bad62cd5b608dac6a282c7658be13ddef8ff42256b0eb52ccea708f6fe4295de6d4636ba419ab92618a52b673929972bef0b",
+                    "c": "",
+                    "K": "",
+                    "result": "invalid"
+                }
+            ]
+        }
+    ]
+}
diff --git a/tests/test_wycheproof_vectors.py b/tests/test_wycheproof_vectors.py
new file mode 100644 (file)
index 0000000..10d6128
--- /dev/null
@@ -0,0 +1,68 @@
+# SPDX-License-Identifier: MIT
+
+import helpers
+import os
+import pytest
+import re
+import sys
+import json
+
+import subprocess
+
+fips_kem = ["ML-KEM-512", "ML-KEM-768", "ML-KEM-1024"]
+
+ml_kem_strcmp = "Wycheproof_Vectors/mlkem_test/mlkem_test.json"
+ml_kem_modOverflow = "Wycheproof_Vectors/mlkem_test/mlkem_test.json"
+
+@helpers.filtered_test
+@pytest.mark.parametrize('kem_name', helpers.available_kems_by_name())
+def test_wpf_strcmp_vec(kem_name):
+    if not(helpers.is_kem_enabled_by_name(kem_name)): pytest.skip('Not enabled')
+    if not(kem_name in fips_kem): pytest.skip("Not supported")
+
+    with open(os.path.join('tests', ml_kem_strcmp), 'r', encoding='utf-8') as fp:
+        ml_kem_kg_wpf  = json.load(fp)
+
+        variantFound = False
+        for variant in ml_kem_kg_wpf["testGroups"]:
+            if variant["parameterSet"] == kem_name and variant["type"] == "MLKEMTest":
+                variantFound = True
+                for testCase in variant["tests"]:
+                    seed = testCase["seed"]
+                    ek = testCase["ek"]
+                    c = testCase["c"]
+                    k = testCase["K"]
+                    
+                    build_dir = helpers.get_current_build_dir_name()
+                    helpers.run_subprocess(
+                        [f'{build_dir}/tests/vectors_kem', kem_name, "strcmp", seed, ek, c, k]
+                    )
+
+        assert(variantFound == True)
+
+@helpers.filtered_test
+@pytest.mark.parametrize('kem_name', helpers.available_kems_by_name())
+def test_wpf_modOverflow_vec(kem_name):
+    if not(helpers.is_kem_enabled_by_name(kem_name)): pytest.skip('Not enabled')
+    if not(kem_name in fips_kem): pytest.skip("Not supported")
+
+    with open(os.path.join('tests', ml_kem_modOverflow), 'r', encoding='utf-8') as fp:
+        ml_kem_kg_wpf  = json.load(fp)
+
+        variantFound = False
+        for variant in ml_kem_kg_wpf["testGroups"]:
+            if variant["parameterSet"] == kem_name and variant["type"] == "MLKEMEncapsTest":
+                variantFound = True
+                for testCase in variant["tests"]:
+                    ek = testCase["ek"]
+
+                    build_dir = helpers.get_current_build_dir_name()
+                    helpers.run_subprocess(
+                        [f'{build_dir}/tests/vectors_kem', kem_name, "modOverflow", ek]
+                    )
+
+        assert(variantFound == True)
+
+if __name__ == "__main__":
+    import sys
+    pytest.main(sys.argv)
\ No newline at end of file
index 6da02555412a7fe15dc4da01795f1165d7d9948f..06b6d52338117dc47a8f5e41b1f5fb9059094e6c 100644 (file)
@@ -5,6 +5,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <stdbool.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -12,6 +13,7 @@
 
 #include <oqs/oqs.h>
 #include <oqs/sha3.h>
+#include "oqs/common.h"
 #include "system_info.c"
 
 #ifdef OQS_ENABLE_KEM_ML_KEM
@@ -437,12 +439,138 @@ cleanup:
        return ret;
 }
 
+static OQS_STATUS kem_strcmp_vector(const char *method_name,
+                                    uint8_t *seed, const uint8_t *ekExpected,
+                                    const uint8_t *c, const uint8_t *kExpected) {
+
+       uint8_t *entropy_input;
+       OQS_KEM *kem = NULL;
+       OQS_STATUS rc = OQS_ERROR;
+       void (*randombytes_init)(const uint8_t *, const uint8_t *) = NULL;
+       void (*randombytes_free)(void) = NULL;
+
+       kem = OQS_KEM_new(method_name);
+       if (kem == NULL) {
+               printf("[vectors_kem] %s was not enabled at compile-time.\n", method_name);
+               goto algo_not_enabled;
+       }
+
+       uint8_t *ek = OQS_MEM_malloc(kem->length_public_key);
+       uint8_t *dk = OQS_MEM_malloc(kem->length_secret_key);
+       uint8_t *k = OQS_MEM_malloc(kem->length_shared_secret);
+
+       if ((ek == NULL) || (k == NULL)) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: OQS_MEM_malloc failed!\n", method_name);
+               goto err;
+       }
+
+       if ((seed == NULL) || (ekExpected == NULL) || (c == NULL) || (kExpected == NULL)) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: inputs NULL!\n", method_name);
+               goto err;
+       }
+
+       if (is_ml_kem(method_name)) {
+               OQS_randombytes_custom_algorithm(&MLKEM_randombytes);
+               randombytes_init = &MLKEM_randombytes_init;
+               randombytes_free = &MLKEM_randombytes_free;
+               entropy_input = seed;
+       } else {
+               // Only ML-KEM supported
+               goto err;
+       }
+
+       randombytes_init(entropy_input, NULL);
+
+       rc = OQS_KEM_keypair(kem, ek, dk);
+       if (rc != OQS_SUCCESS) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: OQS_KEM_keypair failed!\n", method_name);
+               goto err;
+       }
+
+       // check ek
+       if (memcmp(ek, ekExpected, kem->length_public_key)) {
+               goto err;
+       }
+
+       // perform decapsulation
+       rc = OQS_KEM_decaps(kem, k, c, dk);
+       if (rc != OQS_SUCCESS) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: OQS_KEM_encaps failed!\n", method_name);
+               goto err;
+       }
+
+       // check k
+       if (memcmp(k, kExpected, kem->length_shared_secret)) {
+               goto err;
+       }
+
+       goto cleanup;
+
+err:
+       rc = OQS_ERROR;
+       goto cleanup;
+
+algo_not_enabled:
+       rc = OQS_SUCCESS;
+
+cleanup:
+       if (kem != NULL) {
+               OQS_MEM_secure_free(ek, kem->length_public_key);
+               OQS_MEM_secure_free(dk, kem->length_secret_key);
+               OQS_MEM_secure_free(k, kem->length_shared_secret);
+       }
+       if (randombytes_free != NULL) {
+               randombytes_free();
+       }
+       OQS_KEM_free(kem);
+       return rc;
+}
+
+static OQS_STATUS kem_modOverflow_vector(const char *method_name, const uint8_t *ek) {
+       OQS_KEM *kem = NULL;
+       OQS_STATUS ret = OQS_ERROR;
+
+       kem = OQS_KEM_new(method_name);
+       if (kem == NULL) {
+               printf("[vectors_kem] %s was not enabled at compile-time.\n", method_name);
+               goto algo_not_enabled;
+       }
+
+       if (ek == NULL) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: inputs NULL!\n", method_name);
+               goto err;
+       }
+
+#ifdef OQS_ENABLE_KEM_ML_KEM
+       if (true == sanityCheckPK(ek, kem->length_public_key, method_name)) {
+               fprintf(stderr, "[vectors_kem] %s ERROR: Modulus flow not detected !\n", method_name);
+               goto err;
+       }
+       ret = 0;
+#endif //OQS_ENABLE_KEM_ML_KEM
+
+       goto cleanup;
+
+err:
+       ret = OQS_ERROR;
+       goto cleanup;
+
+algo_not_enabled:
+       ret = OQS_SUCCESS;
+
+cleanup:
+       if (kem != NULL) {
+               OQS_KEM_free(kem);
+       }
+       return ret;
+}
+
 int main(int argc, char **argv) {
        OQS_STATUS rc = OQS_SUCCESS;
 
        OQS_init();
 
-       if (argc != 6 && argc != 7) {
+       if (argc != 4 && argc != 6 && argc != 7) {
                fprintf(stderr, "Usage: vectors_kem algname testname [testargs]\n");
                for (size_t i = 0; i < OQS_KEM_algs_length; i++) {
                        if (i > 0) {
@@ -454,6 +582,7 @@ int main(int argc, char **argv) {
                printf("\n");
                print_system_info();
                OQS_destroy();
+
                return EXIT_FAILURE;
        }
 
@@ -470,6 +599,13 @@ int main(int argc, char **argv) {
        char *encdec_val_k;
        char *encdec_val_c;
 
+       char *strcmp_seed;
+       char *strcmp_ek;
+       char *strcmp_c;
+       char *strcmp_k;
+
+       char *modOverflow_ek;
+
        uint8_t *prng_output_stream_bytes = NULL;
        uint8_t *kg_pk_bytes = NULL;
        uint8_t *kg_sk_bytes = NULL;
@@ -482,6 +618,13 @@ int main(int argc, char **argv) {
        uint8_t *encdec_val_k_bytes = NULL;
        uint8_t *encdec_val_c_bytes = NULL;
 
+       uint8_t *strcmp_seed_bytes = NULL;
+       uint8_t *strcmp_ek_bytes = NULL;
+       uint8_t *strcmp_c_bytes = NULL;
+       uint8_t *strcmp_k_bytes = NULL;
+
+       uint8_t *modOverflow_ek_bytes = NULL;
+
        OQS_KEM *kem = OQS_KEM_new(alg_name);
        if (kem == NULL) {
                printf("[vectors_kem] %s was not enabled at compile-time.\n", alg_name);
@@ -575,6 +718,60 @@ int main(int argc, char **argv) {
                hexStringToByteArray(encdec_val_c, encdec_val_c_bytes);
 
                rc = kem_vector_encdec_val(alg_name, encdec_val_sk_bytes, encdec_val_c_bytes, encdec_val_k_bytes);
+       } else if (!strcmp(test_name, "strcmp")) {
+               strcmp_seed = argv[3]; // d || z : both should be 32 bytes each as per FIPS-203
+               strcmp_ek = argv[4];
+               strcmp_c = argv[5];
+               strcmp_k = argv[6];
+
+               if (strlen(strcmp_seed) != 128 ||
+                       strlen(strcmp_ek) != 2 * kem->length_public_key ||
+                       strlen(strcmp_c) != 2 * kem->length_ciphertext ||
+                       strlen(strcmp_k) != 2 * kem->length_shared_secret) {
+                       rc = OQS_ERROR;
+                       goto err;
+               }
+
+               size_t seedSize = strlen(strcmp_seed);
+               strcmp_seed_bytes = OQS_MEM_malloc(seedSize / 2);
+               strcmp_ek_bytes = OQS_MEM_malloc(kem->length_public_key);
+               strcmp_c_bytes = OQS_MEM_malloc(kem->length_ciphertext);
+               strcmp_k_bytes = OQS_MEM_malloc(kem->length_shared_secret);
+
+               if ((strcmp_seed_bytes == NULL) || (strcmp_ek_bytes == NULL) ||
+                       (strcmp_c_bytes == NULL) || (strcmp_k_bytes == NULL)) {
+                       fprintf(stderr, "[vectors_kem] ERROR: OQS_MEM_malloc failed!\n");
+                       rc = OQS_ERROR;
+                       goto err;
+               }
+
+               hexStringToByteArray(strcmp_seed, strcmp_seed_bytes);
+               hexStringToByteArray(strcmp_ek, strcmp_ek_bytes);
+               hexStringToByteArray(strcmp_c, strcmp_c_bytes);
+               hexStringToByteArray(strcmp_k, strcmp_k_bytes);
+
+
+               rc = kem_strcmp_vector(alg_name, strcmp_seed_bytes, strcmp_ek_bytes, strcmp_c_bytes, strcmp_k_bytes);
+       } else if (!strcmp(test_name, "modOverflow")) {
+               modOverflow_ek = argv[3]; // d || z : both should be 32 bytes each as per FIPS-203
+
+               if (strlen(modOverflow_ek) != 2 * kem->length_public_key) {
+                       rc = OQS_ERROR;
+                       goto err;
+               }
+
+               modOverflow_ek_bytes = OQS_MEM_malloc(kem->length_public_key);
+
+               if (modOverflow_ek_bytes == NULL) {
+                       fprintf(stderr, "[vectors_kem] ERROR: OQS_MEM_malloc failed!\n");
+                       rc = OQS_ERROR;
+                       goto err;
+               }
+
+               hexStringToByteArray(modOverflow_ek,  modOverflow_ek_bytes);
+
+
+               rc = kem_modOverflow_vector(alg_name, modOverflow_ek_bytes);
        } else {
                printf("[vectors_kem] %s only keyGen supported!\n", alg_name);
        }
@@ -596,6 +793,13 @@ err:
                OQS_MEM_secure_free(encdec_val_sk_bytes, kem->length_secret_key);
        }
 
+       OQS_MEM_insecure_free(strcmp_seed_bytes);
+       OQS_MEM_insecure_free(strcmp_ek_bytes);
+       OQS_MEM_insecure_free(strcmp_c_bytes);
+       OQS_MEM_insecure_free(strcmp_k_bytes);
+
+       OQS_MEM_insecure_free(modOverflow_ek_bytes);
+
        OQS_KEM_free(kem);
 
        OQS_destroy();
@@ -606,3 +810,19 @@ err:
                return EXIT_SUCCESS;
        }
 }
+
+
+// int main(void)
+// {
+//  char *kemName = "ML-KEM-512";
+//  char *type = "strcmp";
+//  char *seed = "a3896e30892230a6c1dff667f8caee759ff84a08e3462ae484fcbca9971d7959cdc6c5ec65f10a5a24b5145aac863232ee3b2229ca3a6c4b9c8a2dafc315d9d4";
+//  char *ek = "871b108fd980108768612345f2fc7317216f55576f914c3ede67878ea89046d636572ca78fd67a4efc9b68e462853b2ae8dab001b6059c390916fccf45bba50b85b7e12504ef931c52030a4efb31ce978866ea0bece660b16700d9ca4fb8eca335cb2395478e6bf845eba6161765c479e0a3c0b64773b0a8f9191789e0b939cbbce7f80317e569a96c7c3ba2596aabca4298c2383ab539a05232f990af03b936d18cb6378363523ccdb75ef237ccf9774776ba0e219c97726c6f82b3168e49081d7b358f6c2dda287796a99775e60de716ae28385b8270451b3a2b8dbb267a8a37266c70718ac30303cad7e5908d0b09897bbfb18c25975bc9f46909df4b3451dbca7a3498eb253bb4246721685b762086b903b6f6a86b2db894cd59567ac9b18a82c5fa67306ef3cd7aa5c82d46aa73111f837c2eadca7b1bf6ba81f769e0530d44b21f5ab161a159014c14ad7292b638b86e548a5c0de9300df1416e619afbb01a77588cd3e1a17546be6af108f8d3ad87429f6dba298d8119a4594310f874def0a9f3f5a20748cde73218e91b428a629e6cb24e611300d9155f6d16c6398b7d2615a0bf486b9ac1c32be69b2212baff1c5ccbb0c247075536f2bc28caa954064bf5f3963060ada289ab5a58628959347356a7ba4c84051a65547a3b56a738eb9acc0d62213cf1291006a502ec7296b42e989905a08393278480290887958c4155a975d37194d25b146344b012318a3aa98060c64946191a871408f6a0917cab9227b956e4dc8081c96b50927944381631237302a0c960a33678a268f2139ca0b5b44203863cba6d2ab37c78b369a4ba5256e173a274567b536cb0d5b6d47b3d8ad738fc022792112a4ca09389b9c1317b2342a5c4a444c73f36468529806842b5297482fb001ceb28b1be8299e612985957bf7ac16cf7e609fe532a33f25690186616762c680b1cb1e986c5f55c37a49bc32219faa8ada839937ac56f7587ac51a12abfc8be413a9b915b4c455ab1e2dba776dc8633083646f7cd95437b129095e75510dff58fa4cc6c3f4531211a3a161418b7da4e6ec8388b0197993898783d963d109590d4ac0092189baabef63fcc3df15b0ab3099078c9580b198e11";
+//  char *c = "00ec7fcdb617629fead7f43cf59a7d3a0b946b5c5f472407812c15c44249e52974483eb31fb6ce5e15728708ef24f78bb61bb5c8b6ebb4e8a96e5b898e069c499c44a57efb0907234597e810f4de40d85d6eacd775b83400937ac863cfe5d406469b8d3ca4f6dbe0aced60fbecb32588f1ddaaa08ba5c5b177ab51b548d8ae2218eb2d9b02b31cb4bb6e7754b6a74856316ad3e0394025f750412023a74ab851fc03171cada993c6469fa254b5d384edab1efe8f2efb6eba37c7ba7434bb243331938849114ad398cf91038fb96c30a712f47e1c7183956838d487016f023bd9900a94c606edaa42bf0e67f2aedd03f5a581e55af29e24af061ba73da64c3869d7598a0c95c3c8330ecb4481cab2c85ccaaa366f99f3bafc980362f4d701a233d0967ded78e4f1874b42cda774b888d31f1671d6567d1636d5b2bcc117e2a256f343541c3e173e900b6d6c71bcd55479d23dee6b54e2fe32303c7955fa5f567894605ed75e65e54858222c0d065ba9231fcd82ab86af63c242d10d1d30b4176e2bb8169fbd7f03cfa044098853382083284ef8cecf05f9d0bd3d9af84f6df551e3d11e9281794d36a619f61e47901ea0dd695782241250f0b5c2a20d76d3afefcb11d015179d6a9a74121c448e315f507cb29add40da4eb05cae27320c4b18a25d7af24ac7b0bdf7382143d4d02db3e7d016f9ff5638e0df7968f785ac8000c7545a1a70d6fd43cc3ba28d82e9eb6ccb391e094ba85a49ad6e9f8fd8faa9954062a5df13c69847bee485bc6624b40b8128fe911231b4ef9b4a22ced4f8140df65a5b8180665128273fde02955a65921f0d1be139fbe1edf0ac01db1d2a5ffd95d63d33b0a7627cab4bcd37647238c80197d4fa88a7e34d4caa066dba2ae6fefff6a1e804a72d49ed443c29b2db313fdf25d98d0dee992befc4572f8b1eee0db7227b6e202ef69ea8340ae3690fc064d3edfd8d067934db3061767e4857e805e888294efa7248743fcaa1e01acdaf491de408c58869bc9624c951103c079793be1edfa9442df4dece40eabb99e9b01410fc0108b26a13cd424cd9a9de5bafa1fc";
+//  char *k = "cf3bcfeb2679cb43658fcdcd01aa1505bcea1e72a165ccac7bfb66d9dc0c0e90";
+
+//  int argc = 7;
+//  char *argv[7] = {"",kemName,type,seed,ek,c,k};
+
+//  return func(argc,argv);
+// }