函谷物联安全系统HISK

    安全载体厂商接入说明

    接入流程

    安全载体厂商注册

    安全载体厂商通过填写申请表方式进行注册,注册后会有工作人员根据您填写的联系方式进行回访。通过审核之后,方可进行后续流程。

    安全载体厂商芯片功能验证

    安全载体厂商注册完成,需要参考安全载体SDK适配中描述的相关接口 ,进行测试开发并需要完成对应的相关功能验证。安全载体厂商需要抽象和芯片交互的设备驱动接口,具体的驱动接口由设备厂商实现。

    产品线对接ID中心

    函谷物联安全系统与安全载体厂商进行服务对接的时候,需要厂商的产线与函谷物联安全系统的ID中心进行服务的对接来交换相关的测试和安全数据。

    目前通过服务对接,ID中心传输如下信息给安全载体厂商:

    • 设备的唯一身份标识
    • 设备个人化数据

    为了保证对接过程的安全性,需要使用安全方式进行数据交换。

    密钥

    安全载体中的密钥是保证设备进行安全传输的关键,对于不同的场景需要采用不同的加密方式,当前函谷物联安全系统支持的类型密钥:RSA-1024。其他密钥方式,敬请期待。

    安全载体SDK适配

    HISK SDK封装了底层安全载体、接口的操作细节,其具体的功能实现依赖底层的安全载体SDK,故安全载体厂商需要适配移植安全载体SDK的相关SAL(Security Abstract Level)接口,如下为具体接口定义。

    预定义类型

    原类型 typedef类型
    unsigned char U8
    unsigned short U16
    unsigned long U32

    获取密钥分散因子

    方法 接口说明
    U16 sal_get_se_id(U8 *se_id, U16 *id_len); 获取密钥分散因子

    请求参数

    参数名称 参数类型 输入/输出 说明
    se_id U8 * in/out 入参为存放安全载体唯一编号字串buf的起始地址,出参时buf中存储安全载体唯一编号,长度不大于32位
    id_len U16 * in/out 入参为安全载体唯一编号的buf长度,出参为SE编号字串的实际长度

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    获取设备ID

    方法 接口说明
    U16 sal_get_device_id(U8 *id, const U16 id_len); 获取设备ID

    请求参数

    参数名称 参数类型 输入/输出 说明
    id U8 * in/out 入参为存放设备ID字串的buf起始地址,出参时buf中存储设备ID,长度为16字节
    id_len const U16 in 设备ID的长度

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    非对称加解密

    方法 接口说明
    U16 sal_asymmetric_crypt(U8 *in_data, U16 in_data_len, U8 asymm_mode, U8 asymm_type, U8 key_index, U8 *out_data, U16 *out_data_len); 非对称加密解密

    请求参数

    参数名称 参数类型 输入/输出 说明
    in_data U8 * in 存放输入的数据起始地址
    in_data_len U16 in 输入的数据长度
    asymm_mode U8 in 非对称加解密类型
    asymm_type U8 in 非对称算法
    key_index U8 in 使用的密钥
    out_data U8 * in/out 入参为存放输出的数据buf起始地址,出参时buf中存储处理的数据
    out_data_len U16 * in/out 入参为参数out_data的buf长度,出参为实际长度

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    非对称加解密类型

    类型 说明
    0x51 AsymEncrypt
    0x52 AsymDecrypt
    0x53 AsymSign
    0x54 AsymVerifySign

    非对称算法

    类型 说明
    0x00 RSA_NOPADDING
    0x01 RSA_SHA1_PKCS1
    0x02 RSA_SHA256_PKCS1
    0x03 RSA_SHA384_PKCS1
    0x04 RSA_SHA512_PKCS1
    0x05 SM2_SM3
    0x06 ECDSA

    对称加解密

    方法 接口说明
    U16 sal_symmetric_crypt(U8 *in_data, U16 in_data_len, U8 symm_mode, U8 symm_type, U8 key_index, U8 *out_data, U16 *out_data_len); 对称加密解密

    请求参数

    参数名称 参数类型 输入/输出 说明
    in_data U8 * in 存放输入的数据起始地址
    in_data_len U16 in 输入的数据长度
    symm_mode U8 in 对称加解密类型
    symm_type U8 in 对称算法
    key_index U8 in 使用的密钥
    out_data U8 * in/out 入参为存放输出数据的buff起始地址,出参时buf中存储处理的数据
    out_data_len U16 * in/out 入参为参数out_data的buf长度,出参为实际长度

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    对称加解密类型

    类型 说明
    0x51 Encrypt
    0x52 Decrypt
    0x53 SignMac
    0x54 VerifyMac

    对称算法

    类型 说明
    0x00 DES_CBC_NOPADDING
    0x01 DES_ECB_NOPADDING
    0x02 AES_CBC_NOPADDING
    0x03 AES_ECB_NOPADDING
    0x04 DES_CBC_ISO9797_M1
    0x05 DES_CBC_ISO9797_M2
    0x06 AES_CBC_ISO9797_M1
    0x07 AES_CBC_ISO9797_M2

    签名计算

    方法 接口说明
    U16 sal_compute_digest(U8 *data, const U16 data_len, U8 *digest, U16 *digest_len, const U8 hash_type); 计算摘要

    请求参数

    参数名称 参数类型 输入/输出 说明
    data U8 * in 存放计算摘要的原始数据起始地址
    data_len const U16 in 计算摘要的原始数据的长度
    digest U8 * in/out 入参为存放摘要的buff起始地址,出参时buf中存储计算的摘要
    digest_len U16 * in/out 入参为参数out_data的buf长度,出参为实际长度
    hash_type const U8 in 计算摘要的算法

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    计算摘要算法

    类型 说明
    0x00 SHA1
    0x01 SHA224
    0x02 SHA256
    0x03 SHA384
    0x04 SHA512

    开启事务

    方法 接口说明
    U16 sal_open_session(); 与安全载体交互前开启事务,设备可以进行上电和初始化

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    关闭事务

    方法 接口说明
    U16 sal_close_session(); 与安全载体交互结束,设备可以进行下电以及清理

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    选中安全应用

    方法 接口说明
    U16 sal_select_application(); 选中安全载体中交互的应用

    返回参数

    类型 说明
    U16 方法执行结果,0 表示成功,失败参考设备错误码

    设备端错误码

    返回值 描述
    0x9000 执行正确
    0x7021 未知安全载体类型错误
    上一篇
    设备厂商使用说明
    下一篇
    API参考