-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.c
124 lines (100 loc) · 16.1 KB
/
main.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "api.h"
#include "randombytes.h"
#define NTESTS 5
static void printbytes(const uint8_t *x, size_t xlen) {
size_t i;
for (i = 0; i < xlen; i++) {
printf("%02x", x[i]);
}
printf("\n");
}
// https://stackoverflow.com/a/1489985/1711232
//#define PASTER(x, y) x##_##y
//#define EVALUATOR(x, y) PASTER(x, y)
//#define NAMESPACE(fun) EVALUATOR(PQCLEAN_NAMESPACE, fun)
//
//#define CRYPTO_BYTES NAMESPACE(CRYPTO_BYTES)
//#define CRYPTO_PUBLICKEYBYTES NAMESPACE(CRYPTO_PUBLICKEYBYTES)
//#define CRYPTO_SECRETKEYBYTES NAMESPACE(CRYPTO_SECRETKEYBYTES)
//#define CRYPTO_CIPHERTEXTBYTES NAMESPACE(CRYPTO_CIPHERTEXTBYTES)
//#define crypto_kem_keypair NAMESPACE(crypto_kem_keypair)
//#define crypto_kem_enc NAMESPACE(crypto_kem_enc)
//#define crypto_kem_dec NAMESPACE(crypto_kem_dec)
#define CRYPTO_BYTES PQCLEAN_KYBER512_CLEAN_CRYPTO_BYTES
#define CRYPTO_PUBLICKEYBYTES PQCLEAN_KYBER512_CLEAN_CRYPTO_PUBLICKEYBYTES
#define CRYPTO_SECRETKEYBYTES PQCLEAN_KYBER512_CLEAN_CRYPTO_SECRETKEYBYTES
#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_KYBER512_CLEAN_CRYPTO_CIPHERTEXTBYTES
#define crypto_kem_keypair PQCLEAN_KYBER512_CLEAN_crypto_kem_keypair
#define crypto_kem_enc PQCLEAN_KYBER512_CLEAN_crypto_kem_enc
#define crypto_kem_dec PQCLEAN_KYBER512_CLEAN_crypto_kem_dec
unsigned char hex_to_dec(char hex);
void hex_str_to_uint8_arr(const char* hex_str, uint8_t* arr);
unsigned char hex_to_dec(char hex) {
if (hex >= '0' && hex <= '9') {
return hex - '0';
} else if (hex >= 'A' && hex <= 'F') {
return hex - 'A' + 10;
} else if (hex >= 'a' && hex <= 'f') {
return hex - 'a' + 10;
} else {
return 0; // 잘못된 16진수 문자
}
}
void hex_str_to_uint8_arr(const char* hex_str, uint8_t* arr) {
size_t hex_len = strlen(hex_str);
size_t i, j;
for (i = 0, j = 0; j < hex_len; i++, j += 2) {
arr[i] = (hex_to_dec(hex_str[j]) << 4) | hex_to_dec(hex_str[j + 1]);
}
}
int main(void) {
uint8_t key_a[CRYPTO_BYTES], key_b[CRYPTO_BYTES];
uint8_t pk[CRYPTO_PUBLICKEYBYTES];
uint8_t sendb[CRYPTO_CIPHERTEXTBYTES];
uint8_t sk_a[CRYPTO_SECRETKEYBYTES];
char* pk_str = "cd201c1c468cb92273e8c067be9c9c5155b9244432d02355c80ac987fb97bf9936dd03a46e5b169907616d488ae25284a8559ccf4a222774a9a1e47147572f691c18593c812e0526bee992145abb72ba4f62855290c60aed25cc80880505609e06c8418f775f08f5231e269ab9820cca806b33a942a6dbcf65a008b75a65a741a98e111686b20844d64deafb90d1660ae3b077b2674eccf445a99199a4807c317ca4bfb536bf9565a0c52685f2cefe142e03833000375cd24a422cf10b69b70de57aceea4067c6a031b62286067c3310f34ec192639595c9f7cc6fdd827b0023673c28b4de10448547a4ee184465aa2e23d88be421b4fd6b165f7c919537382bd8680ed221a7789887e51649b693074621b507b6cc0331465726fa8652475081ef39529536c3b1c2b216aa974bc421c91c247e11a1530c72c6ecbe0dfc0c014c77835bbff15b9ba2a521d89559a3330755a2776f9c58022927d6e4ab0e7a2671ec854308b4b67c04bbe620013969139801b072a05cf764c9663beae52585d2cfa5ba05013895ca1494a3c8ce65d47110484b7b8cab5763b255b17f9cd2448879121e9a7d9b703fb52296e4026250650076f1ab968817a6216316e33bc58840dc849fa1843fdd9764fbb30032847d11b47a8021544252a7cbb53e7629a8ade369dea15193c31811298e3676c97484b913e34ad9ca645669a349da642a69144197160f14498934859e6a025a7bad957b32c7c32104798da34940c25a797d5163ee8c6b6d984a8cd25dfef76222c878b5c5561dcb9b1f60ba65c02f65050d7435aeeb99683c69a275d306da309e2d0245e77b86d61c4058b9c2d75960b4c752e6d873581385e3601dc28742c1f8114601020da5289a781de78633f6f542ec67c8dcd47c750662942a05a0bb0da21260c17240006403b08476796c445af56546359b97e8a9838c75e349534e012b86b970d949356b555768fb5950c94d3e7b994dc4b61e14481afc5d785a7363e4b21bb13f072894115467de86c2d996a7bdf3c205c5797eb6534f456ae7c23724d59b8016486d23408052ad129b158609100e8c0c5b50ca5d3a7755226d648ea90582dbd898bb9bc5aaec802566bcc26043a4e00a";
char* sk_str = "d7f2bb1ba0aaaa6b8e4f358301414b329641ebbcb1e46948750b1ef81855a99a20eb769156785a77e2378ec3976d1073ac5bc834d10636c028f8dc645d698109b6c2e3b67d607059051ca4c760121fc34182b24a6f0617998738683bcef53c38d5276ab3bc6074c76131477182291864b7926905aa708447caf082a2408fbd738fce9ac5fae52e0ba288d26c05a0818d022553a2dccfbdb26020723a2424b7d95b58adf43e21ab7f184356355c9a6018a233ccaa165883030b47d1430ad19a7e46176da199a817ca8370288091a898fb1a665c07bb31c295f2290656b79107586143b8c3a5b2c6cdd83a16e7959f17b6fa5c122b4439d1e9744065075361abcefb8d3945063c07938b0046ecf5c4c6db9b50f3982539976073cf8048381dc465a493793e82b6d0fa0018539f95f51453d959f26abf233a5893547a2b217dca16ab2c131c50f378502484d2b8cc30125c9619180a20b581514f2e860d15d48318b647af0094bfbc9583613217957435748f88546702e9b7db448e6072b9eaf8001c210b8adb0a0d11c84a4737bc34aacb36b2e7e642820abd9cb623a8e89ee7402f2aaa4bb1d486d289bbdab9981f2978192672b5116f0b32b84765c7317b6dc18b47bee327b86b359ee7986e0966ae4c4576f46fd0c8b2dda77294a2c63a8441c040b057cb814de1526cd21088fa3b23244363a893cd999a7a696fc28cac0cdb50b40417c522a957475931d8a9592a4466599b2b20abdb9936941004a6027c26713032ca9bdf206406b85648097d15384f4e5920e256ac3fa1bfbe150636f90fbd3c9ee855a92652a16a797a8b118dfc2c3cfa31481a724191a415ee943b32a40e31b2a8c8913e3262b4fa8b5fb71194098461ffc21d05273363ac3a19b16326e302e3143ae943c04cc33461a4076d7a6cec93bb32a676b0919e81e88eac98afe29c0336ea948b65b9bf9a79b8b56f1e8a8c07220ac171a9e0135842bc98bf8bcd46586c5ffb9e4008431f1b6e99305b4e96094c587a0a1a9b01c7c6b3949fef718f51cb88d2820116cac14d9ccef2b5b61f442ba65a7a639365e5e46ca87312cd201c1c468cb92273e8c067be9c9c5155b9244432d02355c80ac987fb97bf9936dd03a46e5b169907616d488ae25284a8559ccf4a222774a9a1e47147572f691c18593c812e0526bee992145abb72ba4f62855290c60aed25cc80880505609e06c8418f775f08f5231e269ab9820cca806b33a942a6dbcf65a008b75a65a741a98e111686b20844d64deafb90d1660ae3b077b2674eccf445a99199a4807c317ca4bfb536bf9565a0c52685f2cefe142e03833000375cd24a422cf10b69b70de57aceea4067c6a031b62286067c3310f34ec192639595c9f7cc6fdd827b0023673c28b4de10448547a4ee184465aa2e23d88be421b4fd6b165f7c919537382bd8680ed221a7789887e51649b693074621b507b6cc0331465726fa8652475081ef39529536c3b1c2b216aa974bc421c91c247e11a1530c72c6ecbe0dfc0c014c77835bbff15b9ba2a521d89559a3330755a2776f9c58022927d6e4ab0e7a2671ec854308b4b67c04bbe620013969139801b072a05cf764c9663beae52585d2cfa5ba05013895ca1494a3c8ce65d47110484b7b8cab5763b255b17f9cd2448879121e9a7d9b703fb52296e4026250650076f1ab968817a6216316e33bc58840dc849fa1843fdd9764fbb30032847d11b47a8021544252a7cbb53e7629a8ade369dea15193c31811298e3676c97484b913e34ad9ca645669a349da642a69144197160f14498934859e6a025a7bad957b32c7c32104798da34940c25a797d5163ee8c6b6d984a8cd25dfef76222c878b5c5561dcb9b1f60ba65c02f65050d7435aeeb99683c69a275d306da309e2d0245e77b86d61c4058b9c2d75960b4c752e6d873581385e3601dc28742c1f8114601020da5289a781de78633f6f542ec67c8dcd47c750662942a05a0bb0da21260c17240006403b08476796c445af56546359b97e8a9838c75e349534e012b86b970d949356b555768fb5950c94d3e7b994dc4b61e14481afc5d785a7363e4b21bb13f072894115467de86c2d996a7bdf3c205c5797eb6534f456ae7c23724d59b8016486d23408052ad129b158609100e8c0c5b50ca5d3a7755226d648ea90582dbd898bb9bc5aaec802566bcc26043a4e00ad3ea86e62a63c6c25315ecfe4065d7994d2bd99858bb8c69ae6f41dd9394a37c5cb3e30d9cc8113ea21b824a07b3c32fc77b142251a79df4038d2ea4ccdcbe43";
char* ci_str = "46b07359c29a53873e8f63ebb831ccae24bf612024b5e99cd6d5c1e3d1c264e0510c66de4229868338c200e1e66cbed66b46097684da65c942adf47c69e9a5bc776547e14dc3ed88106133c70044122c5cefc55d99d257b310a2ad4a5965588576d673be4d01d7f9713fc99774f9d0984eacc15284421db16107c25bf12b8a4fcfa2fdf82969255c989580b66d5d8755028253300d5cc41e6f1a3d22f7e3b20f41bbecfed57b392123d5c57b75fe41029812f3ae066863e8aa44a13750165521f06707ccc1e7ad177f0a5bd6445ca6ea9e3bd57fedb217a08f7d9ca48fdc294680e12e8f4c5fbc0a17dfd8c00567c79f7d1bffd8dcff4b7f4055a428e4281bbaa018019d8c9967cf525bf2aff4e148d7450c5e73b357aee77760560779dd781a26e0c08654036f2549dcf4ee752c5574c88bef39d74108f9523257693028478c8ea84cf5638336542436d26862c6845848535f771d498f8848aceaeed94fce1fabcf4c015a4c89459059ba0e9a9c836a35c86df3d024b6982500684653c16713a9f435e6ed4a592981de07efce78019808ced44483868deccc52216aa4839577be8bc74dfbc4589256d6100d9f5705b242ac4480a7269a303561159423ca2fa0d2cc04744166d5a642c80d051692cff891ce1d2d7ab5b358590aa4aea55456f2d7d465bca404487638d6453141d5a2b3b7a6935e0110085ecf607123d7c424dbb4f13ceb92bab75b6cd076ebc94420ef0134a1ad534c1a6aae3069eb2971d9c8a0df4be7c631b481b3822277bf2aacf94ce780cd56ffb1ef842b7c2f099da875a2a880ae2c2fdbefc647ef3d8044ebfe68295f7ddb5a4dfeeb06c3430b6c22c815cacb38b0b4e594fe923a3e1c85427e21bd38357e2f7cc8dfd3d10358b55cd5f94d575e499764d8af39d335e7b31f6d6b5a18624c5b6d65b098ed519391d1d9e5f0f88786e62701b05fed881de4ac41cd1e3a2c59cd0537db52bc63dc0b20e4fa21de6851a1aacaa3dd668c5b194ae5cbb459c3bd3c83b724324ee76e8760bb229ddb00295e744b731e2a7e2d63ae39461f77dda99555b07a34a6f8d0747f80";
// char* ss1_str = "78698cea605c8ceff11e704ef9b4a6ce215b8d3d14bb7f1c985326dea6cdd2d2";
// char* pk_str = "115ACE0E64677CBB7DCFC93C16D3A305F67615A488D711AA56698C5663AB7AC9CE66D547C0595F98A43F4650BBE08C364D976789117D34F6AE51AC063CB55C6CA32558227DFEF807D19C30DE414424097F6AA236A1053B4A07A76BE372A5C6B6002791EBE0AFDAF54E1CA237FF545BA68343E745C04AD1639DBC590346B6B9569B56DBBFE53151913066E5C85527DC9468110A136A411497C227DCB8C9B25570B7A0E42AADA6709F23208F5D496EBAB7843F6483BF0C0C73A40296EC2C6440001394C99CA173D5C775B7F415D02A5A26A07407918587C41169F2B7178755ACC27FC8B19C4C4B3FCD41053F2C74C8A10A8321241B2802432875AE808B9EF1365C7B8A52902F1317BA2FB0269F47930672107B4726FEF64547394D3320C8F120B3C2F4725B0305FAB88CC7981FCB09A76A1CBF7F179F43BB0A4C8B0590857F1E69708466C7F8607391E7BC5268BFD3D7A1DFFCB4ECA2A1C9B597593013D5FC4202EC2B74E57AB76BBCF3632BBAF97CDC418A6F16392838CA9BF45DDF023777B7561833C105190F94F302C59B531900BBC816361FAA5B3380CA3A893104CA7388B185671B3E5FE3790E9A626EC46D9B0B33C7A419AF7B32B6859894F575D82AC5456B5490A7AF8FE61046360589ECBA7244236F4123116B6174AA179249A49195B356C72FC6641F0251812EAA98570B046699070E0819DC2713F469137DFC6A3D7B92B298995EE780369153AC366B06D7249CD09E1B3378FB04399CECB8650581D637C79AE67D6F2CAF6ABACF598159A7792CB3C971D1499D2373AD20F63F03BB59ED137384AC61A7155143B8CA4932612EC915E4CA346A9BCE5DD60417C6B2A89B1CC435643F875BDC5A7E5B3481CF919EA09172FEBC46D4FC3FB0CB9591704EE2DBB61844B2F3314A06BB6C6D34005E485CE667BDC7D098586928D2D91340F00419EA401351A240A0B041058BEFB0C2FD32645B7A2DF8F5CBFD873327C978D7B351A28088438837024C52B9C295CD713646FB5D6C0CCFB470734AC2B2BC8123C2C13DF6938E92455A862639FEB8A64B85163E32707E037B38D8AC3922B45187BB65EAFD465FC64A0C5F8F3F9003489415899D59A543D8208C54A3166529B53922";
// char* sk_str = "6C892B0297A9C7641493F87DAF3533EED61F07F4652066337ED74046DCC71BA03F30960103161F7DEB53A71B11617263FE2A809769CE6D70A85FE600ECE29D7F36A16D331B8B2A9E1DB8C090742DF0739FF060CEB4ECC5AB1C5E55AC97BB66A7F895105D57782B229538E3421544A3421408DBF44910934CC423774F1676FF1C306F97555F57B4AED7A6BAB950A8163C8D318DEA62751BD6ABC5069C06C88F330026A19806A03B97A7696B56DA21827BB4E8DC031152B41B892A9E99ADF6E1963E96578828154F467033846920FBB4B80544E7E8A81AE963CF368C9BA037A8C2AD62E32B6E61C91D75CE005AB30F8099A1F29D7B6305B4DC06E25680BB00992F717FE6C115A8084231CC79DD700EA6912AC7FA0D937BB6A756662230470C189B5AA1653DEB937D5A9C25A21D93B19074FC239D8153539797C7D4AB62649D76AA553736A949022C22C52BAEEC605B32CE9E5B9384903558CA9D6A3ABA90423EEDA01C94198B192A8BA9063497A0C5013307DDD863526471A4D99523EB417F291AAC0C3A581B6DA00732E5E81B1F7C879B1693C13B6F9F7931622429E542AF4069222F045544E0CC4FB24D4448CF2C6596F5CB08624B1185013B6B020892F96BDFD4ADA9179DE727B8D9426E0996B5D34948CE02D0C369B37CBB54D3479ED8B582E9E728929B4C71C9BE11D45B20C4BDC3C74313223F58274E8BA5244447C495950B84CB0C3C273640108A3397944573279328996CDC0C913C958AD620BA8B5E5ECBBB7E13CB9C70BD5AB30EB7488C97001C20498F1D7CC06DA76BF520C658CCADFA2956424557ABEA8AB89239C17833DC3A49B36A9AE9A486940540EB444F97152357E02035939D75A3C025F41A40082382A0733C39B0622B740E407592C62ECAEB1432C445B3703A86F6981A278157EA95A6E92D55E4B972F936C2F0A658280EA2B07A48992DF8937E0A2AC1DCC974FE00AAE1F561FA258E2D259C3E861DCE236039127606FC1CE009003A7BAC942101DCB822B1F3C12BF73238F546E01C36B5A6936192995CC69C63237409CB53C2E35D74890D18885376FA5503B107A2A392115ACE0E64677CBB7DCFC93C16D3A305F67615A488D711AA56698C5663AB7AC9CE66D547C0595F98A43F4650BBE08C364D976789117D34F6AE51AC063CB55C6CA32558227DFEF807D19C30DE414424097F6AA236A1053B4A07A76BE372A5C6B6002791EBE0AFDAF54E1CA237FF545BA68343E745C04AD1639DBC590346B6B9569B56DBBFE53151913066E5C85527DC9468110A136A411497C227DCB8C9B25570B7A0E42AADA6709F23208F5D496EBAB7843F6483BF0C0C73A40296EC2C6440001394C99CA173D5C775B7F415D02A5A26A07407918587C41169F2B7178755ACC27FC8B19C4C4B3FCD41053F2C74C8A10A8321241B2802432875AE808B9EF1365C7B8A52902F1317BA2FB0269F47930672107B4726FEF64547394D3320C8F120B3C2F4725B0305FAB88CC7981FCB09A76A1CBF7F179F43BB0A4C8B0590857F1E69708466C7F8607391E7BC5268BFD3D7A1DFFCB4ECA2A1C9B597593013D5FC4202EC2B74E57AB76BBCF3632BBAF97CDC418A6F16392838CA9BF45DDF023777B7561833C105190F94F302C59B531900BBC816361FAA5B3380CA3A893104CA7388B185671B3E5FE3790E9A626EC46D9B0B33C7A419AF7B32B6859894F575D82AC5456B5490A7AF8FE61046360589ECBA7244236F4123116B6174AA179249A49195B356C72FC6641F0251812EAA98570B046699070E0819DC2713F469137DFC6A3D7B92B298995EE780369153AC366B06D7249CD09E1B3378FB04399CECB8650581D637C79AE67D6F2CAF6ABACF598159A7792CB3C971D1499D2373AD20F63F03BB59ED137384AC61A7155143B8CA4932612EC915E4CA346A9BCE5DD60417C6B2A89B1CC435643F875BDC5A7E5B3481CF919EA09172FEBC46D4FC3FB0CB9591704EE2DBB61844B2F3314A06BB6C6D34005E485CE667BDC7D098586928D2D91340F00419EA401351A240A0B041058BEFB0C2FD32645B7A2DF8F5CBFD873327C978D7B351A28088438837024C52B9C295CD713646FB5D6C0CCFB470734AC2B2BC8123C2C13DF6938E92455A862639FEB8A64B85163E32707E037B38D8AC3922B45187BB65EAFD465FC64A0C5F8F3F9003489415899D59A543D8208C54A3166529B539227FFAD1BC8AF73B7E874956B81C2A2EF0BFABE8DC93D77B2FBC9E0C64EFA01E848626ED79D451140800E03B59B956F8210E556067407D13DC90FA9E8B872BFB8F";
// char* ci_str = "EDF24145E43B4F6DC6BF8332F54E02CAB02DBF3B5605DDC90A15C886AD3ED489462699E4ABED44350BC3757E2696FBFB2534412E8DD201F1E4540A3970B055FE3B0BEC3A71F9E115B3F9F39102065B1CCA8314DCC795E3C0E8FA98EE83CA6628457028A4D09E839E554862CF0B7BF56C5C0A829E8657947945FE9C22564FBAEBC1B3AF350D7955508A26D8A8EB547B8B1A2CF03CCA1AABCE6C3497783B6465BA0B6E7ACBA821195124AEF09E628382A1F914043BE7096E952CBC4FB4AFED13609046117C011FD741EE286C83771690F0AEB50DA0D71285A179B215C6036DEB780F4D16769F72DE16FDADAC73BEFA5BEF8943197F44C59589DC9F4973DE1450BA1D0C3290D6B1D683F294E759C954ABE8A7DA5B1054FD6D21329B8E73D3756AFDA0DCB1FC8B1582D1F90CF275A102ABC6AC699DF0C5870E50A1F989E4E6241B60AAA2ECF9E8E33E0FFCF40FE831E8FDC2E83B52CA7AB6D93F146D29DCA53C7DA1DB4AC4F2DB39EA120D90FA60F4D437C6D00EF483BC94A3175CDA163FC1C2828BE4DBD6430507B584BB5177E171B8DDA9A4293C3200295C803A865D6D2166F66BA5401FB7A0E853168600A2948437E036E3BF19E12FD3F2A2B8B343F784248E8D685EB0AFDE6315338730E7A1001C27D8D2A76FA69D157BA1AC7AD56DA5A8C70FE4B5B8D786DC6FC0566BA8E1B8816334D32A3FB1CE7D4D5E4C332AF7B003D091741A3D5C965292255DFF8ED2BBF1F9116BE50C17B8E548748AD4B2E957BBD1953482A2E1718CEC66CD2C81F572D552B7187885E6B8943D6431413C59EBB7E036048490BE5289E95B20A89E8B159F61A9A9886E147568F4C9021F362F02688A1C8C3BB0D24086880E55B6EDB43F3745D2C166DC1CB743C76FE6BE523A893CC764D16435C37851252A81E2FFBA0F18971A3DEE37D4877CB928E36E5235037A6B2057897D518A5F0E348E3AB6D5B52DFC60757F3B41A4FEC7828F1DEEAF4587CCC8EADF647F4D203B2FAA05A649B582340CB4CACE57A30711BE752FACF0227D0A80C4128442DDC544BE805B9CFE8FE9B1237C80F96787CD9281CCF270C1AFC0670D";
// char* ss1_str = "0A6925676F24B22C286F4C81A4224CEC506C9B257D480E02E3B49F44CAA3237F";
// key gen
hex_str_to_uint8_arr(pk_str, pk);
hex_str_to_uint8_arr(sk_str, sk_a);
// Encapsulation
hex_str_to_uint8_arr(ci_str, sendb);
// decapsulation
// hex_str_to_uint8_arr(ss1_str, key_b);
// Key-pair generation
// crypto_kem_keypair(pk, sk_a);
// printf("\npk = ");
// printbytes(pk, CRYPTO_PUBLICKEYBYTES);
// printf("\nsk = ");
// printbytes(sk_a, CRYPTO_SECRETKEYBYTES);
// Encapsulation
crypto_kem_enc(sendb, key_b, pk);
// printf("\nci = ");
// printbytes(sendb, CRYPTO_CIPHERTEXTBYTES);
// printf("\nss1 = ");
// printbytes(key_b, CRYPTO_BYTES);
// Decapsulation
crypto_kem_dec(key_a, sendb, sk_a);
printf("key_a(복호값) = ");
printbytes(key_a, CRYPTO_BYTES);
printf("key_b(암호값) = ");
printbytes(key_b, CRYPTO_BYTES);
for (int j = 0; j < CRYPTO_BYTES; j++) {
if (key_a[j] != key_b[j]) {
printf("ERROR\n");
return -1;
}
}
printf("SUCCESS\n");
return 0;
}