AES 加密
bflb_aes_select_hwkey(dev, keysel0, keysel1)
设置 aes hardware 密钥。
参数:
dev:设备句柄keysel0:hardware 密钥 模式 in eFuse tablekeysel1:hardware 密钥 模式 in eFuse table
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_aes_set_hwkey_source(dev, source)
设置 aes hardware 密钥 source。
参数:
dev:设备句柄source:hardware 密钥 source
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_aes_setkey(dev, key, keybits)
设置 aes 密钥。
参数:
dev:设备句柄key:pointer to aes 密钥, if NULL, means use hardware 密钥keybits:aes keybits, can be 128/192/256
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_aes_encrypt(dev, input, iv, output, len)
Perform aes encrypt.
参数:
dev:设备句柄input:pointer to plaintextiv:input iv, if NULL, means use last iv.output:pointer to ciphertextlen:encrypt length, muse be multiple of 16
📎 设备名速查:支持的设备名(BL616)
返回值:A negated errno 值 on failure.
bflb_aes_decrypt(dev, input, iv, output, len)
Perform aes decrypt.
参数:
dev:设备句柄input:pointer to ciphertextiv:input iv, if NULL, means use last iv.output:pointer to plaintextlen:decrypt length, muse be multiple of 16
📎 设备名速查:支持的设备名(BL616)
返回值:A negated errno 值 on failure.
bflb_aes_link_update(dev, link_addr, input, output, len)
Perform encrypt or decrypt with link 模式.
参数:
dev:设备句柄link_addr:link struct pointer 地址, must be located in 0x2xxxxxxxinput:pointer to plaintext or ciphertextoutput:pointer to plaintext or ciphertextlen:update length, muse be multiple of 16
📎 设备名速查:支持的设备名(BL616)
返回值:A negated errno 值 on failure.
bflb_group0_request_aes_access(dev)
使能 aes in group0。
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
bflb_group1_request_aes_access(dev)
使能 aes in group1。
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
SHA 摘要
bflb_sha256_start(dev, ctx)
开始一次 SHA256 计算(初始化上下文)
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha512_start(dev, ctx)
开始一次 SHA512 计算(初始化上下文)
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha1_update(dev, ctx, input, len)
向 SHA1 上下文输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha256_update(dev, ctx, input, len)
向 SHA256 上下文输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha512_update(dev, ctx, input, len)
向 SHA512 上下文输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha1_finish(dev, ctx, output)
完成 SHA1 计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha256_finish(dev, ctx, output)
完成 SHA256 计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha512_finish(dev, ctx, output)
完成 SHA512 计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha1_link_start(dev, ctx, link)
开始 SHA1 链表(DMA)计算
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件link:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha256_link_start(dev, ctx, link)
开始 SHA256 链表计算(is224 选 SHA224)
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件link:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha512_link_start(dev, ctx, link)
开始 SHA512 链表计算(is384 选 SHA384)
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件link:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha1_link_update(dev, ctx, input, len)
向 SHA1 链表模式输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha256_link_update(dev, ctx, input, len)
向 SHA256 链表模式输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha512_link_update(dev, ctx, input, len)
向 SHA512 链表模式输入数据
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件input:输入数据len:长度
📎 设备名速查:支持的设备名(BL616)
返回值:int
bflb_sha1_link_finish(dev, ctx, output)
完成 SHA1 链表计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha256_link_finish(dev, ctx, output)
完成 SHA256 链表计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sha512_link_finish(dev, ctx, output)
完成 SHA512 链表计算并输出摘要
参数:
dev:设备句柄ctx:参数说明见 SDK 头文件output:输出缓冲区
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_group0_request_sha_access(dev)
申请 Group0 对 SHA 引擎的访问权限
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
bflb_group1_request_sha_access(dev)
申请 Group1 对 SHA 引擎的访问权限
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
bflb_sha_crc32_link_work(dev, addr, in, len, out)
链表模式下一次性完成 SHA/CRC32 计算
参数:
dev:设备句柄addr:地址in:参数说明见 SDK 头文件len:长度out:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
bflb_sha1_once_padded(dev, input, output, nblock)
一次性计算 SHA1(自动填充)
参数:
dev:设备句柄input:, 32 bytes alignedoutput:输出缓冲区nblock:参数说明见 SDK 头文件
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
真随机数 TRNG
bflb_trng_read(dev, data)
读取 trng 数据。
参数:
dev:设备句柄data:pointer to trng 数据
📎 设备名速查:支持的设备名(BL616)
返回值:A negated errno 值 on failure.
bflb_trng_readlen(data, len)
读取 trng 数据 with custom length。
参数:
data:pointer to trng 数据len:length to read
返回值:A negated errno 值 on failure.
random()
获取 trng 数据。
返回值:trng 数据 with word
bflb_group0_request_trng_access(dev)
使能 trng in group0。
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
bflb_group1_request_trng_access(dev)
使能 trng in group1。
参数:
dev:设备句柄
📎 设备名速查:支持的设备名(BL616)
返回值:0 for success, -1 for failure
GMAC 认证
bflb_sec_gmac_le_enable(dev)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sec_gmac_link_enable(dev, enable)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_sec_gmac_link_work(dev, addr, in, len, out)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
bflb_group0_request_gmac_access(dev)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
bflb_group0_release_gmac_access(dev)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_group1_request_gmac_access(dev)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
bflb_group1_release_gmac_access(dev)
SEC_ENG GMAC link 配置 structure type definition
📎 设备名速查:支持的设备名(BL616)
返回值:无
引擎互斥
bflb_sec_mutex_init()
初始化 AES/SHA/PKA 引擎互斥锁
返回值:无
bflb_sec_aes_mutex_take()
获取 AES 引擎互斥锁
返回值:见 SDK 头文件
bflb_sec_aes_mutex_give()
释放 AES 引擎互斥锁
返回值:见 SDK 头文件
bflb_sec_sha_mutex_take()
获取 SHA 引擎互斥锁
返回值:见 SDK 头文件
bflb_sec_sha_mutex_give()
释放 SHA 引擎互斥锁
返回值:见 SDK 头文件
bflb_sec_pka_mutex_take()
获取 PKA 引擎互斥锁
返回值:见 SDK 头文件
bflb_sec_pka_mutex_give()
释放 PKA 引擎互斥锁
返回值:见 SDK 头文件
PKA 公钥算法
bflb_pka_lmod2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_ldiv2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_lmul2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_ldiv(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_lsqr(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_lmul(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_lsub(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_ladd(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_lcmp(dev, s0_regindex, s0_regsize, s1_regindex, s1_regsize)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:见 SDK 头文件
bflb_pka_minv(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_mexp(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_msqr(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_mmul(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_mrem(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_msub(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_madd(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_regsize(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_movdat(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_nlir(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_write(dev, regindex, regsize, data, size, lastop)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_gf2mont(dev, s_regindex, s_regsize, d_regindex, d_regsize, t_regindex, t_regsize, p_regindex, p_regsize, size)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
bflb_pka_mont2gf(dev, s_regindex, s_regsize, d_regindex, d_regsize, invt_regindex, invt_regsize, t_regindex, t_regsize, p_regindex, p_regsize)
@addtogroup SEC_PKA @{
📎 设备名速查:支持的设备名(BL616)
返回值:无
遇到问题?
如有其他问题,请到统一的提问与讨论区:Ai-Thinker Discussions

