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

PKC驱动API描述

PKC驱动的API主要包括:

表 210 PKC驱动的APIs
API类别 API名称 描述

初始化

hal_pkc_init()

初始化PKC外设,配置数据位宽等参数。

hal_pkc_deinit()

反初始化PKC外设。

hal_pkc_msp_init()

初始化PKC外设所使用的NVIC中断。

hal_pkc_msp_deinit()

反初始化PKC外设所使用的NVIC中断。

IO操作

hal_pkc_rsa_modular_exponent()

RSA模幂运算,轮询方式。

hal_pkc_ecc_point_multi()

ECC点乘运算,轮询方式。

hal_pkc_modular_add()

模加运算,轮询方式。

hal_pkc_modular_sub()

模减运算,轮询方式。

hal_pkc_modular_left_shift()

模左移运算,轮询方式。

hal_pkc_modular_compare()

模比较运算,轮询方式。

hal_pkc_montgomery_multi()

蒙哥马利乘运算,轮询方式。

hal_pkc_montgomery_inversion()

蒙哥马利逆运算,轮询方式。

hal_pkc_big_number_multi()

大数乘运算,轮询方式。

hal_pkc_big_number_add()

大数加运算,轮询方式。

hal_pkc_ecc_point_multi_it()

ECC点乘运算,中断方式。

hal_pkc_modular_add_it()

模加运算,中断方式。

hal_pkc_modular_sub_it()

模减运算,中断方式。

hal_pkc_modular_left_shift_it()

模左移运算,中断方式。

hal_pkc_modular_compare_it()

模比较运算,中断方式。

hal_pkc_montgomery_multi_it()

蒙哥马利乘运算,中断方式。

hal_pkc_montgomery_inversion_it()

蒙哥马利逆运算,中断方式。

hal_pkc_big_number_multi_it()

大数乘运算,中断方式。

hal_pkc_big_number_add_it()

大数加运算,中断方式。

中断处理及回调函数

hal_pkc_irq_handler()

中断处理函数。

hal_pkc_done_callback()

运算完成中断回调函数。

hal_pkc_error_callback()

错误中断回调函数。

hal_pkc_overflow_callback()

运算溢出中断回调函数。

状态及错误

hal_pkc_get_state()

获取驱动运行状态。

hal_pkc_get_error()

获取错误码。

控制

hal_pkc_set_timeout()

设置超时时间。

睡眠相关

hal_pkc_suspend_reg()

睡眠时挂起PKC配置相关的寄存器。

hal_pkc_resume_reg()

唤醒时恢复PKC配置相关的寄存器。

下面章节将对各API进行详细描述。

hal_pkc_init

表 211 hal_pkc_init接口
函数原型

hal_status_t hal_pkc_init(pkc_handle_t *p_pkc)

功能说明

根据pkc_init_t里的参数初始化PKC外设和初始化关联句柄。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针,该结构体变量包含指定的PKC的配置信息。

返回值

HAL状态。

备注

hal_pkc_deinit

表 212 hal_pkc_deinit接口
函数原型

hal_status_t hal_pkc_deinit(pkc_handle_t *p_pkc)

功能说明

反初始化PKC外设。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针,该结构体变量包含指定的PKC的配置信息。

返回值

HAL状态。

备注

hal_pkc_msp_init

表 213 hal_pkc_msp_init接口
函数原型

void hal_pkc_msp_init(pkc_handle_t *p_pkc)

功能说明

初始化PKC外设所使用的NVIC中断等配置。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

该函数为weak类型的空函数,开发者需重写该API完成NVIC中断的初始化。

hal_pkc_msp_deinit

表 214 hal_pkc_msp_deinit接口
函数原型

void hal_pkc_msp_deinit(pkc_handle_t *p_pkc)

功能说明

反初始化PKC外设所使用的NVIC中断等配置。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

该函数为weak类型的空函数,开发者需重写该API完成NVIC中断的反初始化。

hal_pkc_rsa_modular_exponent

表 215 hal_pkc_rsa_modular_exponent接口
函数原型

hal_status_t hal_pkc_rsa_modular_exponent(pkc_handle_t *p_pkc, pkc_rsa_modular_exponent_t *p_input, uint32_t timeout)

功能说明

实现RSA算法中模幂运算:Result = A^B mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_rsa_modular_exponent_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_ecc_point_multi

表 216 hal_pkc_ecc_point_multi接口
函数原型

