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

示例代码

PKC

示例工程使用PKC模块实现大模数运算,工程路径:SDK_Folder\projects\peripheral\pkc\app_pkc

示例工程流程图

PKC示例工程实现了大数模加、大数模减、大数模乘、大数模对比、大数模逆、大数模移位、大数加、大数乘、大数RSA模幂、大数ECC点乘运算。通过和理想运算结果进行比较验证运算正确性。

图 29 PKC实现大数运算流程

初始化参数

以大数模加为例,其他参考示例工程。

static void params_init(void)
{
    params_t.use_type = APP_PKC_TYPE_INTERRUPT;
    params_t.init.p_ecc_curve = NULL;
    params_t.init.data_bits = 256;
    params_t.init.secure_mode = PKC_SECURE_MODE_DISABLE;
    params_t.init.random_func = NULL;
    params_t.p_kout = NULL;
    params_t.p_result = NULL;
}
    params_init();
    params_t.p_result = Out_c;
  • use_type:传输方式,APP_PKC_TYPE_INTERRUPT(中断方式)

  • init.p_ecc_curve:椭圆曲线描述指针,示例工程不进行设置

  • params_t.init.data_bits:数据大小,256 bits

  • init.secure_mode:使能/不使能安全模式,PKC_SECURE_MODE_DISABLE(不使能安全模式)

  • init.random_func:指向生成随机数的函数,示例工程不进行设置

  • p_kout:运算结果Out_c(初始化参数为0的数值)

重要函数

  • 初始化PKC
    app_pkc_init(&params_t, app_pkc_event_handler)
    • params_t:初始化参数结构体
    • app_pkc_event_handler:回调函数
  • 实现大数模加运算
    app_pkc_modular_add_t pkc_modular_add_config = {
        .p_A = In_a,
        .p_B = In_b,
        .p_P = In_n
    };
    ret = app_pkc_modular_add_async(&pkc_modular_add_config);
    

    将In_a和In_b进行大数模加运算,结果输出到Out_c。

测试验证

连接开发板到PC端,打开串口助手,连接串口,查看串口日志,串口将打印是否正确生成消息。

[TestCase pkc_modular_add]:PASS
[TestCase pkc_modular_add_2048bit]:PASS
[TestCase pkc_modular_sub]:PASS
[TestCase pkc_modular_sub_2048bit]:PASS
[TestCase pkc_montgomery_mul]:PASS
[TestCase pkc_montgomery_mul_2048bit]:PASS
[TestCase pkc_montgomery_inv]:PASS
[TestCase pkc_montgomery_inv_2048bit]:PASS
[TestCase pkc_modular_cmp]:PASS
[TestCase pkc_modular_cmp_2048bit]:PASS
[TestCase pkc_modular_shift]:PASS
[TestCase pkc_modular_shift_2048bit]:PASS
[TestCase pkc_big_add]:PASS
[TestCase pkc_big_add_2048bit]:PASS
[TestCase pkc_big_mul]:PASS
[TestCase pkc_big_mul_1024bit]:PASS
[TestCase pkc_ecc_point_mul_256r1]:PASS
[TestCase pkc_ecc_point_mul_256k1]:PASS

This example demo end.

扫描关注

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