Skip to content

AES Encryption

bflb_aes_init(dev)

Enable aes.

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_deinit(dev)

Disable aes.

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_select_hwkey(dev, keysel0, keysel1)

Set aes hardware key.

Parameters:

  • dev:device handle
  • keysel0:hardware key mode in efuse table
  • keysel1:hardware key mode in efuse table

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_set_hwkey_source(dev, source)

Set aes hardware key source.

Parameters:

  • dev:device handle
  • source:hardware key source

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_set_mode(dev, mode)

Set aes mode.

Parameters:

  • dev:device handle
  • mode:aes mode, use @ref AES_MODE

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_setkey(dev, key, keybits)

Set aes key.

Parameters:

  • dev:device handle
  • key:pointer to aes key, if NULL, means use hardware key
  • keybits:aes keybits, can be 128/192/256

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_encrypt(dev, input, iv, output, len)

Perform aes encrypt.

Parameters:

  • dev:device handle
  • input:pointer to plaintext
  • iv:input iv, if NULL, means use last iv.
  • output:pointer to ciphertext
  • len:encrypt length, muse be multiple of 16

📎 Device name lookup: Supported Device Names (BL616)

Return value: A negated errno value on failure.

bflb_aes_decrypt(dev, input, iv, output, len)

Perform aes decrypt.

Parameters:

  • dev:device handle
  • input:pointer to ciphertext
  • iv:input iv, if NULL, means use last iv.
  • output:pointer to plaintext
  • len:decrypt length, muse be multiple of 16

📎 Device name lookup: Supported Device Names (BL616)

Return value: A negated errno value on failure.

bflb_aes_link_init(dev)

Enable aes link mode.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_link_deinit(dev)

Disable aes link mode.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_aes_link_update(dev, link_addr, input, output, len)

Perform encrypt or decrypt with link mode.

Parameters:

  • dev:device handle
  • link_addr:link struct pointer address, must be located in 0x2xxxxxxx
  • input:pointer to plaintext or ciphertext
  • output:pointer to plaintext or ciphertext
  • len:update length, muse be multiple of 16

📎 Device name lookup: Supported Device Names (BL616)

Return value: A negated errno value on failure.

bflb_group0_request_aes_access(dev)

Enable aes in group0.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group1_request_aes_access(dev)

Enable aes in group1.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group0_release_aes_access(dev)

Disable aes in group0.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_group1_release_aes_access(dev)

Disable aes in group1.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

SHA Digest

bflb_sha_init(dev, mode)

Initialize the SHA engine and select the mode

Parameters:

  • dev:—
  • mode:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha1_start(dev, ctx)

Start a SHA1 computation (init context)

Parameters:

  • dev:—
  • ctx:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha256_start(dev, ctx)

Start a SHA256 computation (init context)

Parameters:

  • dev:—
  • ctx:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha512_start(dev, ctx)

Start a SHA512 computation (init context)

Parameters:

  • dev:—
  • ctx:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha1_update(dev, ctx, input, len)

Feed data into the SHA1 context

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha256_update(dev, ctx, input, len)

Feed data into the SHA256 context

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha512_update(dev, ctx, input, len)

Feed data into the SHA512 context

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha1_finish(dev, ctx, output)

Finish SHA1 and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha256_finish(dev, ctx, output)

Finish SHA256 and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha512_finish(dev, ctx, output)

Finish SHA512 and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha_link_init(dev)

Initialize SHA link-list (DMA) mode

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha_link_deinit(dev)

Disable SHA link-list mode

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha1_link_start(dev, ctx, link)

Start SHA1 in link-list (DMA) mode

Parameters:

  • dev:—
  • ctx:—
  • link:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha256_link_start(dev, ctx, link)

Start SHA256 in link-list mode (is224 selects SHA224)

Parameters:

  • dev:—
  • ctx:—
  • link:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha512_link_start(dev, ctx, link)

Start SHA512 in link-list mode (is384 selects SHA384)

Parameters:

  • dev:—
  • ctx:—
  • link:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha1_link_update(dev, ctx, input, len)

Feed data in SHA1 link-list mode

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha256_link_update(dev, ctx, input, len)

Feed data in SHA256 link-list mode

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha512_link_update(dev, ctx, input, len)

Feed data in SHA512 link-list mode

Parameters:

  • dev:—
  • ctx:—
  • input:—
  • len:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: int

