Add testing KEM vectors 00/315700/17
authorJakub Wlostowski <j.wlostowski@samsung.com>
Tue, 6 Aug 2024 10:15:54 +0000 (12:15 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Thu, 29 Aug 2024 17:45:59 +0000 (19:45 +0200)
Change-Id: I443a99dcb4cb7b4b288084db50e6b167715cd860

src/ckm/ckm-common.cpp
src/ckm/ckm-common.h
src/ckm/privileged/initial-values.cpp
src/ckm/unprivileged/kem-testcases.cpp
src/ckm/unprivileged/test-kem-vectors.h [new file with mode: 0644]

index facc8250478f51d1dbe581c6cf037f4bcb025b5e..f46b128efaa2b961ce30af63f3ca14ab6387d9c8 100644 (file)
@@ -682,3 +682,23 @@ void require_default_user(char *argv[])
         exit(-1);
     }
 }
+
+int hexToBin(char h) {
+    if (h >= '0' && h <= '9')
+        return h - '0';
+    if (h >= 'a' && h <= 'f')
+        return h - 'a' + 10;
+    if (h >= 'A' && h <= 'F')
+        return h - 'A' + 10;
+    RUNNER_ASSERT_MSG(false, "Input out of scope");
+}
+
+CKM::RawBuffer hexToBin(const std::string &hex) {
+    CKM::RawBuffer output;
+    output.resize(hex.size()/2);
+    for (size_t i=0; i<output.size(); ++i) {
+        output[i] = hexToBin(hex[i*2])*16 +
+                    hexToBin(hex[i*2 + 1]);
+    }
+    return output;
+}
index 8913c5750b24b438802ac1377a64b398c1bab565..05b7e003fc396736860e38391f4d602be701cfaf 100644 (file)
@@ -411,3 +411,6 @@ private:
 };
 
 void require_default_user(char *argv[]);
+
+int hexToBin(char h);
+CKM::RawBuffer hexToBin(const std::string &hex);
index f5c495480b3b1830f7d49393b3ab6fac243dc37b..8c4f4547901097ec4e91abac5215cdf526e328bb 100644 (file)
@@ -93,26 +93,6 @@ void restart_key_manager(const std::initializer_list<const char *> files_to_copy
     start_service(MANAGER);
 }
 
-int hexToBin(char h) {
-    if (h >= '0' && h <= '9')
-        return h - '0';
-    if (h >= 'a' && h <= 'f')
-        return h - 'a' + 10;
-    if (h >= 'A' && h <= 'F')
-        return h - 'A' + 10;
-    RUNNER_ASSERT_MSG(false, "Input out of scope");
-}
-
-CKM::RawBuffer hexToBin(std::string &hex) {
-    CKM::RawBuffer output;
-    output.resize(hex.size()/2);
-    for (size_t i=0; i<output.size(); ++i) {
-        output[i] = hexToBin(hex[i*2])*16 +
-                    hexToBin(hex[i*2 + 1]);
-    }
-    return output;
-}
-
 } // namespace
 
 RUNNER_TEST_GROUP_INIT(T60_INITIAL_VALUES);
index 9b5093a62e9113a3ee4e566eaa1b527cdbb22174..c2291b53041d0bba028be0e55b362d29eb5d3c63 100644 (file)
@@ -23,6 +23,8 @@
 #include <ckmc/ckmc-error.h>
 #include <ckm-common.h>
 
+#include <test-kem-vectors.h>
+
 const char* PASSWORD = "test-password";
 const char* USER_PASS = "user-pass";
 
@@ -674,6 +676,68 @@ RUNNER_TEST(KEM_encaps_decaps_check_keys, KemEncapsDecapsFixture)
        }
 }
 
