运算符#
cuPQC 运算符用于描述要执行的操作,并配置执行。它们通过加法(+
)组合以形成 cuPQC *描述符*。
描述运算符#
算法#
设置要使用的算法 Alg
。有效值是
-
enum algorithm#
没有默认值。
安全类别#
-
template<unsigned int Category>
SecurityCategory()#
设置 NIST 安全类别,该类别确定要使用的算法的参数集。Category
的有效值取决于 Algorithm
运算符的值。没有默认值。
为有效组合提供了便捷别名:例如 ML_KEM_512()
等效于 Algorithm<algorithm::ML_KEM>() + SecurityCategory<1>()
。
有效组合和别名构造函数是
名称 |
别名 |
||
---|---|---|---|
ML-KEM-512 |
|
|
|
ML-KEM-768 |
|
|
|
ML-KEM-1024 |
|
|
|
ML-DSA-44 |
|
|
|
ML-DSA-65 |
|
|
|
ML-DSA-87 |
|
|
函数#
设置要使用的函数 Fn
。有效值是
-
enum function#
-
enumerator Keygen#
生成公钥和私钥。对
algorithm::ML_KEM
和algorithm::ML_DSA
均有效
-
enumerator Encaps#
封装:从公钥生成共享密钥和密文。仅对
algorithm::ML_KEM
有效。
-
enumerator Decaps#
解封装:从密文和私钥派生共享密钥。仅对
algorithm::ML_KEM
有效。
-
enumerator Sign#
使用私钥从消息生成签名。仅对
algorithm::ML_DSA
有效。
-
enumerator Verify#
使用公钥验证消息的签名。仅对
algorithm::ML_DSA
有效。
-
enumerator Keygen#
没有默认值。
执行运算符#
区块#
-
Block()#
指定运算符将在单个 CUDA 区块中执行:区块中的所有线程必须使用相同的参数调用 execute(...)
。
需要 BlockDim
运算符。
目前这是唯一支持的执行模式。
区块维度#
-
template<unsigned int X, unsigned int Y = 1, unsigned int Z = 1>
BlockDim(
指定使用 Block()
运算符时内核的区块维度。当前支持的 X
值是 32
、64
、128
和 256
。目前 Y
和 Z
必须为 1
。
默认值是 BlockDim<128, 1, 1>
;这是一个与实现相关的数值。
可以通过 BlockDim
访问器从描述符访问 X
、Y
和 Z
的值。