30 行
1.1 KiB
C
30 行
1.1 KiB
C
|
|
/*
|
|||
|
|
* kyber512.c — Kyber512 变体翻译单元
|
|||
|
|
*
|
|||
|
|
* 安全级别:NIST Level 1(经典安全性约等于 AES-128)
|
|||
|
|
* 参数(KYBER_K = 2):
|
|||
|
|
* - 公钥:800 字节
|
|||
|
|
* - 私钥:1632 字节
|
|||
|
|
* - 密文:768 字节
|
|||
|
|
* - 共享密钥:32 字节
|
|||
|
|
*
|
|||
|
|
* 编译原理:
|
|||
|
|
* 在 #include 各实现文件之前先定义 KYBER_K=2,
|
|||
|
|
* params.h 中的 #ifndef KYBER_K 判断将使用此值,
|
|||
|
|
* KYBER_NAMESPACE 宏展开为 pqcrystals_kyber512_ref_##s,
|
|||
|
|
* 确保本翻译单元中所有符号名带有 "kyber512" 前缀,
|
|||
|
|
* 与 kyber768.c / kyber1024.c 的符号互不冲突。
|
|||
|
|
*
|
|||
|
|
* 注意:fips202 / randombytes 不在此处包含,它们在独立翻译单元中编译,
|
|||
|
|
* 链接器负责解析本文件中对 shake128_xxx / sha3_xxx 等函数的引用。
|
|||
|
|
*/
|
|||
|
|
#define KYBER_K 2
|
|||
|
|
#include "internal/kem.inc"
|
|||
|
|
#include "internal/indcpa.inc"
|
|||
|
|
#include "internal/poly.inc"
|
|||
|
|
#include "internal/polyvec.inc"
|
|||
|
|
#include "internal/ntt.inc"
|
|||
|
|
#include "internal/cbd.inc"
|
|||
|
|
#include "internal/reduce.inc"
|
|||
|
|
#include "internal/verify.inc"
|
|||
|
|
#include "internal/symmetric_shake.inc"
|