PKC驱动结构和定义
ecc_point_t
PKC驱动的ECC点描述结构体ecc_point_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t X[ECC_U32_LENGTH] |
ECC点的X轴坐标。 |
0 ~ 2^256 - 1 |
uint32_t Y[ECC_U32_LENGTH] |
ECC点的Y轴坐标。 |
0 ~ 2^256 - 1 |
ecc_curve_init_t
PKC驱动的ECC椭圆曲线描述结构体ecc_curve_init_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t A[ECC_U32_LENGTH] |
操作数A数组。 |
0 ~ 2^256 - 1 |
uint32_t B[ECC_U32_LENGTH] |
操作数B数组。 |
0 ~ 2^256 - 1 |
uint32_t P[ECC_U32_LENGTH] |
质数P数组。 |
0 ~ 2^256 - 1 |
uint32_t PRSquare[ECC_U32_LENGTH] |
PRSquare数组。 |
R^2 mod P,其中R = 2^256。 |
uint32_t ConstP |
ConstP数组。 |
质数P的蒙哥马利常数。 |
uint32_t N[ECC_U32_LENGTH] |
质数N数组。 |
0 ~ 2^256 - 1 |
uint32_t NRSquare[ECC_U32_LENGTH] |
NRSquare数组。 |
R^2 mod N,其中 R = 2^256。 |
uint32_t ConstN |
ConstN数组。 |
质数N的蒙哥马利常数。 |
uint32_t H |
参数H。 |
0 ~ 2^32 - 1 |
ll_ecc_point_t G |
ECC点。 |
参考ll_ecc_point_t。 |
pkc_init_t
PKC驱动的初始化结构体pkc_init_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
ecc_curve_init_t *p_ecc_curve |
指向椭圆曲线描述类型的指针。 |
参考ecc_curve_init_t结构体。 |
uint32_t data_bits |
计算数据位宽。 |
256 ~ 2048 |
uint32_t secure_mode |
是否启用安全模式。 |
该参数的取值可以是下列值中的任意一个:
|
uint32_t (*random_func)(void) |
指定的随机数生成函数。 |
函数指针。 |
pkc_handle_t
PKC驱动的句柄结构体pkc_handle_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
pkc_regs_t *p_instance |
PKC外设实例。 |
该参数的取值是:PKC。 |
pkc_init_t init |
初始化结构体。 |
参考pkc_init_t结构体。 |
void *p_result |
指向数据运算结果的指针。 |
开发者需要在每次调用运算API前指定该参数。 |
uint32_t *k_kout |
指向蒙哥马利反演运算结果的指针。 |
开发者需要在每次调用运算API前指定该参数。 |
uint32_t shift_count |
移位计数(驱动负责管理,无需开发者初始化)。 |
N/A |
__IO hal_lock_t lock |
PKC锁(驱动负责管理,无需开发者初始化)。 |
N/A |
__IO hal_qspi_state_t state |
PKC运行状态(无需开发者初始化)。 |
该参数的取值可以是下列值中的任意一个:
|
__IO uint32_t error_code |
PKC错误码(无需开发者初始化)。 |
该参数的取值可以是下列值中的任意一个:
|
uint32_t timeout |
PKC(超时时间无需开发者初始化)。 |
N/A |
| uint32_t retention[1] | 保存PKC寄存器信息(驱动负责管理,无需开发者初始化) | N/A |
pkc_ecc_point_multi_t
PKC驱动的ECC点乘运算结构体pkc_ecc_point_multi_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_K |
输入参数K。 |
0 ~ 2^256 - 1 |
ecc_point_t *p_ecc_point |
输入参数ECCPoint。 |
pkc_rsa_modular_exponent_t
PKC驱动的RSA模幂运算结构体pkc_rsa_modular_exponent_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
uint32_t *p_R2 |
输入参数R2。 |
R2 = R^2 mod P,R = 2^data_bits |
uint32_t ConstP |
输入参数ConstP。 |
质数P的蒙哥马利常数。 |
pkc_modular_add_t
PKC驱动的模加运算结构体pkc_modular_add_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
pkc_modular_sub_t
PKC驱动的模减运算结构体pkc_modular_sub_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
pkc_modular_shift_t
PKC驱动的模左移运算结构体pkc_modular_shift_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t shift_bits |
输入参数左移位数。 |
1 ~ data_bits |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
pkc_modular_compare_t
PKC驱动的模比较运算结构体pkc_modular_compare_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
pkc_montgomery_multi_t
PKC驱动的蒙哥马利乘运算结构体pkc_montgomery_multi_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
uint32_t ConstP |
输入参数ConstP。 |
质数P的蒙哥马利常数。 |
pkc_montgomery_inversion_t
PKC驱动的蒙哥马利逆运算结构体pkc_montgomery_inversion_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_P |
输入参数质数P。 |
指向data_bits长度的数据。 |
pkc_big_number_multi_t
PKC驱动的大数乘运算结构体pkc_big_number_multi_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |
pkc_big_number_add_t
PKC驱动的大数加运算结构体pkc_big_number_add_t的定义如下:
| 数据域 | 域段描述 | 取值 |
|---|---|---|
uint32_t *p_A |
输入参数运算数A。 |
指向data_bits长度的数据。 |
uint32_t *p_B |
输入参数运算数B。 |
指向data_bits长度的数据。 |