运算符#

cuPQC 运算符用于描述要执行的操作,并配置执行。它们通过加法(+)组合以形成 cuPQC *描述符*。

描述运算符#

算法#

template<algorithm Alg>
Algorithm()#

设置要使用的算法 Alg。有效值是

enum algorithm#
enumerator ML_KEM#

基于模块格的密钥封装机制 (FIPS-203)。

enumerator ML_DSA#

基于模块格的数字签名 (FIPS-204)。

没有默认值。

安全类别#

template<unsigned int Category>
SecurityCategory()#

设置 NIST 安全类别,该类别确定要使用的算法的参数集。Category 的有效值取决于 Algorithm 运算符的值。没有默认值。

为有效组合提供了便捷别名:例如 ML_KEM_512() 等效于 Algorithm<algorithm::ML_KEM>() + SecurityCategory<1>()

有效组合和别名构造函数是

名称

算法

安全类别

别名

ML-KEM-512

algorithm::ML_KEM

1

ML_KEM_512()

ML-KEM-768

algorithm::ML_KEM

3

ML_KEM_768()

ML-KEM-1024

algorithm::ML_KEM

5

ML_KEM_1024()

ML-DSA-44

algorithm::ML_DSA

2

ML_DSA_44()

ML-DSA-65

algorithm::ML_DSA

3

ML_DSA_65()

ML-DSA-87

algorithm::ML_DSA

5

ML_DSA_87()

函数#

template<function Fn>
Function()#

设置要使用的函数 Fn。有效值是

enum function#
enumerator Keygen#

生成公钥和私钥。对 algorithm::ML_KEMalgorithm::ML_DSA 均有效

enumerator Encaps#

封装:从公钥生成共享密钥和密文。仅对 algorithm::ML_KEM 有效。

enumerator Decaps#

解封装:从密文和私钥派生共享密钥。仅对 algorithm::ML_KEM 有效。

enumerator Sign#

使用私钥从消息生成签名。仅对 algorithm::ML_DSA 有效。

enumerator Verify#

使用公钥验证消息的签名。仅对 algorithm::ML_DSA 有效。

没有默认值。

执行运算符#

区块#

Block()#

指定运算符将在单个 CUDA 区块中执行:区块中的所有线程必须使用相同的参数调用 execute(...)

需要 BlockDim 运算符。

目前这是唯一支持的执行模式。

区块维度#

template<unsigned int X, unsigned int Y = 1, unsigned int Z = 1>
BlockDim(
)#

指定使用 Block() 运算符时内核的区块维度。当前支持的 X 值是 3264128256。目前 YZ 必须为 1

默认值是 BlockDim<128, 1, 1>;这是一个与实现相关的数值。

可以通过 BlockDim 访问器从描述符访问 XYZ 的值。