结构体
app_pkc_params_t
结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
app_pkc_type_t use_type |
设置PKC运行模式 |
该参数的取值可以是下列值中的任意一个:
|
pkc_init_t init |
设置PKC初始化参数 |
参考pkc_init_t结构体 |
void *p_result |
PKC计算结果指针 |
合法的缓存区地址 |
uint32_t *p_kout |
蒙哥马利求逆Kout计算结果指针 |
合法的缓存区地址 |
pkc_env_t pkc_env |
仅用于记录初始化设备的句柄、相关参数和信号量等,不需要配置 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h。
pkc_init_t
结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
ecc_curve_init_t *p_ecc_curve |
椭圆曲线结构体指针 |
该参数的取值可以通过下列宏定义进行初始化:
|
uint32_t data_bits |
数据位数,可根据数据大小(bit)进行取值,以bit为单位 |
256 ~ 2048 |
uint32_t secure_mode |
安全模式。结果表明,采用抗DPA的软件算法和硬件措施,性能损失约为35% ~ 50%。 |
该参数的取值可以是下列值中的任意一个:
|
uint32_t (*random_func)(void) |
random_func需要指定一个产生随机数的函数指针(进行椭圆曲线的标量乘法运算时必须设置) |
一个产生随机数的函数指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_evt_t
结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
app_pkc_evt_type_t type |
事件的类型 |
该参数的取值可以是下列值中的任意一个:
|
uint32_t error_code |
错误码 |
该参数的取值可以是下列值中的任意一个:
|
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h。
app_pkc_ecc_point_multi_t
app_pkc_ecc_point_multi_t为pkc_ecc_point_multi_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_K |
操作数K的指针 |
操作数K的指针 |
ecc_point_t *p_ecc_point |
椭圆曲线点指针 |
椭圆曲线点指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_modular_add_t
app_pkc_modular_add_t为pkc_modular_add_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_B |
操作数B的指针 |
操作数B的指针 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_modular_sub_t
app_pkc_modular_sub_t为pkc_modular_sub_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_B |
操作数B的指针 |
操作数B的指针 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_modular_shift_t
app_pkc_modular_shift_t为pkc_modular_shift_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t shift_bits |
左移bit位数值 |
通常范围为0 ~ 31 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_modular_compare_t
app_pkc_modular_compare_t为pkc_modular_compare_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_montgomery_multi_t
app_pkc_montgomery_multi_t为pkc_montgomery_multi_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_B |
操作数B的指针 |
操作数B的指针 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
uint32_t ConstP |
蒙哥马利乘法常数 |
(-P[0])^(-1) mod 2^32 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_montgomery_inversion_t
app_pkc_montgomery_inversion_t为pkc_montgomery_inversion_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_P |
素数P的指针 |
素数P的指针 |
uint32_t ConstP |
蒙哥马利乘法常数 |
(-P[0])^(-1) mod 2^32 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_big_number_multi_t
app_pkc_big_number_multi_t为pkc_big_number_multi_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_B |
操作数B的指针 |
操作数B的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。
app_pkc_big_number_add_t
app_pkc_big_number_add_t为pkc_big_number_add_t结构体别名,源结构体定义如下:
成员 | 描述 | 取值 |
---|---|---|
uint32_t *p_A |
操作数A的指针 |
操作数A的指针 |
uint32_t *p_B |
操作数B的指针 |
操作数B的指针 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_pkc.h和SDK_Folder\drivers\inc\hal\gr55xx_hal_pkc.h。