hal_status_t hal_pkc_ecc_point_multi(pkc_handle_t *p_pkc, pkc_ecc_point_multi_t *p_input, uint32_t timeout)

功能说明

实现ECC椭圆算法中点乘运算:Result = K * Point,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_ecc_point_multi_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_ecc_point_multi_it

表 217 hal_pkc_ecc_point_multi_it接口
函数原型

hal_status_t hal_pkc_ecc_point_multi_it(pkc_handle_t *p_pkc, pkc_ecc_point_multi_t *p_input)

功能说明

实现ECC椭圆算法中点乘运算:Result = K * Point,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_ecc_point_multi_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_modular_add

表 218 hal_pkc_modular_add接口
函数原型

hal_status_t hal_pkc_modular_add(pkc_handle_t *p_pkc, pkc_modular_add_t *p_input, uint32_t timeout)

功能说明

实现模加运算:Result = (A + B) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_add_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_modular_add_it

表 219 hal_pkc_modular_add_it接口
函数原型

hal_status_t hal_pkc_modular_add_it(pkc_handle_t *p_pkc, pkc_modular_add_t *p_input)

功能说明

实现模加运算:Result = (A + B) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_add_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_modular_sub

表 220 hal_pkc_modular_sub接口
函数原型

hal_status_t hal_pkc_modular_sub(pkc_handle_t *p_pkc, pkc_modular_sub_t *p_input, uint32_t timeout)

功能说明

实现模减运算:Result = (A - B) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_sub_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_modular_sub_it

表 221 hal_pkc_modular_sub_it接口
函数原型

hal_status_t hal_pkc_modular_sub_it(pkc_handle_t *p_pkc, pkc_modular_sub_t *p_input)

功能说明

实现模减运算:Result = (A - B) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_sub_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_modular_left_shift

表 222 hal_pkc_modular_left_shift接口
函数原型

hal_status_t hal_pkc_modular_left_shift(pkc_handle_t *p_pkc, pkc_modular_shift_t *p_input, uint32_t timeout)

功能说明

实现模左移运算:Result = (A << ShiftBits) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_shift_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_modular_left_shift_it

表 223 hal_pkc_modular_left_shift_it接口
函数原型

hal_status_t hal_pkc_modular_left_shift_it(pkc_handle_t *p_pkc, pkc_modular_shift_t *p_input)

功能说明

实现模左移运算:Result = (A << ShiftBits) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_shift_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_modular_compare

表 224 hal_pkc_modular_compare接口
函数原型

hal_status_t hal_pkc_modular_compare(pkc_handle_t *p_pkc, pkc_modular_compare_t *p_input, uint32_t timeout)

功能说明

实现模比较运算:Result = A mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_compare_t结构体变量指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_modular_compare_it

表 225 hal_pkc_modular_compare_it接口
函数原型

hal_status_t hal_pkc_modular_compare_it(pkc_handle_t *p_pkc, pkc_modular_compare_t *p_input)

功能说明

实现模比较运算:Result = A mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_modular_compare_t结构体变量指针。

返回值

HAL状态。

备注

hal_pkc_montgomery_multi

表 226 hal_pkc_montgomery_multi接口
函数原型

hal_status_t hal_pkc_montgomery_multi(pkc_handle_t *p_pkc, pkc_montgomery_multi_t *p_input, uint32_t timeout)

功能说明

实现模乘运算:Result = A * B mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_montgomery_multi_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_montgomery_multi_it

表 227 hal_pkc_montgomery_multi_it接口
函数原型

hal_status_t hal_pkc_montgomery_multi_it(pkc_handle_t *p_pkc, pkc_montgomery_multi_t *p_input)

功能说明

实现模乘运算:Result = A * B mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_montgomery_multi_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_montgomery_inversion

表 228 hal_pkc_montgomery_inversion接口
函数原型

hal_status_t hal_pkc_montgomery_inversion(pkc_handle_t *p_pkc, pkc_montgomery_inversion_t *p_input, uint32_t *p_K, uint32_t timeout)

功能说明

实现模逆运算:Result = A^(-1) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_montgomery_inversion_t结构体变量的指针。

p_K:指向输出参数K的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_montgomery_inversion_it

表 229 hal_pkc_montgomery_inversion_it接口
函数原型

hal_status_t hal_pkc_montgomery_inversion_it(pkc_handle_t *p_pkc, pkc_montgomery_inversion_t *p_input, uint32_t *p_K)

功能说明

实现模逆运算:Result = A^(-1) mod P,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_montgomery_inversion_t结构体变量的指针。