+RUNNER_TEST(KEM_encaps_decaps_test_vectors, KemEncapsDecapsFixture)
+{
+       for (const auto& [kem_type, input_values] : types_input_values)
+       {
+               CKM::RawBuffer private_key_buffer = hexToBin(std::get<0>(input_values));
+               CKM::RawBuffer ciphertext_buffer = hexToBin(std::get<1>(input_values));
+               CKM::RawBuffer correct_secret_buffer = hexToBin(std::get<2>(input_values));
+
+               ParamListPtr params = getDefaultParams(KEM_ALGO);
+               setParam(params, CKMC_PARAM_KEM_TYPE, kem_type);
+
+               AliasRemover removers[] = {new_alias.c_str(), decapsulated_secret_alias.c_str()};
+
+               ckmc_key_s *private_key = nullptr;
+               assert_positive(ckmc_key_new,
+                                               private_key_buffer.data(),
+                                               private_key_buffer.size(),
+                                               CKMC_KEY_KEM_PRIVATE,
+                                               nullptr,
+                                               &private_key);
+               assert_positive(ckmc_save_key,
+                                               new_alias.c_str(),
+                                               *private_key,
+                                               EXPORTABLE_PW);
+
+               ckmc_raw_buffer_s *ciphertext = nullptr;
+               assert_positive(ckmc_buffer_new,
+                                               ciphertext_buffer.data(),
+                                               ciphertext_buffer.size(),
+                                               &ciphertext);
+
+               assert_positive(ckmc_decapsulate_key,
+                                               params.get(),
+                                               new_alias.c_str(),
+                                               PASSWORD,
+                                               decapsulated_secret_alias.c_str(),
+                                               EXPORTABLE_PW,
+                                               ciphertext);
+
+               ckmc_key_s *decapsulated_secret = nullptr;
+               assert_positive(ckmc_get_key,
+                                               decapsulated_secret_alias.c_str(),
+                                               PASSWORD,
+                                               &decapsulated_secret);
+
+               ckmc_key_s *correct_secret = nullptr;
+               assert_positive(ckmc_key_new,
+                                               correct_secret_buffer.data(),
+                                               correct_secret_buffer.size(),
+                                               CKMC_KEY_AES,
+                                               nullptr,
+                                               &correct_secret);
+
+               assert_keys_equal(decapsulated_secret, correct_secret);
+
+               ckmc_buffer_free(ciphertext);
+               ckmc_key_free(private_key);
+               ckmc_key_free(decapsulated_secret);
+               ckmc_key_free(correct_secret);
+       }
+}
+
 RUNNER_TEST(KEM_encaps_decaps_invalid_parameter, KemEncapsDecapsFixture)
 {
        ParamListPtr aes_cbc_params = getDefaultParams(AES_CBC_ALGO);
diff --git a/src/ckm/unprivileged/test-kem-vectors.h b/src/ckm/unprivileged/test-kem-vectors.h
new file mode 100644 (file)
index 0000000..7dd978b
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ *  Copyright (c) 2024 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License
+ */
+
+/*
+       Values verified and provided by NIST:
+       https://csrc.nist.gov/csrc/media/Projects/post-quantum-cryptography/documents/example-files/PQC%20Intermediate%20Values.zip
+*/
+
+std::string raw_private_key_768 = "3456859BF707E672AC712B7E70F5427574597502B81DE8931C92A9C0D22A8E1773CB87472205A31C"
+                                                                 "32206BA4BCF42259533CB3A19C0200860244A6C3F6921845B0A05850187A4310B3D5223AAAA0C79B"
+                                                                 "9BBCFCCB3F751214EB0CFAC1A29ED8848A5A49BA84BA68E6B6F5057D493105FF38A9F44B4E7F6CBE"
+                                                                 "7D216408F7B48605B270B253B001A5401C0C9127CC185B1B0CF92B99FBA0D95A295F873515520C86"
+                                                                 "321B8C966C837AAB34B2BFFAB2A2A4301B356B26CDC4563802901B4762F284281A382E5F762BEF47"
+                                                                 "B519A81A108657EBE962BE120B5FB3B9ED338CCF47B3A03952A16633F6E6B534E6B63D05706EFA0F"
+                                                                 "94C03A2B856AE551422F9011F2589A41B96A2CD213C6999B09E91FF423CB106A1A920B84B8114694"
+                                                                 "97154223987F005C72F8AF388B090C639F8C774FC5A294C74A212C91A86C328AEBEA558AB43F8B87"
+                                                                 "3534FA2EF9E66CEF3C52CD471AB78375E745B9D0AA65D2278B9275AE5348B16CF62AC8065734E4BD"
+                                                                 "77B80CCF897605EB76F485AF8A0B466557A83C0292CCF903EE7AA57C3B51AD660189B86139E38042"
+                                                                 "5B31A92689DF2431BFA7B69EAB1727451B29DA8B8BF851E1BC2D3A63134CA9663C57AEC6985CEBD5"
+                                                                 "6DB0447B136B017A974761C3C67D33772F9964E5434D643504332A3027294A078C599CB29163109C"
+                                                                 "E3B56CE698B4D3F59E2956A1F03A4B955593F2D2457FFAAE9624A0711045B3F55292F20CC9D0CD79"
+                                                                 "1A21597B0F2CD980F3510F0B0239022000D735586EE6A73F3A3DCBD6BD1A85C86512ABF3C51CE00A"
+                                                                 "0331F65360462C022329597A81C3F92FC17938C9138F4111387979C28F0334F90119221374DAB045"
+                                                                 "929B49E43A9646A243F4464DAF811AB00630C75961BCD4AF5D99115A3749191BA8FD41CE0B3C89A6"
+                                                                 "95B4BB85064FD3AF95C9B4AEE09AC7B0CC69ECA36A004B6CD662A6D32795053EF0A03ADA3B98BFE3"
+                                                                 "B46A79723E3A45AB3C31950669AD77072062CC3B504DF1334FD6909EAC7915F1D5AD16639F5FB564"
+                                                                 "416454259134D565882CB381CBA58B76880767B50AC1B85795D7268433B371230ED4C72F99AB1AD1"
+                                                                 "E595A459CF0A2334AA1463ADE4BDC9249605381857BB98095B41132946CA2457DFAA9149582AA199"
+                                                                 "27B63689E2929AA41027BEF4921970BAD4A55490D91ABE251DEF4552CA88034106A02CE4B058F8B5"
+                                                                 "9624B67E063BF178B015E4281EB114A2BC2454943A4B4647122C42CBEA4E94154FD3E4B791F6290B"
+                                                                 "782994206853D67000A633F320A8A374CA5D4038F9CA4244DCB02E9A84E1F7C8A821132B32B9A840"
+                                                                 "557B34780665301724BA2606681D945E34D7CF941B8963CAA1001A491B8B2E43570E9AB95C0A57C5"
+                                                                 "03F0AB960B4856D0251574710FE5CB474284FC1049AA2A7B03694A1C763E99DAC6AD0BA8038B138A"
+                                                                 "64432E349116A031E8C792781751BA473CBDF55720005ABDAA13D50182F0E633776BB0675C40472B"
+                                                                 "AD1F9672769183D0CCC810BC25A8573220569F6AC4BAC22A1354D8B36C0580D0E5299E629C506CC7"
+                                                                 "655546FF27810C97B51BA056BBF86ED9CB7C0A537F72D0CF9AD2C231E29EBF553F613CBB15B3721A"
+                                                                 "20077E505FD390CB19F6488A107DEE1CAC58AB7034BA690300219595B3695C1234E8B57E33C8D3A0"
+                                                                 "48454A616DF3C9B56A6FF2026AF997725FC95579043BAE9399B6790D637B4FA820B0B2D2CAB607BA"
+                                                                 "F6A372734C31EE0026F3C076D14A8E3EE66AAD8BBBCCEB9DC70C7B6BB0BB76C200C231601CA0873E"
+                                                                 "C8710F4B18D57290B033727C601EDB71C2B0F0C21D553E0E7A4F77716839C7C8448ABB9F66A54E8A"
+                                                                 "4B08A79D9A392CA1270031388BAD56217E32AEF55411974906A245C00712B3CBB1170685193FE25A"
+                                                                 "CD7AC13D32073F3879A5D78375F0052CF79175BAB46D22370597BD06789EDD0711CC4243507A02B4"
+                                                                 "FAADBB62250CC997AE0327AEB00DEB529192A64B1096A86B19674D0B0AF05C4AAE178C2C9A6442E9"
+                                                                 "4ED0A56033A11EE42632C0B4AA51D42150790F41062B77253C25BA4DE559761F0A90068389728BC9"
+                                                                 "77F70CF7BCCFBD883DF13C79F5F2C34312CB1D5A55D78C1B242096A8C0593CFB2753460BD30ABA30"
+                                                                 "6C74173995748385D00B3670E61324D87DE8A14450DC493768777FF0CE6810937A711229561A5EF2"
+                                                                 "BB69861074E00BD93266E4B86269E18EEA2CAACB60A1358636CD7A7CA6BB682130241784B101EA5B"
+                                                                 "FD6C3A07158621614736F6996D5A4E14963A12D836E533A0C8912DB7E11685A4A53D8285F08750DF"
+                                                                 "F66DA27C23B97542DEFB99E470ACD5E647C940CB57301B43CC3E68E64E28B06770695EF609265E06"
+                                                                 "C60F22CB875849E62BAB88CC10ECF622C379CB54F13D8B2BAC902B9AB02BB330B45AC8B741C2647A"
+                                                                 "C45B5BF48A6D3FE039986CC940C60A94E66CF644531016A5272450824314B5662A0A909ABFB46FD2"
+                                                                 "7BAED3ABA8259361596882B08B2AC7233930FC3786738ED2F81EE638C45C3B9CFD1951DB5BCC1445"
+                                                                 "C2C1625D57D57B53904B6A1AB681580755E89FA79775A657CD62B4426304BC0C711E2807A2C9E852"
+                                                                 "D4B4359EE6B53E4675F523C90782572DC7368FB400C328C70FC846B5E98A4330BBB627BDD784B4DA"
+                                                                 "F0B1F645944942B4C2B6225C8B31E989545522BA6F10396034CB1CA745977844D570894C611A5608"
+                                                                 "A757416D6DE59963C32798C493EFD2264C231910E9A30090CA7B5384F231B89BA68A238190EF1A2A"
+                                                                 "43CB01703470A0F061A70738944BCD9B7004F24797AECB88B1091CFED0590B0415453C39B6EC45B6"
+                                                                 "6305FAEA6B55A4B7967505FE3862A267ADBFE05B9181A06501893391650EAAA4A6D16853349276F9"
+                                                                 "8E0F44CD726615C61C16713094D8AB093CAC71F2803E7D39109EF5009C9C2CDAF7B7A6B37A33A498"
+                                                                 "81F4BB5D7245A14C5042280C76A84E63F49D0D619D46D723BAA747A3BA90A6FB637A9A1DC02268FD"
+                                                                 "5C043D18CBA1528AC8E225C1F923D1CC84F2E78E25DC3CCE9353C9DAC2AD726A79F64940801DD570"
+                                                                 "1EFBDCB80A98A25993CD7F80591320B63172718647B976A98A771686F0120A053B0C447460430589"
+                                                                 "0FECAF23475DDCC11BC08A9C5F592ABB1A153DB1B883C0507EB68F78E0A14DEBBFEEC621E10A69B6"
+                                                                 "DAAFAA916B539533E508007C4188CE05C862D101D4DB1DF3C4502B8C8AE1457488A36EAD2665BFAC"
+                                                                 "B321760281DB9CA72C7614363404A0A8EABC058A23A346875FA96BB18AC2CCF093B8A855673811CE"
+                                                                 "D47CBE1EE81D2CF07E43FC4872090853743108865F02C5612AA87166707EE90FFD5B8021F0AA016E"
+                                                                 "5DBCD91F57B3562D3A2BCFA20A4C03010B8AA144E6482804B474FEC1F5E138BE632A3B9C82483DC6"
+                                                                 "890A13B1E8EE6AF714EC5EFAC3B1976B29DADB605B14D3732B5DE118596516858117E2634C4EA0CC";
+
+std::string raw_ciphertext_decaps_768 = "DFA6B9D72A63B420B89DDE50F7E0D56ECF876BFEF991FCE91C8D286FA6EABAC1730FD87741FE4AD7"
+                                                                               "17B282A21E235A55C3757D88D4CE62F414EB77EB9D357EE29D00087BF8110E5BBBC7C90419072EAE"
+                                                                               "044BF7E183D43A94B2632AA14649619B70649521BC19370942EF70F36C34C8C23591EE0CA71A12D2"
+                                                                               "79E0F52D39ED0F913F8C262621FB242E680DEB307B0749C6B393A8EF66F8B04AAFA877B951AB93F5"
+                                                                               "98B4B2FAB04F88AC803984FF37E3FE74F3A616D5314EB3A826F874F8ECD3A5647D04942A57EFC096"
+                                                                               "38470DC0A9DF40B317571D3984A78CF7D11751090722B3059E07591CC4A2ED9BA0DCE99BE9E5EE5D"
+                                                                               "B8D698CDEB5814759BA977C90079CF2AFDE478069C513A60091A3A5D0111E22DE06CB145C14E22A2"
+                                                                               "14CB278C8152B0681BCAFF54D552B54A671C0DFEF775E7C54FEFC4853868C955971ABDAC2A76292C"
+                                                                               "CCD4FD1C706B7D3614159673E9D7B29A2D3F63363129E7A21E803A460F2714E3E25922780AF38257"
+                                                                               "CD1495ACD1E01980638DF58A153DAB07EFB5C7E78ADACF631956D69CCDA070459568BD9D11A2934B"
+                                                                               "CF1643BC99468238910B1F742EBB3C03D39FD45CFB85BA309E29DD9B5CD560819EC729FCAC8B9D72"
+                                                                               "5E3E8ABEDE4B5298A8658EE3F781B0CE683CBB7335CD57EFE2204A8F197446D7314CDBF4C5D08CCC"
+                                                                               "41F80857CC9571FBFB906060F7E17C8CEF0F274AFF83E393B15F2F9589A13AF4BC78E16CDDE62361"
+                                                                               "D63B8DC903B70C01A43419CD2052150BD28719F61FF31F4A9BEC4DDBCEC1F8FB2EFBF37DFFFA4C7F"
+                                                                               "ECA8CE6D626BFDA16EE708D9206814A2EF988525615D4AC9BE608C4B03ABEE95B32A5DB74A96119A"
+                                                                               "7E159AF99CD98E88EAF09F0D780E7C7E814B8E88B4F4E15FA54995D0ECBAD3EF046A4947F3E8B9E7"
+                                                                               "44241489B806FE9401E78BAFC8E882E9D6D0700F720C0024E7DA49061C5D18A62074040ABC000320"
+                                                                               "0ED465231797930A2E2AA501F64862DDA13014A99F9D3270AA907EEB3FDBFF291600DF1F6B39684B"
+                                                                               "11E396B70D86F90492E82B09BA25607B0C286FBC070182AC76FA7C859AAFEA87016AED22C3605A27"
+                                                                               "89A1D439FD8D933342DAB745A3E550E7D77C01A6234BDA7D6BB19D495E6560FCE8396FC3C6E088ED"
+                                                                               "60F5F2771416EA3BE5BE472B6404906C91E71D9A8672F390083655AB7D0EC6EDFE86789CE20BE2EA"
+                                                                               "90CA5CC31416FB24CBAF94DA1468FE696BCDF5247CF117CBE9334076CA6896B2F6A016B1F7C73728"
+                                                                               "807898D8B199756C2B0AA2457E1B4F7754C4576CE5645614EA15C1AE28B094EB217C7A7A41239576"
+                                                                               "CBDA380EE68783432730AD5EBE7F51D6BE7FB02AB37BE0C96AAC9F3C790A18D159E6BABA71EC88C1"
+                                                                               "10FD84C336DF630F271CF79328B6C879DF7CDE0F70712220B1FBB9ACB48248D91F0E2B6E3BE40C2B"
+                                                                               "221E626E7E330D9D83CC0668F7308591E14C7D72B841A6F05F3FDC139EECC1536765650B55A9CEC6"
+                                                                               "BBF54CCEC5C3AC9A0E39F48F237BD4C660CB1A8D250BB6C8C010FEC34CC3D91599271C7531330F12"
+                                                                               "A3E44FAFD905D2C6";
+
+std::string raw_correct_secret_768 = "BD7256B242F404869D662F80BF677A16C0C6FC1568CCA5B64582A01A6A142D71";
+
+std::string raw_private_key_1024 = "0FEA26C4A544A514444A971B5C5A825827C09D42469E59344CF2AC06A28D33E9A012CAA3717B2C3B"
+                                                                  "290A0715821109C4CCEAC49F341DADD377D42A37261916AC7BB9E41C096CA8181CF58350573F6056"
+                                                                  "84A1BCA53D88257453C535165C4ED72A9FF05645712901F66C10D04F5EB4A2EC3772E9498E9DC44B"
+                                                                  "BDAB71BBDBBCFC85B801363089EA60EFE586E1E2180C38B2E7B4A63ED607490BC5BA7A58AC3B1C0E"
+                                                                  "43967200C7980290EBF411828439EE8C8E6129B258E13D127CB15A00CB7B468D4023B5097B9B2E50"
+                                                                  "9B50E890B63B4707487961A29E18656DD2D09E6A3B8843E2843CB4854F18116E717DDB0355A75135"
+                                                                  "B2026A752C8E7FF18E0F4A391CA37F5B2BCC88C999B4E47750C46547EC076AC21530722CFAF96799"
+                                                                  "61C98688C3562B17CC808146A12572C9B5FF151AAB54410901840E26423987C5E0D28EF2EA53EAE5"
+                                                                  "951E62AC7BD518B9830A4DBCCE6A936591EA8EF275078A0973852A4D130495D00B3F21851599901C"
+                                                                  "FDF9368344C810422FFEA08AEDCB1A7FD3625F26B034812FA307AB2C20945465546D31A341A4013D"
+                                                                  "8189B4F50FE860A668DAC7B103441E961FCEB0C5B1F34DF2E598C6D8CF60B864150C703D2BBEAC9B"
+                                                                  "001AA2108147AE6B8AAE2C7791DBE956C1F9B2047A1576094387064C3A801B0D89C996A5CFA3B012"
+                                                                  "C14438B9F3530C0C5FA9389F10FB3EF1E2013338415F7B1DB411ADF91C73B6456B68AB7CFC7BC929"
+                                                                  "E44E58EB34CA10AE31F03B2C3BA6CCA27EB35CB1379A130AAC87E3B875CFE253AF03C4BD783F18C5"
+                                                                  "A2F8492BBF7C56875598B1B63FE6CB0694D0480CA1C8F8867C11B8BF33A32C20B79F9CA486858610"
+                                                                  "B19783BEF784BF6B0F858C1A791130DA6957F212234EC98679814BE839BF110B45C1C883ECDC3DB3"
+                                                                  "F822A4F7C125566ED1663568C8413CD01C22467AD5201A0ADC763435A2CB05CDC47072A94370F5B4"
+                                                                  "34F75C078B415993E854DDE17BBF86C0C6C9A3248532D9C2139EF3C75A9BC693781060DCAE2FFA58"
+                                                                  "D9CC548F19C1CE5364880C7FB50CC7BE405312D6CC94037618F388C490AF8F61B9B4044CF75A5CD7"
+                                                                  "1A15853B5FD6224C6B9590E58501D2814200C919F283CC2B49AD8BFA5BAAA2977F03823F609EFB24"
+                                                                  "26F936C30287097BD6B7BDC67862858883DB5954080429B9CD02CA96BC1CCBDB5121DFF805B0824A"
+                                                                  "EE999E2BBB2D82353E6D3A300792781058C56EF7098AB3584EA0621E20337D3A975D93CF32586D6A"
+                                                                  "71A2C4BBB202B853FF09C407B43B1C19B1C4CCB821482DDD27378177AA7F6178497C3FBA79715384"
+                                                                  "8C5D0B1F40B54E9D5193904A303F725F0CCC66C6CCB158850605346DB42B877DD9CEA5F69C12B221"
+                                                                  "C7EC5100F76587B9834BC0C641538F83E85BB3090DBAFBCB0B7118FF7C97E95263157041F8AC4052"
+                                                                  "D0403500CC4F689455974CEB5B076790A050E0B3F6772A7767541FF6B67B2A1D5407820647688F36"
+                                                                  "0A2B01473767712909B227658BE6457848C440757168061888589CB05A999E55496791B11AF2066B"
+                                                                  "B8CA746051C4680A0BC07382412AB8B8A319DBC794DDC694BFDB813F80B58B72218DD64DFCDBA1AB"
+                                                                  "48A94F7A8DCA9266CD15A42D9BA5FB6767A955526C050DE2598B112A2B103AA2D1F0606FE68A5519"
+                                                                  "1EF53B302F7C1922C301CEEA989A62134090A86076776FA44627B7316386576A678175B218E6F482"
+                                                                  "B52BC6027BBEB34698B9802FD67634C1A94DD4C5CD49EC6E2D665F727781D1EC10AAF66AD8279B9B"
+                                                                  "F24C99E875EC94352D9605FA30CB3D8B2686B03971A760B3053B34346D0D71B44D8B7D2EA61A5C10"
+                                                                  "A933D38BA48336711174546147D44B2914F85689D9C1BF0037C7F7377CD930CFF60F84B0A2005D3E"
+                                                                  "FE55C7311B1B6132768B5290D836B82BC443C32B4FEC960219DB2132F7990AD684A3729F3D1A2CEA"
+                                                                  "3A1FE4B12675C489EF33198F01A106806EFCE8921DC46E971C0A0A564AF9E56CA727A7641C568C95"
+                                                                  "AA5956910B288429F80EE7226E9DC4067E34944F06926D44B2CF8764F713593B4429F82B8FCC6077"
+                                                                  "98916B815B9098330EC334290DB8C04B083DF3CA10CE3575073028E994A25BE72878492FE1B696BA"
+                                                                  "5CB1A773193A3B28A4F440AE582DC7C24FE7451D6676232BB961C5040C9E5201AAF3CD4DE40AD5A9"
+                                                                  "578AF52810B593E9815E23F63F564061A48407213AA1B0908F4B174F86D573FA04386498BE68398E"
+                                                                  "8D720D278111D8B17303602A96E35F56FB25173C4F4A03CA2AC9BF79DCAB764BCE4410401E1013E6"
+                                                                  "528CCC5113358577DA8375E02343108C2924D2551E5CC5A1B04DEF88324D854FC92C4ADF7C230133"
+                                                                  "7E4520BFC365566F66092E367AE60612744653C1EB47F0820951A2A14C425909340D8727188EAA08"
+                                                                  "E48678984876D0008DAE99015B3663FDCB725741530BC3895B11620CE3B417A320E18813B99C235A"
+                                                                  "C06F55600F983882BFF00236107B5042545B6B775868AEFB79B595596902C69B9ECA3D358C61FEE0"
+                                                                  "36D218AC43BA3F52C06A8F881A7ED70386142CBAC5CC04FCC31E16277651CE2DCC5014F6BA5A915C"
+                                                                  "1338834EF474B6715913BC7A4E593C688766ADD70698B37E06E53915F385388C25C4265E1CB44FE3"
+                                                                  "D019D121AE4C32434F37B0A4CB69C7CC95707350C3493D0FB11CD4D09F29DC56C07BC8EB0BD0082B"
+                                                                  "41442145663C21AB433467B95EC2478423C18BF2EC703EFBA28CDABD42B7B833150D6DA25EB00A83"
+                                                                  "28902E2D089B55D69AAD9A94D818264C54B04D614D147A30ABFC03D9929D96BA7F81865DA353C454"
+                                                                  "BA7AA7881AB974C1B8F0831E79C4418664E953A54DE93213697281341D37F508E8CBAE3D81850545"
+                                                                  "67DEFC8E3BBCAA4247907C483B8F1B84B324C1A7CA8442DB6B7B128C8313BE1FE25791209B864A3E"
+                                                                  "1A618D56D710D6F3BF559510167C464C6B9B8BC490B8E03925D03D0EEB5D78179428BB80D3FB1488"
+                                                                  "40709C41147A686FC9BCBDCDF7C7EA7C30FB640FF05B7539ABAB70892908E93CC9C347F8AC889E56"
+                                                                  "468A135B99754738E15F4E677DF375BF1B43606A2C47380B10A0C14C28583C83311A2854B2A9931F"
+                                                                  "D66086C10749F334577FD70B51B95060075199319B3F7CB5B237302C370A23175E4E013C56281BAF"
+                                                                  "E2BE9F825A3066AB8BBA5793E21E7A48978CF60C091B1F80C0C23814A30F7760601ACEABB1215200"
+                                                                  "940FFA152272096D458D00DD039F236B2727B588C62204E79C451681DFE410EEC42B74945AEC0313"
+                                                                  "A391942AE1B122174DBE59AB1E390CD64941436C75A9323C69A641880870FBB280B3B37B3BD982B8"
+                                                                  "2955620B0783B82E8961A4043BC7F66C0EF25A5ED15326F8816E5EA4167EE8BF6666451D315B2C75"
+                                                                  "1441172C278300268261C78C6F0C46562779B3A1196F87835F79FCB7E0CBA15336CC83E156C50228"
+                                                                  "87A80986B49C1B576594A23142624ABF524822418C6101905262806572494D3753C06281E7F17E0D"
+                                                                  "796CD7767FDCE901FE1712A00A3D36EB423E29868846932A9431B8CA660FC1975E23A75B4A51DE10"
+                                                                  "69D3A59F6EEB2A5CE72A8916B5E863476E6AC572929F2C29BC5627BA994163CED35AB7031C004907"
+                                                                  "24555ACDE613AEB4C3E99981C62B5DC6A9B35BA79220243689E0594996857C045D67193D9E411B4F"
+                                                                  "F39D0F8C3C0A70ADB72A7021E36D64FB294D932B24E1A2BC0BC41C4AA3B5EC3CF0E672DE140F4847"
+                                                                  "33FD82BF082934B540A635C44898E8AB8E0645705AA581718B4132C427927FAE75BF9616A5424C20"
+                                                                  "20EBC5CFC1BC0ED1653AE5005A1754181620B7F06D716313033BB72A40647ADB2E667370F2C74FDB"
+                                                                  "94420DA48DD1379DBA59AA22F857E231C5C083290066C548761BDF385F2F85817B212066D39F03B7"
+                                                                  "7F8EF41219E4BFB9C12E4FC98800571D223AA92A32C7A3C2A7CF9C995AE0A7B59391FE9A4F0D633B"
+                                                                  "FB798C34B72BBA6A9F16C4132E88B570758BD551C91BD2ADEB53A72AC6AA03689DD64B035709A8AF"
+                                                                  "468543CB1736DBC9C72B529E70596D18B19CA68E617A147C189D283A77688CAF94DA5A0E9B63181A"
+                                                                  "40BBE7BD4168A24D274319A993BCEA8ABF505FE862129692B5BDE849F36AC92F7171E53859313604"
+                                                                  "EAC10BE2786FF385B9C718154818772FA7B899C04EFD18A8019A79B6F64D5B9A2C55E784CB47CA29"
+                                                                  "4856689AA6A70CC27B6C20D4D1C729C409D0B925C40C30C0777815077749488B8DF0390695ABDB04"
+                                                                  "8C7CE1853602A54D153CF2A51617847B11E63C4C761966D5AD93350DBADA4A15C124BD808871993F"
+                                                                  "C775B6E410C386590F730A8EC9475EEE915039E91B6FE425B90668C6AC5258B7AF103B9F5E230B71"
+                                                                  "9BBB09871DC1621517BA2A839C96AAA6440A875EAC90B298D61BD3F3AC89B405DB394232686A2BE0"
+                                                                  "F3C75F15E64E61F070791EB4BB97B7019825F117C7D73A12FD3DCC22D581B0E41B786374A461EA0D"
+                                                                  "88DAA89B659F0DC82443423515B633B005C958EC26561B6DB818F4B8CB2E28990E748417587FEC38"
+                                                                  "A1284BBB4FF9E478";
+
+std::string raw_ciphertext_decaps_1024 = "61FF1A8B6117EF118328E88B3227993014DCD075B8A1A7F9801893EEE6405BB960B6B7F6A1A27518"
+                                                                                "A3409139A48B859681CC758F2BCC3EEFB04394A375A5CD71316490938ABFD194B20BCD31B3980261"
+                                                                                "C9ED69BF9B1D7D7659A8040DB1E25D2BA6F703486624B73CACDCA27DB0F7E2408C9448E38873280F"
+                                                                                "5E9950D7CCE252A647580C19904FAD62AEC300BC8E38F05948B63BAD5CE7C90E40C4BC65117761F5"
+                                                                                "F8868F8025D6CEB2C5DF60DE38C3232922087EFCF2CD95DE5E87B6888B88C86CC78315585B2CC688"
+                                                                                "A71B477BFA388DC2334DFA8AA95503D5397E2AE0352903EA6A0AE8B649A914B3525FE58F564BF19C"
+                                                                                "C09F54E105D19BD81054E57001F70BBDD7719449687E9A53B16CA5366A19105A8BA08589AD08DF13"
+                                                                                "00EF4F923BA9E762A82FB09B76E125F2F274D617BF30EAB465ECF24D3707AD300D9AFC1CF1DC40EE"
+                                                                                "7D4EEA6D150E6F0A31DB9F8F92BA8EEEB35D7445589B046BA79EFE231106CF0A75712AB392724C53"
+                                                                                "EFF9F5733BEE0D6A44D0B6F515D0F5E40B1B1E17E67AED3C81D00AC468A28F8453D4B0DA809E57D8"
+                                                                                "23F28D61ED0B59A08C622972D99179DA8636C45F1CE8F6252AC86D91B5E92997014E3F5089E68BC5"
+                                                                                "2CED5DAE6D5B175FE2D61928465059724C835902D7612CDB69CDAC664FC1C9CB11203A8C7B71486E"
+                                                                                "97B7D1BC6A98F493DCBEC8E629558ED361091293D1B5D2096CEB9FC7AFEE71DB7CCFE482B68A1964"
+                                                                                "29FF04D15903E7A75C7BB5F622C36971694559FF07DFAA79E41C362B22643CD39BD9E1D3D6C2A306"
+                                                                                "B5F1102C266EEE67DCDACF36697A836F203838EC110308C90A3D01570CB3668ABA50340E40F54CFA"
+                                                                                "6A9E8862532F5F19848AA11FD34FC86B7FCB1637F4E5A1D03AFCE44124E4E460B84C63496ADED558"
+                                                                                "01DF2517A90AB061C8E63AB6B14BE1694D6F389DD85F5639C5783AFCA0146E6A1EB0C40563C13701"
+                                                                                "0DB60BBC3D6374D6F3A892DEBC064701C64BECCB8E2C33B740CC7ED49D108A8C4656818DF5F7D91E"
+                                                                                "AAA446AC6CCDE30C6D3D1BF66E4E3B7B6B81E3CB17227F80DB0096E6BE7D859C09713749FCA21530"
+                                                                                "FE1A716EBE325504319BD0EA2A7D7713607CB679B0A0B2268D493B67C0481872177FFD2593F3ACF6"
+                                                                                "91CEE99A36ECA722579EFAA59ACC59EF8CEA9108E620B06056C19D3C1EB91E8634DE4957706DFA8F"
+                                                                                "9D0A9E0CD4094F6B95A83F118A513EBFE5E99AEB88A268E0097FCC3C7AE250B681933BBC2A8F5381"
+                                                                                "F94D156434A87E9EE37E78C27A0CDAEEA9814BCB43DF538DBE628C802C1A94E0CDDCD0CD5A0F8220"
+                                                                                "DA97C2383936A33919FCDC11D70ED4437DD2D7C73CD0C3BB90CA7070228FE8D64A1C9D56E6B34830"
+                                                                                "EF300B5AA6EC6C78A5425AE6F7AD0EFDD527CF0AF8E09B56E495BE66F665C64B0A42C5C4B2468048"
+                                                                                "0AD2E5C11D991F7E3DA759AEC802F176DDF11EF71469DC13B3A3E03699519858AC6FC65C27FA4CEF"
+                                                                                "DA09C82E8F958E018DD5255CA2F628E0DA7391ABED6D37705528AB22EC71DC8836D7FD4645944703"
+                                                                                "A51CC74D297092FCE139E8976F8BE9C5F86390B74D401A8C8153112201133D0C517C6CE7A38C0860"
+                                                                                "69CE3971F1AD28F3E5D01B56A480B417A016AEA46394CDF764812918D8AB0501D5D18CE13FBD3DE9"
+                                                                                "1F504215CCD0E2D17B7E963C867F6F132114E36459FC5AF7CEE99B789673E524131F7DC71360951A"
+                                                                                "997A9CE50DD5FAFC4521144441C06BB41C79E8ED53285D137D54F325A6C2F2EF74E34C0F877A614C"
+                                                                                "E45DC0AEDDF95A0E2E4EDAE29AF411C9CC2AF95C9EA9A94A7961C8246E654FA28F3D568D5FEE9335"
+                                                                                "2C2E0D60CCAF5B00090AB6E7A53AA06A8CD3737EBF1B65D625BCF220F74DE22D9871EFC376BF082D"
+                                                                                "4B872A303C32427A0C98BECF58959C9F9E2E887DBC42AAB1656AD15637A6A8F4BF9634095491F8C9"
+                                                                                "9242913891437E6C5B50A213DDE80D2196BE12C3937FE3239BF6759ABB8C1C9466F42FBD53894AE5"
+                                                                                "2FB533321429FCE4FEC1DB352C49583A7D817EAF62000888ECB0EBFFEF69FF8E590CFA25BEAB2160"
+                                                                                "5B635ABC2CA23680789725CF700F553C88352F31616154873D18B6C6EB519FC639B070FD67F86AAB"
+                                                                                "62349DBFFA89F93051A7C7B7BD161FCD73672CEEF59A9BB7F571EABE2570C5BF31ECAA1F9CA7A9C6"
+                                                                                "D31EA5FB7C979CDD2613897E7D1503FB0C19ADDCFB3A63E2185FC4101838DA66CCE2D3D9FFB47746"
+                                                                                "C2003EDD86C2F8C3";
+
+std::string raw_correct_secret_1024 = "C61F73D2BFB18594E1BA5D3B58B4C934206D3A6F8EC91395AB7779C61FA1DD6F";
+
+auto input_values_768 = std::make_tuple(raw_private_key_768, raw_ciphertext_decaps_768, raw_correct_secret_768);
+auto input_values_1024 = std::make_tuple(raw_private_key_1024, raw_ciphertext_decaps_1024, raw_correct_secret_1024);
+
+std::map<ckmc_kem_type_e, std::tuple<std::string, std::string, std::string>> types_input_values = {
+       {ckmc_kem_type_e::CKMC_ML_KEM_768, input_values_768},
+       {ckmc_kem_type_e::CKMC_ML_KEM_1024, input_values_1024},
+};