bflb_sha1_link_finish(dev, ctx, output)

Finish SHA1 link-list computation and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha256_link_finish(dev, ctx, output)

Finish SHA256 link-list computation and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha512_link_finish(dev, ctx, output)

Finish SHA512 link-list computation and output the digest

Parameters:

  • dev:—
  • ctx:—
  • output:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_group0_request_sha_access(dev)

Request Group0 access to the SHA engine

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group1_request_sha_access(dev)

Request Group1 access to the SHA engine

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group0_release_sha_access(dev)

Release Group0 SHA access

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_group1_release_sha_access(dev)

Release Group1 SHA access

Parameters:

  • dev:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sha_crc32_link_work(dev, addr, in, len, out)

One-shot SHA/CRC32 computation in link-list mode

Parameters:

  • dev:—
  • addr:—
  • in:—
  • len:—
  • out:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

bflb_sha1_once_padded(dev, input, output, nblock)

One-shot SHA1 computation (auto padding)

Parameters:

  • dev:—
  • input:, 32 bytes aligned
  • output:—
  • nblock:—

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

TRNG

bflb_trng_read(dev, data)

Read trng data.

Parameters:

  • dev:device handle
  • data:pointer to trng data

📎 Device name lookup: Supported Device Names (BL616)

Return value: A negated errno value on failure.

bflb_trng_readlen(data, len)

Read trng data with custom length.

Parameters:

  • data:pointer to trng data
  • len:length to read

Return value: A negated errno value on failure.

random()

Get trng data.

Return value: trng data with word

bflb_group0_request_trng_access(dev)

Enable trng in group0.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group1_request_trng_access(dev)

Enable trng in group1.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: 0 for success, -1 for failure

bflb_group0_release_trng_access(dev)

Disable trng in group0.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_group1_release_trng_access(dev)

Disable trng in group1.

Parameters:

  • dev:device handle

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

GMAC Authentication

bflb_sec_gmac_le_enable(dev)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sec_gmac_link_enable(dev, enable)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_sec_gmac_link_work(dev, addr, in, len, out)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

bflb_group0_request_gmac_access(dev)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

bflb_group0_release_gmac_access(dev)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_group1_request_gmac_access(dev)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

bflb_group1_release_gmac_access(dev)

SEC_ENG GMAC link config structure type definition

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

Engine Mutex

bflb_sec_mutex_init()

Initialize the AES/SHA/PKA engine mutexes

Return value: None

bflb_sec_aes_mutex_take()

Take the AES engine mutex

Return value: see the SDK header

bflb_sec_aes_mutex_give()

Give the AES engine mutex

Return value: see the SDK header

bflb_sec_sha_mutex_take()

Take the SHA engine mutex

Return value: see the SDK header

bflb_sec_sha_mutex_give()

Give the SHA engine mutex

Return value: see the SDK header

bflb_sec_pka_mutex_take()

Take the PKA engine mutex

Return value: see the SDK header

bflb_sec_pka_mutex_give()

Give the PKA engine mutex

Return value: see the SDK header

PKA Public-Key

bflb_pka_init(dev)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_deinit(dev)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lmod2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_ldiv2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lmul2n(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, bit_shift, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_ldiv(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lsqr(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lmul(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lsub(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_ladd(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_lcmp(dev, s0_regindex, s0_regsize, s1_regindex, s1_regsize)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: see the SDK header

bflb_pka_minv(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_mexp(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_msqr(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_mmul(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_mrem(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_msub(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_madd(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, s1_regindex, s1_regsize, s2_regindex, s2_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_regsize(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_movdat(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_nlir(dev, s0_regindex, s0_regsize, d0_regindex, d0_regsize, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_slir(dev, regindex, regsize, data, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_clir(dev, regindex, regsize, size, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_write(dev, regindex, regsize, data, size, lastop)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_read(dev, regindex, regsize, data, size)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

bflb_pka_gf2mont(dev, s_regindex, s_regsize, d_regindex, d_regsize, t_regindex, t_regsize, p_regindex, p_regsize, size)

@addtogroup SEC_PKA @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

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 @{

📎 Device name lookup: Supported Device Names (BL616)

Return value: None

Have questions?

For any other questions, visit the unified Q&A and discussion board: Ai-Thinker Discussions

Released under the MIT License. Build Time 2026-09-11 14:52:23