Skip to content

Commit 8a02741

Browse files
committed
ML-KEM: add strcmp test vectors from CCTV
Generator, for posterity. package main import ( "crypto/rand" "fmt" kem "github.com/cloudflare/circl/kem/mlkem/mlkem512" // or -768, or -1024 cpapke "github.com/cloudflare/circl/pke/kyber/kyber512" // or -768, or -1024 "golang.org/x/crypto/sha3" ) func main() { seed := make([]byte, 64) rand.Read(seed) fmt.Printf("seed: %x\n", seed) pk, sk := cpapke.NewKeyFromSeedMLKEM(seed[:cpapke.KeySeedSize]) ppk := make([]byte, cpapke.PublicKeySize) pk.Pack(ppk) fmt.Printf("ek: %x\n", ppk) hpk := sha3.Sum256(ppk) for { ct := make([]byte, cpapke.CiphertextSize) rand.Read(ct[1:]) m := make([]byte, 32) sk.DecryptTo(m, ct) g := sha3.New512() g.Write(m) g.Write(hpk[:]) j := g.Sum(nil) ct2 := make([]byte, cpapke.CiphertextSize) pk.EncryptTo(ct2, m, j[32:]) if ct2[0] == 0 { fmt.Printf("ct: %x\n", ct) _, sk := kem.NewKeyFromSeed(seed) K := make([]byte, 32) sk.DecapsulateTo(K, ct) fmt.Printf("K: %x\n", K) break } } } -- go.mod -- module c2sp.org/CCTV/ML-KEM/strcmp go 1.24.1 require ( github.com/cloudflare/circl v1.6.0 golang.org/x/crypto v0.11.1-0.20230711161743-2e82bdd1719d ) require golang.org/x/sys v0.10.0 // indirect
1 parent 423360c commit 8a02741

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed

testvectors_v1/mlkem_test.json

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
{
2+
"algorithm": "ML-KEM",
3+
"schema": "mlkem_test_schema.json",
4+
"numberOfTests": 3,
5+
"notes": {
6+
"Strcmp": {
7+
"bugType": "CAN_OF_WORMS",
8+
"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."
9+
}
10+
},
11+
"testGroups": [
12+
{
13+
"type": "MLKEMTest",
14+
"source": {
15+
"name": "CCTV/strcmp",
16+
"version": "0.1"
17+
},
18+
"parameterSet": "ML-KEM-512",
19+
"tests": [
20+
{
21+
"tcId": 1,
22+
"flags": [
23+
"Strcmp"
24+
],
25+
"seed": "a3896e30892230a6c1dff667f8caee759ff84a08e3462ae484fcbca9971d7959cdc6c5ec65f10a5a24b5145aac863232ee3b2229ca3a6c4b9c8a2dafc315d9d4",
26+
"ek": "871b108fd980108768612345f2fc7317216f55576f914c3ede67878ea89046d636572ca78fd67a4efc9b68e462853b2ae8dab001b6059c390916fccf45bba50b85b7e12504ef931c52030a4efb31ce978866ea0bece660b16700d9ca4fb8eca335cb2395478e6bf845eba6161765c479e0a3c0b64773b0a8f9191789e0b939cbbce7f80317e569a96c7c3ba2596aabca4298c2383ab539a05232f990af03b936d18cb6378363523ccdb75ef237ccf9774776ba0e219c97726c6f82b3168e49081d7b358f6c2dda287796a99775e60de716ae28385b8270451b3a2b8dbb267a8a37266c70718ac30303cad7e5908d0b09897bbfb18c25975bc9f46909df4b3451dbca7a3498eb253bb4246721685b762086b903b6f6a86b2db894cd59567ac9b18a82c5fa67306ef3cd7aa5c82d46aa73111f837c2eadca7b1bf6ba81f769e0530d44b21f5ab161a159014c14ad7292b638b86e548a5c0de9300df1416e619afbb01a77588cd3e1a17546be6af108f8d3ad87429f6dba298d8119a4594310f874def0a9f3f5a20748cde73218e91b428a629e6cb24e611300d9155f6d16c6398b7d2615a0bf486b9ac1c32be69b2212baff1c5ccbb0c247075536f2bc28caa954064bf5f3963060ada289ab5a58628959347356a7ba4c84051a65547a3b56a738eb9acc0d62213cf1291006a502ec7296b42e989905a08393278480290887958c4155a975d37194d25b146344b012318a3aa98060c64946191a871408f6a0917cab9227b956e4dc8081c96b50927944381631237302a0c960a33678a268f2139ca0b5b44203863cba6d2ab37c78b369a4ba5256e173a274567b536cb0d5b6d47b3d8ad738fc022792112a4ca09389b9c1317b2342a5c4a444c73f36468529806842b5297482fb001ceb28b1be8299e612985957bf7ac16cf7e609fe532a33f25690186616762c680b1cb1e986c5f55c37a49bc32219faa8ada839937ac56f7587ac51a12abfc8be413a9b915b4c455ab1e2dba776dc8633083646f7cd95437b129095e75510dff58fa4cc6c3f4531211a3a161418b7da4e6ec8388b0197993898783d963d109590d4ac0092189baabef63fcc3df15b0ab3099078c9580b198e11",
27+
"c": "00ec7fcdb617629fead7f43cf59a7d3a0b946b5c5f472407812c15c44249e52974483eb31fb6ce5e15728708ef24f78bb61bb5c8b6ebb4e8a96e5b898e069c499c44a57efb0907234597e810f4de40d85d6eacd775b83400937ac863cfe5d406469b8d3ca4f6dbe0aced60fbecb32588f1ddaaa08ba5c5b177ab51b548d8ae2218eb2d9b02b31cb4bb6e7754b6a74856316ad3e0394025f750412023a74ab851fc03171cada993c6469fa254b5d384edab1efe8f2efb6eba37c7ba7434bb243331938849114ad398cf91038fb96c30a712f47e1c7183956838d487016f023bd9900a94c606edaa42bf0e67f2aedd03f5a581e55af29e24af061ba73da64c3869d7598a0c95c3c8330ecb4481cab2c85ccaaa366f99f3bafc980362f4d701a233d0967ded78e4f1874b42cda774b888d31f1671d6567d1636d5b2bcc117e2a256f343541c3e173e900b6d6c71bcd55479d23dee6b54e2fe32303c7955fa5f567894605ed75e65e54858222c0d065ba9231fcd82ab86af63c242d10d1d30b4176e2bb8169fbd7f03cfa044098853382083284ef8cecf05f9d0bd3d9af84f6df551e3d11e9281794d36a619f61e47901ea0dd695782241250f0b5c2a20d76d3afefcb11d015179d6a9a74121c448e315f507cb29add40da4eb05cae27320c4b18a25d7af24ac7b0bdf7382143d4d02db3e7d016f9ff5638e0df7968f785ac8000c7545a1a70d6fd43cc3ba28d82e9eb6ccb391e094ba85a49ad6e9f8fd8faa9954062a5df13c69847bee485bc6624b40b8128fe911231b4ef9b4a22ced4f8140df65a5b8180665128273fde02955a65921f0d1be139fbe1edf0ac01db1d2a5ffd95d63d33b0a7627cab4bcd37647238c80197d4fa88a7e34d4caa066dba2ae6fefff6a1e804a72d49ed443c29b2db313fdf25d98d0dee992befc4572f8b1eee0db7227b6e202ef69ea8340ae3690fc064d3edfd8d067934db3061767e4857e805e888294efa7248743fcaa1e01acdaf491de408c58869bc9624c951103c079793be1edfa9442df4dece40eabb99e9b01410fc0108b26a13cd424cd9a9de5bafa1fc",
28+
"K": "cf3bcfeb2679cb43658fcdcd01aa1505bcea1e72a165ccac7bfb66d9dc0c0e90",
29+
"result": "valid"
30+
}
31+
]
32+
},
33+
{
34+
"type": "MLKEMTest",
35+
"source": {
36+
"name": "CCTV/strcmp",
37+
"version": "0.1"
38+
},
39+
"parameterSet": "ML-KEM-768",
40+
"tests": [
41+
{
42+
"tcId": 2,
43+
"flags": [
44+
"Strcmp"
45+
],
46+
"seed": "cbfc4405d1b2a3a386c94c25e0f2d5f5ee92cb0388ff4d6aa04223086d51c3fd24752da14c9fc3b8ae0d9e4a8b1016b8d8fc69e229c03ea2ef08a4ae0cffc37f",
47+
"ek": "8b9a7354e8c1c17a9898f96caf99bba1c625ae0983c4d26e60c12f59bc25d756182b17979e713fff129e6c336a2317770380858129cb91a902ea5455ca076c20e4158f393aa2783053d8acf92c3286a10436d72af3e8903ce22f8cbab18b1309aca205aa8a3da45807e5b60e6967a640a713a5b81b0d82bc406934e3c88910cc06f09a68bce991009bb56ae233296218ff5baf1f475390b8b7494a4e083645985437f2495a073222fea058e1672034151a2e14c2cbcb4ad9068c8e7bcb02886c4087c14bd8823ec66393fb2e12326b38e655dcab1c13cb2931358715c8be5153293229cc994a5702b7295a6a4a73249ac5a30a32a6b91dca768c177d8fa59054e548bee40257db6962a83b64ec6de0d3be7b1812c5d99e7a38cf54eaa8413aa0bd02bf374461f29c2b6aea56f7d33e10dbbc75bb1bf6b555213aac33e652443a186a618b6e9a293919693f1673ea159d0ee52c92d53e9a5cbd5f4c44419b5493f0286efcb9b5a2ad56a713c4f61ed431aa987805a90475391ccd4c7a28d884bf1a926b7675b9208897a89a6384c154acca3521c32a994949b2e80b2ff2518c0bbd34184cda443de498a05dfba9ce701bb914179a0188be0bcda6fbc2cd93afb042481b4a84d821160a1b0ade8bcb97dbaf681547cce0bca674151a261a21aa04fda318c921c38425b775b995cd7b4eb6369f0b211da186594de815fa3b53a68043e1946468a5899b90578ad49397306f71acab67c258fa17a31893b72d22151ce1afee150fe550bffde8a24fe4740dd43f387c7ad20b5cca5997879536c3071574901147727341c1a6fc8043e6454903e88217f0c92b9a4ac54a86e7909390878a35ba18c1e26b13049f41c522bc049d74db6f76caba39f23d8f07abc26a07a1caba71cb5c12fbc20a715450b2228d17b2ba985cfe2496b033b55f300baf992964388a5422298f627ba567730ddb03a195806a5c23a1d315481c52814b0681ea3c804b02c90688c2fbbce9b17d230a42f8b865417c9e93347f5ff624879962747c7eed886acd48a994b22064ca499c69aa4825be60260d12f63102799828b3ccebaa4340b749605017eb4598ff13a634500a48470de9078a34106267d25a0b144d8cdb1a4d527692153da013c0ab27ae2ca955e7c66238746022d50630892933a05c283a9f4c00c9f984646f75471081722ed3404ce60fed4a06702b8728b62d920b3224206ab0a4694f9c18e3162b529c16af04b87b4a61cd53a757906d67a139629585d423a3b0986f29c95984e2095ea4608784b0b31c20cbc36cfd60b773389fe5a8c0958211a35b2c45f21f51a08693c19bfc388c2d677a214ccc5a7cb0b67030fd6987503c91b0f2646985a9048489dd882bd4141f5419554eb738fa7333c5c57a4ce5541fd6b8ad454c2dea67ad1c6f848c0a44a1872e40a17d987075d762ba5aaa21d435dd079b989a8ee21a2ce898934a98a02d5b381c302a2d76948fa65de15666f57750d580ae1a541c700692dd0b0a6799b5cdb893413bb89bb65182f219a4bc3c80b43bb591bcd05ac6e9a366552558ed5c5fbe7b4acfc7b23372094f6a87f26c0c46646c55a888871324fea7536e586a5149b9b707c86ea076486a6822b9bbf59fbfcaedc13284b9813cabdd526e326a6832d3b36efc3102ef",
48+
"c": "00e96c44eb5f5380d80b4cb05d608971a28fbe838b912b558bf9676c6c67c9692ed6ea063fc47b70d5d6004825c269b9cb8e68b5728d67f44844d97686a11154e3cbd4a6f9e47524d93d851bdce480d7762ded09be53d17cce3ee28dc5a06911c062b99b218355dd5822108c55e2c67f7ea0b74b6189b33b4589d8ff9d0c867d13edaaf1c5f724675320beda3e6acc673c048fa04a1b30f899227d5a555e08a412a47b7db75eb118a8844a71b186880426f6bb6e77186d18e753cbcce93c9fb76c729875b4d473eeca8dab9941969faef04df9ce3178e7341eab416d28bb7aee12bfb8f4c3df814eff45a0187329079acfc41a8e8dba7b08d111f02e37a1d2b69e57eef808fcc6ae23385534a420a93dfb6a95c73e2f1016177c4fe9d3ced769e277293aaceded6d07efc7890eaa885bd1e73f9e5da2b9cfda0d44cbc9090705ac2ce3e7bcd7775b593c706e45ddc97d3a65d9b7e73673f9473df5bfec689671f73e7f6ee77c730a8ebda1f0b2c112a71904d6f28a51d8d479f8323fb485e722f5c4d5857e95989a9cbaf273efd04fc3cbde98baa9969e095e88accecfbd12ef2155497a5b15fe91a70d1106b91a568363bfc2d6736cc8138cbc41ddf1e54fd40511e27d89e2c26c027b63c156e2bbb998faaed3d72186f0cc626dad39a782dcda2087fd13a9498e10b41b685646a227ea1166a5632c195983f4aba2b718b4074030d57126d34c38349892007acbea9e393b967dc3146b270f080a1f0bee90d65a095a6352a7718ed1717a8025a2bd38c66d120baf4247676a1fe044a57ce268c078f8ff46cc26fe4f9c7a03d6467adacb8418d26273662bce1f7bc00b906e0088e95dc0fb419e2232e85aac77b9e7cd563e604de5e1d3e9693dcd3b19865cf4250773691e7e0af9c2755cd31f49d1f96708f3ba2f0b98184525abb869e12d5cea0ac1740181a875035300b05a54b8d42ee3b4ae92b06e43cd807e2b096c977f23c61ef8c989c52ed83754076dea1323f639250bef61bdf903bf7961cec89ba6942d9d0647ac9c8195d93ed8abcedf25754644035719a5a0a1c8c0798912726a9a8258e4c10ae7485322ed9ba331f6f090c4b492a4fcf53d753cd34f28ec0443fce0724f43c89a3942169d5099a8f7430f38691ebce2e3fe4f600d82c7ccedf60673f8e5d4c1a9f84b8b5b23f5ed63defb6a7205e0a8b105bdc6ff4568fc78cb4456b02fedb7f4c48f6fd6b69216a3319821039db40e19a31a0b0c9d471d5a7a73865d26f8be3595525b1ec4a8579efd07ea98e2602e2bffdfd8febc5c7b4c736d326b5030ccc6faf9420a9c156a8f4516b9fff675459dfdcd4ef85d7adbdffd60f4a39628e399cc752c2e99ab2f431dc765e7c9d206bfe32649fbef4ef48b1d7936fc74766d724350ee2245a8d5f23fbc6c7ed8b57168ce1e864e49d7f8c475dcda140bd42473825b3c72eb8c54780188813011e1962a503f9b516e13226de6375b204733b0192183c8f55e870e61cf8947c3191790bc0b657bc43aebc9d86c",
49+
"K": "76c10bb1d86d96d7eb18e298363e51f7728e113f455df7d15017940ed3541451",
50+
"result": "valid"
51+
}
52+
]
53+
},
54+
{
55+
"type": "MLKEMTest",
56+
"source": {
57+
"name": "CCTV/strcmp",
58+
"version": "0.1"
59+
},
60+
"parameterSet": "ML-KEM-1024",
61+
"tests": [
62+
{
63+
"tcId": 3,
64+
"flags": [
65+
"Strcmp"
66+
],
67+
"seed": "8247c17686a8bc0b3afebe6bed1df1dc3ff7fa07c3670f624930235f20aecb4353ece11faa61f47d946ee501abb9a48029096de63b243a1794c4a760f98cc157",
68+
"ek": "a22bc758f65682632313e5c786952a5a144e9747791a4a382c74618b879e6fd8584dc42fb103c6537384906108ece36734510ab6fb5fc68baba2eb9cdb893ef0bccc0e1a90287213ebf25b4455056055993516439af9b45fb441187b2b0169734809497e24821a888b3502469af74023b376f62b03e3e00259f0540bd1163b67750f8a75eb127bec50031619c1bc362d2ab844baab68925884be574ea5d2cc8f694a37503592d2107ab47ba4258b9b3ab0eddc9c4d1402785665d783b298004feb196c48228cc3a684d6950ae688054f5acb35b09c3f290a76470f548674ddaa92ff808d7a091f7795cd75503d5d6982275c01581c1d22d491d2222e97e172809bc9d9c8c6c3875302a03901914017326440faced5bac1dcd2a9014b426f764335f31fd41a05dce58a731bb6e362a61d712303ba1ca4eb0998e507304b6f8c887254261ab4fbca4a198bac4792894a974dd203cf7c9ab58b9402f515aac64641aba6ee133572835f31b4ab6178ccf5c2a9ca875d8d9866bf8a282c49cf3174a89c415926f5155516baa34aa4c3b47af49ac7c6dc9323c45e69a47d79045d66181041da3cef619449c004bf314ef8a6a02a0819a6511dd2eb88e7336a01b947a1b5618e02865d8a9db031be34c1259fc09230f43d294baab64c5cd348563309564cc30912e672d7eb0ec43a7c8f94c89ab99bf4fb852fe661b4c37d6058312c9a7f3b33ce9103625d886869d79f98c6047555310ce6904ddc050d37b8bc872d93951b703b961773696238b890a0971e90c005cc2e75628746b599f878355df2b355153b282b4dcf7b7c3167cfb48bc6002861f5d000a373239166449a67718a1b9dbb43ce6c18a5be227e23f999c8bbb1de6441a6e1193b5176bba03c4f8c71fdda29ee18c336d120d0c331a0a622c1827166c1aa351bb7dca69d84bb9ec692ca62812fbe4a5f89a65ec5b6a6eb976658585f5a63541a23242f31022c4c44db400dd292227b3976cb741e708369370c9555297433b67da83992b1e06d791aa6faa34a040332cbac151576a51c794e2b791dc3740e0f0136fb2137685ca71b3626fb6a51d8417df2408346929685371dc1532093d38176fb8c670b7a7236bb9035923280016afb5070bb559e78a89bd6c5fc36c87e0a5443587c879aa94368ae6fa6690d38bc18274bab0b4b0f01accd95c0af0ba048a76880b8c842430c4541bdbdb267d39498fdd35907a58faab500a710742a63179d5c15fad0bace8bba301935e7b195794597a206a9ad83ca73b66c18f1a25d6813a242a4d082b646d488bc63852df5b69ef08510a657d3ba5954b6a4df752237d8c5d0a429baa14be2f824e16ca19e694de9c6251cb90958a03159914243dc5e272438e2a6500970b55390b02c3b5e52ccb7ebb2099f646f9518376417896e837c16f783ce568d59e6c6e2068892936b6e584a6d2233e7d98506b740008b6d14e29cc878170c966f80f3c76cb96d3e7665eba6067d996bdb16a45c094d8563958a1015ce833b3cac29d4bb3e970c0d7ae654451b378a1027340b5471790ea68575d200c8af88777e28a203c4b36b0512de6607436a34d83a6691882aa5f81c83649f0370be6b743140fc62db1527d220cf6b66870dc674660b5856a34766fcc66f7480c383c904fc124bc608a38246ebe835b3834487611b8d262578364f5849c94437937fa47341a318487a23129c3636f050a0d693a7cb89f36c78502487a691142ca88d8975b4a92417bed59efea73fe3892a062ba384d404887c498909212a5c913e8953c4d50d87faa6bb9c3536582e39b69cfa59240dc881fed2b9450aa1715b88805966b5e52505341f98f728ef939f7917083057a42c40ce9f364117d6b9752179f8d22c4ba3b00de31363d56ad69b92db30ae809036b93a5437598abf115496126dae81875d633e47d49c27911892a885efd78122b90712d3576d864701a469a25b34d904113629a3231b20cdd5a2ede1188e0c411e619162820ea6f1009bf17f32e36fd716098b384013e60a85572d217aa1239507efdc0604379592f66de032372589404952c87552b5c3326d4cac0172c74254b792463ca428d334ee419994eb501b07789349b1d0c16a352ac8fef45d30da79cfa53147529149bc69b594745ff86e2ba862d128410ed993d5e6b3f011342518beb7be48573d1adb2b712ebe6f7b79802ff3",
69+
"c": "001d80376f40a555c9590838e4dd953cfb9a30edf7768f0f35b298c69eb459a42e081f79b419391b14347254849f1ddeac6d03975f22c9bd0e7a27cef18432e1d42b75d3845130cec8cd2387007116f7b21f69d196eb3340a44d4b3d92b2acfa420ce4654063d0e739ffb9238990c117454ed017d33bd63bc1c2da9adc52cb0fa2dc90f6f7482e3072f4d620d65afab8e908943dd7a4e91ed4e12b9147656a8fe758abdfa2d5d2d810edb4409ab09332b9dddccdc6cabf8d89633c609a0a005af2f4fac6baf70315103825531f513f9fc9f6d088cf28b54ff6fba4725e6ee291131b778058a45ed49bea10c1aa0aed05796a3bc88a1a45bc63a01b3646521e7968bdb0eab72758a6f025411814013e123fe354484f4380a218f6f0b6876bf4a225766890ab191b6ffdf84fc19521533b58cc518a5f40d7e2861e9a51c297e3abfe8b36674a066bdbb52390b6e2c91d0a6e1ae66210f3e700344d1a75978945ac9ef7fe72a7c1f6939690cd33e11ef3a9efbb9dc3285254af07121758aad87d34a85231b63f23a6b81a2e5bd232c0138ff574417d2b1fcbde45b686ed6348da7bb2cef151285ee52f4e0e214139f812a68df69459706baf85e31a0073623c7faec1c0b99d86d34fd3a7145210c1870f37687f8d4c94849a22dd1099cd8c730969fcf8e1cc4c1af623f89bb0f2e3b6e4a4c37b6d4d7c8f66df8c384c66264e7a4b35e893cf7424642db20a844aef74a12f1dd244bd331101486babee54b326440f9f9b97e1f1a603146b42b8266a05781ec8bfff57bab186973a9b7bffa60ff246a01d2c9259950e94e9df25dca30c59890280636dee43f83510ddf7de2a5f77a78854cde70ead0943bac7895ee10d363a9334a1d502c282671161a2355f1d4be99a1f9f67e687b9851caf8a3db107940b1ab4481084f8a96053c6205a207ca19043f8d20090ef245557c6b7c1bd2065d2db7f8343acdcd9f7341491c665a8842c19e19d12ab36b01ec68c95bfd9226aa10370ea1b71f08b326f7817a96c53132d7b5004fa00ecf1d6204198fc785b05438bc687cba235e5c2211d8e1e1f211664f240c3c2e4f4a1990943ec83ad80141beceba6e31384c0aa148783872593c0ce9e002cb2af6de35845dc1fcd6e7d5da96b6e8cf3a4cab1d6490ad18203cdac1a77f608c8460d21230ac8470f841c6c17f5a1faff871c27c5a9e0e93a20b5c1e17d8f7a5c74065ab192c33d08d0c603226a01b9f5976e0f06625baa7f90554ee805d7ee242cb54d3183758bf948ea31024fa3aa368cfc8ba7df1474a4388e84e3f79617080a96ce3af88ce5e1b9ba02871c2e6a54d0fc05050295f5f9a638a63c51428bc935c7f539cdd90a5501b8832a3bea490657f026ec6745d4b30f518e6f4b2bee0afb65b34df1d81a4751aed0865b9cb01f4cdc65cab3ee1b3e988b23c0f2c63cb16e305d4c7b69a2ebac8471d6d61412004bbbd4550debbf64c49f5975df1f4bef53281fbadda4a5fb7dfa63e7261499a74c7f3af2026a997c1fdcde6c07fb3ce720a450f9de6970d6121706245e4cd2332247c6cce84085afbf7fab4f7f1fa98626646630e48e2dab8cb21661c306a22ebd7243beb7fc3c6cf57088a40d05c2381fef655c42817f1bb95de7d20f38d02fc1e3b2d6852b2a8f3a4dd4a262ada59f48482e44468c10c0506368c305ee4efc93d60adac26c13258739640890762077e771ecb57c01efbb895c65a9eb1a2c479f1ad7434377331738a2034840682de3ae673ce47e3e54172556a3a543066fd5e30473c33641ffe90144bbe15d68b5e8ab9c063f48edb3a4480356e7a7ddef32c60f0edffcf1c5fef4eb488476794f42af7b66eb01b19bfba59cacd157d485037b2c383add0cf2ff727c1056a466930e46e3f081af429a45e5ccdfe8e0f3c210474eb0156744c7d5486f761910083b6a8fba1898a52b112b96b4b3387f2f3e4000aa0854781b029e8c01f3f09f0cd361eaaa56a89b2a054a1805248e89ddc32dc8a3e53333595686e4e7b076340076a29c1c0f4f1232af35527e8d35f887e7fe524991b5b74da3b02dc26f7227595c096fd40541b86e7f0705cebd4c2a134c14e8f9eef94fa609a305e6a429f290404f1043c1666387df4bafc2308dc4eb2539c01dedc23d9c2018a9c5cdec50475a8f8ee32d9d13d79b304dcf69b949be7877fab4752b45b9ee04622123db",
70+
"K": "c6338bf92f3930b95f81d87fe669fabc42aaa549e8fecfbfdbe237d739fe4d96",
71+
"result": "valid"
72+
}
73+
]
74+
}
75+
]
76+
}

0 commit comments

Comments
 (0)