p_K:指向输出参数K的指针。

返回值

HAL状态。

备注

hal_pkc_big_number_multi

表 230 hal_pkc_big_number_multi接口
函数原型

hal_status_t hal_pkc_big_number_multi(pkc_handle_t *p_pkc, pkc_big_number_multi_t *p_input, uint32_t timeout)

功能说明

实现大数乘运算:Result = A * B,运算数最大位数1024 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_big_number_multi_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_big_number_multi_it

表 231 hal_pkc_big_number_multi_it接口
函数原型

hal_status_t hal_pkc_big_number_multi_it(pkc_handle_t *p_pkc, pkc_big_number_multi_t *p_input)

功能说明

实现大数乘运算:Result = A * B,运算数最大位数1024 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_big_number_multi_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_big_number_add

表 232 hal_pkc_big_number_add接口
函数原型

hal_status_t hal_pkc_big_number_add(pkc_handle_t *p_pkc, pkc_big_number_add_t *p_input, uint32_t timeout)

功能说明

实现大数加运算:Result = A + B,运算数最大位数2048 bits,结果数最大位数2048 bits,轮询方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_big_number_add_t结构体变量的指针。

timeout:超时时间。

返回值

HAL状态。

备注

hal_pkc_big_number_add_it

表 233 hal_pkc_big_number_add_it接口
函数原型

hal_status_t hal_pkc_big_number_add_it(pkc_handle_t *p_pkc, pkc_big_number_add_t *p_input)

功能说明

实现大数加运算:Result = A + B,运算数最大位数2048 bits,结果数最大位数2048 bits,中断方式。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

p_input:指向输入参数pkc_big_number_add_t结构体变量的指针。

返回值

HAL状态。

备注

hal_pkc_irq_handler

表 234 hal_pkc_irq_handler接口
函数原型

void hal_pkc_irq_handler(pkc_handle_t *p_pkc)

功能说明

处理PKC中断请求。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

hal_pkc_done_callback

表 235 hal_pkc_done_callback接口
函数原型

void hal_pkc_done_callback(pkc_handle_t *p_pkc)

功能说明

PKC运算完成回调。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。

hal_pkc_error_callback

表 236 hal_pkc_error_callback接口
函数原型

void hal_pkc_error_callback(pkc_handle_t *p_pkc)

功能说明

PKC运算错误回调。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。

hal_pkc_overflow_callback

表 237 hal_pkc_overflow_callback接口
函数原型

void hal_pkc_overflow_callback(pkc_handle_t *p_pkc)

功能说明

PKC大数乘/加运算溢出回调。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

备注

该函数为weak类型的空函数,当开发者需要使用该回调函数时,可重写该API。

hal_pkc_get_state

表 238 hal_pkc_get_state接口
函数原型

hal_pkc_state_t hal_pkc_get_state(pkc_handle_t *p_pkc)

功能说明

获取PKC运行状态。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

PKC运行状态,该参数的取值可以是下列值中的任意一个:

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

hal_pkc_get_error

表 239 hal_pkc_get_error接口
函数原型

uint32_t hal_pkc_get_error(pkc_handle_t *p_pkc)

功能说明

获取PKC错误码。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

返回值

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(逆运算输入参数不可逆)
备注

hal_pkc_set_timeout

表 240 hal_pkc_set_timeout接口
函数原型

void hal_pkc_set_timeout(pkc_handle_t *p_pkc , uint32_t timeout)

功能说明

设置PKC运算超时时间。

输入参数

p_pkc:指向pkc_handle_t结构体变量的指针。

timeout:运算超时时间。

返回值

备注

hal_pkc_suspend_reg

表 241 hal_pkc_suspend_reg接口
函数原型 hal_status_t hal_pkc_suspend_reg(pkc_handle_t *p_pkc)
功能说明 睡眠时挂起PKC配置相关的寄存器。
输入参数 p_pkc:指向pkc_handle_t结构体变量的指针
返回值

PKC运行状态,该参数的取值可以是下列值中的任意一个:

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

hal_pkc_resume_reg

表 242 hal_pkc_resume_reg接口
函数原型 hal_status_t hal_pkc_resume_reg(pkc_handle_t *p_pkc)
功能说明 唤醒时恢复PKC配置相关的寄存器。
输入参数 p_pkc:指向pkc_handle_t结构体变量的指针
返回值

PKC运行状态,该参数的取值可以是下列值中的任意一个:

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

扫描关注

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