CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

PKC驱动结构和定义

ecc_point_t

PKC驱动的ECC点描述结构体ecc_point_t的定义如下:

表 196 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的定义如下:

表 197 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的定义如下:

表 198 pkc_init_t结构体
数据域 域段描述 取值

ecc_curve_init_t *p_ecc_curve

指向椭圆曲线描述类型的指针。

参考ecc_curve_init_t结构体。

uint32_t data_bits

计算数据位宽。

256 ~ 2048

uint32_t secure_mode

是否启用安全模式。

该参数的取值可以是下列值中的任意一个:

  • PKC_SECURE_MODE_DISABLE(禁用)
  • PKC_SECURE_MODE_ENABLE(启用)

uint32_t (*random_func)(void)

指定的随机数生成函数。

函数指针。

pkc_handle_t

PKC驱动的句柄结构体pkc_handle_t的定义如下:

表 199 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运行状态(无需开发者初始化)。

该参数的取值可以是下列值中的任意一个:

  • HAL_PKC_STATE_RESET(未初始化)
  • HAL_PKC_STATE_READY(已初始化且空闲)
  • HAL_PKC_STATE_BUSY(忙)
  • HAL_PKC_STATE_ERROR(错误)
  • HAL_PKC_STATE_TIMEOUT(超时)

__IO uint32_t error_code

PKC错误码(无需开发者初始化)。

该参数的取值可以是下列值中的任意一个:

  • HAL_PKC_ERROR_NONE(无错误)
  • HAL_PKC_ERROR_TIMEOUT(超时)
  • HAL_PKC_ERROR_TRANSFER(传输错误)
  • HAL_PKC_ERROR_OVERFLOW(溢出错误)
  • HAL_PKC_ERROR_INVALID_PARAM(非法参数)
  • HAL_PKC_ERROR_INVERSE_K(逆运算输出参数中K系数错误)
  • HAL_PKC_ERROR_IRREVERSIBLE(逆运算输入参数不可逆)

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的定义如下:

表 200 pkc_ecc_point_multi_t结构体
数据域 域段描述 取值

uint32_t *p_K

输入参数K。

0 ~ 2^256 - 1

ecc_point_t *p_ecc_point

输入参数ECCPoint。

参考ecc_point_t

pkc_rsa_modular_exponent_t

PKC驱动的RSA模幂运算结构体pkc_rsa_modular_exponent_t的定义如下:

表 201 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的定义如下:

表 202 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的定义如下:

表 203 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的定义如下:

表 204 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的定义如下:

表 205 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的定义如下:

表 206 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的定义如下:

表 207 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的定义如下:

表 208 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的定义如下:

表 209 pkc_big_number_add_t结构体
数据域 域段描述 取值

uint32_t *p_A

输入参数运算数A。

指向data_bits长度的数据。

uint32_t *p_B

输入参数运算数B。

指向data_bits长度的数据。

扫描关注

打开微信,使用“扫一扫”即可关注。