diff --git a/src/kyber.c b/src/kyber.c index 196d1bf6..87360cdd 100644 --- a/src/kyber.c +++ b/src/kyber.c @@ -715,6 +715,7 @@ int kyber_cpa_private_key_to_bytes(const KYBER_CPA_KEY *key, uint8_t **out, size } if (out && *out) { memcpy(*out, key->s, sizeof(key->s)); + *out += sizeof(key->s); } *outlen += sizeof(key->s); return 1; diff --git a/tests/kybertest.c b/tests/kybertest.c index eed6e984..874ce94f 100644 --- a/tests/kybertest.c +++ b/tests/kybertest.c @@ -468,31 +468,34 @@ static int test_kyber_cpa(void) static int test_kyber_kem(void) { + uint8_t random[32] = {0}; KYBER_KEY key; KYBER_CIPHERTEXT c; uint8_t K[32]; uint8_t K_[32]; - if (kyber_key_generate_ex(&key, NULL) != 1) { + memset(&key, 0, sizeof(key)); + + if (kyber_key_generate_ex(&key, random) != 1) { error_print(); return -1; } - kyber_public_key_print(stderr, 0, 0, "pk", &key); - kyber_private_key_print(stderr, 0, 0, "sk", &key); + kyber_public_key_print(stderr, 0, 4, "kyber_public_key", &key); + kyber_private_key_print(stderr, 0, 4, "kyber_private_key", &key); if (kyber_encap(&key, &c, K) != 1) { error_print(); return -1; } - kyber_ciphertext_print(stderr, 0, 0, "ciphertext", &c); - format_bytes(stderr, 0, 0, "KEM_K", K, 32); + kyber_ciphertext_print(stderr, 0, 4, "kyber_kem_ciphertext", &c); + format_bytes(stderr, 0, 4, "KEM_K", K, 32); if (kyber_decap(&key, &c, K_) != 1) { error_print(); return -1; } - format_bytes(stderr, 0, 0, "DEC_K", K_, 32); + format_bytes(stderr, 0, 4, "DEC_K", K_, 32); if (memcmp(K_, K, 32) != 0) { error_print(); @@ -645,10 +648,10 @@ int main(void) if (test_kyber_poly_ntt() != 1) goto err; if (test_kyber_poly_ntt_mul() != 1) goto err; if (test_kyber_cpa() != 1) goto err; - if (test_kyber_kem() != 1) goto err; if (test_kyber_cpa_key_to_bytes() != 1) goto err; if (test_kyber_key_to_bytes() != 1) goto err; if (test_kyber_cpa_ciphertext_to_bytes() != 1) goto err; + if (test_kyber_kem() != 1) goto err; printf("%s all tests passed\n", __FILE__); return 0; diff --git a/tools/kyberdecap.c b/tools/kyberdecap.c index 4a647062..65ced2fc 100644 --- a/tools/kyberdecap.c +++ b/tools/kyberdecap.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2025 The GmSSL Project. All Rights Reserved. + * Copyright 2014-2026 The GmSSL Project. 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. @@ -49,6 +49,8 @@ int kyberdecap_main(int argc, char **argv) KYBER_CIPHERTEXT ciphertext; + init_zeta(); + memset(&key, 0, sizeof(key)); argc--; diff --git a/tools/kyberencap.c b/tools/kyberencap.c index e0b8424e..966ba162 100644 --- a/tools/kyberencap.c +++ b/tools/kyberencap.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2025 The GmSSL Project. All Rights Reserved. + * Copyright 2014-2026 The GmSSL Project. 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. @@ -19,10 +19,6 @@ static const char *usage = "-pubkey file [-out file] -outkey file [-verbose]\n"; - -// decap 中的out一定是secret,而in 一定是ciphertext -// encap 中的out 是decap的in,因此encap中的out是ciphertext,而输出的secret是特殊的 - static const char *options = "Options\n" " -pubkey file Input public key file\n" @@ -52,6 +48,7 @@ int kyberencap_main(int argc, char **argv) uint8_t outkey[32]; + init_zeta(); argc--; argv++; diff --git a/tools/kyberkeygen.c b/tools/kyberkeygen.c index cc0b3f3e..a34656aa 100644 --- a/tools/kyberkeygen.c +++ b/tools/kyberkeygen.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2025 The GmSSL Project. All Rights Reserved. + * Copyright 2014-2026 The GmSSL Project. 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. @@ -42,6 +42,8 @@ int kyberkeygen_main(int argc, char **argv) uint8_t *ppubout = pubout; size_t outlen = 0, puboutlen = 0; + init_zeta(); + memset(&key, 0, sizeof(key)); argc--;