HPM SDK
HPMicro Software Development Kit
SDP driver APIs

SDP driver APIs. More...

Data Structures

struct  sdp_crypto_ctx_t
 SDP AES context structure. More...
 
struct  sdp_dma_ctx_t
 SDP DMA context. More...
 
struct  sdp_hash_ctx_t
 SDP HASH context. More...
 
struct  sdp_action_t
 SDP Action Structure. More...
 

Macros

#define HASH_BLOCK_SIZE   (64U)
 
#define AES_BLOCK_SIZE   (16U)
 
#define AES_128_KEY_SIZE   (0x10U)
 
#define AES_256_KEY_SIZE   (0x20U)
 
#define SM4_BLOCK_SIZE   (AES_BLOCK_SIZE)
 
#define SM4_KEY_SIZE   (AES_128_KEY_SIZE)
 
#define SDP_PKT_CTRL_DERSEMA_MASK   (1U << 2)
 Bitfield definitions for the PKT_CTRL. More...
 
#define SDP_PKT_CTRL_CHAIN_MASK   (1U << 3)
 
#define SDP_PKT_CTRL_HASHINIT_MASK   (1U << 4)
 
#define SDP_PKT_CTRL_HASHFINISH_MASK   (1U << 5)
 
#define SDP_PKT_CTRL_CIPHIV_MASK   (1U << 6)
 

Typedefs

typedef sdp_crypto_key_bits_t sdp_aes_key_bits_t
 
typedef sdp_crypto_key_bits_t sdp_sm4_key_bits_t
 
typedef sdp_crypto_op_t sdp_aes_op_t
 
typedef struct _sdp_packet_struct sdp_pkt_struct_t
 SDP Command Packet structure. More...
 
typedef sdp_crypto_ctx_t sdp_aes_ctx_t
 

Enumerations

enum  sdp_crypto_key_bits_t { sdp_aes_keybits_128 = 0 , sdp_aes_keybits_256 = 1 }
 SDP AES key bit options. More...
 
enum  sdp_crypto_op_t { sdp_aes_op_encrypt , sdp_aes_op_decrypt }
 Crypto operation option. More...
 
enum  sdp_crypto_alg_t { sdp_crypto_alg_aes = 0 }
 SDP Crypto algorithms. More...
 
enum  sdp_crypto_mode_t { sdp_crypto_mode_ecb = 0 , sdp_crypto_mode_cbc = 1 }
 SDP Crypto modes. More...
 
enum  sdp_data_swap_mode_t { sdp_swap_mode_none = 0 , sdp_swap_mode_bytes_in_word = 1 , sdp_swap_mode_word_swap = 2 , sdp_swap_mode_switch_endian = 3 }
 SDP Data Swap modes. More...
 
enum  sdp_calc_hash_mode_t { sdp_calc_hash_for_input = 0 , sdp_calc_hash_for_output = 1 }
 SDP HASH calculation mode. More...
 
enum  sdp_hash_alg_t { sdp_hash_alg_sha1 = 0 , sdp_hash_alg_crc32 = 1 , sdp_hash_alg_sha256 = 2 , sdp_hash_alg_max = sdp_hash_alg_sha256 }
 SDP HASH algorithm definitions. More...
 
enum  {
  status_sdp_no_crypto_support = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 0 )) , status_sdp_no_hash_support = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 1 )) , status_sdp_invalid_key_src = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 2 )) , status_sdp_error_packet = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 3 )) ,
  status_sdp_aes_busy = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 4 )) , status_sdp_hash_busy = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 5 )) , status_sdp_error_setup = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 6 )) , status_sdp_error_src = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 7 )) ,
  status_sdp_error_dst = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 8 )) , status_sdp_error_hash = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 9 )) , status_sdp_error_chain = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 10 )) , status_sdp_error_invalid_mac = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 11 )) ,
  status_sdp_invalid_alg = ((uint32_t)( status_group_sdp )*1000U + (uint32_t)( 12 ))
}
 SDP error status definitions. More...
 
enum  sdp_operation_t {
  sdp_op_invalid = 0 , sdp_op_cipher_only = SDP_SDPCR_CIPHEN_MASK , sdp_op_hash_only = SDP_SDPCR_HASHEN_MASK , sdp_op_memcpy_only = SDP_SDPCR_MCPEN_MASK ,
  sdp_op_memfill_only = SDP_SDPCR_CONFEN_MASK , sdp_op_cipher_hash = SDP_SDPCR_CIPHEN_MASK | SDP_SDPCR_HASHEN_MASK , sdp_op_copy_hash = SDP_SDPCR_MCPEN_MASK | SDP_SDPCR_HASHEN_MASK
}
 SDP Operations. More...
 

Functions

static void sdp_enable_interrupt (SDP_Type *base)
 Enable SDP interrupt. More...
 
static void sdp_disable_interrupt (SDP_Type *base)
 Disable SDP interrupt. More...
 
static void sdp_set_key_index (SDP_Type *base, uint32_t key_index)
 Set the Crypto Key Index in SDP. More...
 
static void sdp_write_key (SDP_Type *base, uint32_t key_index, uint32_t key_bits, const uint32_t *crypto_key)
 Write SDP key to specified SDP Key RAM. More...
 
static void sdp_write_hash_digest (SDP_Type *base, const uint32_t *digest, uint32_t num_words)
 Write the HASH digest result to SDP. More...
 
static void sdp_get_hash_digest (SDP_Type *base, uint32_t *digest, uint32_t num_words)
 Read the HASH digest result from SDP. More...
 
static void sdp_write_cipher_iv (SDP_Type *base, const uint32_t *iv)
 Write the cipher IV to SDP. More...
 
static void sdp_clear_status (SDP_Type *base, uint32_t mask)
 Clear SDP status. More...
 
static uint32_t sdp_get_status (SDP_Type *base)
 Get SDP status. More...
 
hpm_stat_t sdp_init (SDP_Type *base)
 Initialize the SDP controller. More...
 
hpm_stat_t sdp_deinit (SDP_Type *base)
 De-initialize the SDP controller. More...
 
hpm_stat_t sdp_aes_set_key (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, const uint8_t *key, sdp_aes_key_bits_t key_bits, uint32_t key_idx)
 Set the AES key for the SDP AES operation. More...
 
hpm_stat_t sdp_aes_crypt_ecb (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, sdp_aes_op_t op, uint32_t len, const uint8_t *in, uint8_t *out)
 Perform the basic AES ECB operation. More...
 
hpm_stat_t sdp_aes_crypt_cbc (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, sdp_aes_op_t op, uint32_t length, const uint8_t iv[16], const uint8_t *input, uint8_t *output)
 Perform the AES CBC operation. More...
 
hpm_stat_t sdp_aes_crypt_ctr (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, uint8_t *nonce_counter, uint8_t *input, uint8_t *output, uint32_t length)
 Perform the AES-CTR operation See NIST Special Publication800-38A for more details. More...
 
hpm_stat_t sdp_aes_ccm_generate_encrypt (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, uint32_t input_len, const uint8_t *iv, uint32_t iv_len, const uint8_t *aad, uint32_t aad_len, const uint8_t *input, uint8_t *output, uint8_t *tag, uint32_t tag_len)
 Perform the AES-CCM generate and encrypt See NIST Special Publication 800-38C for more details. More...
 
hpm_stat_t sdp_aes_ccm_decrypt_verify (SDP_Type *base, sdp_aes_ctx_t *aes_ctx, uint32_t input_len, const uint8_t *iv, uint32_t iv_len, const uint8_t *aad, uint32_t aad_len, const uint8_t *input, uint8_t *output, const uint8_t *tag, uint32_t tag_len)
 Perform the AES-CCM decrypt and verify See NIST Special Publication 800-38C for more details. More...
 
hpm_stat_t sdp_memcpy (SDP_Type *base, sdp_dma_ctx_t *sdp_ctx, void *dst, const void *src, uint32_t length)
 Perform the DMA accelerated memcpy. More...
 
hpm_stat_t sdp_memset (SDP_Type *base, sdp_dma_ctx_t *sdp_ctx, void *dst, uint8_t pattern, uint32_t length)
 Perform the DMA accelerated memset. More...
 
hpm_stat_t sdp_hash_init (SDP_Type *base, sdp_hash_ctx_t *hash_ctx, sdp_hash_alg_t alg)
 Initialize the HASH engine. More...
 
hpm_stat_t sdp_hash_update (SDP_Type *base, sdp_hash_ctx_t *hash_ctx, const uint8_t *data, uint32_t length)
 Compute the HASH digest. More...
 
hpm_stat_t sdp_hash_finish (SDP_Type *base, sdp_hash_ctx_t *hash_ctx, uint8_t *digest)
 Finish the HASH calculation and output the digest. More...
 
hpm_stat_t sdp_wait_done (SDP_Type *base)
 Wait until the SDP operation gets done. More...
 
hpm_stat_t sdp_trigger_action (SDP_Type *base, const sdp_action_t *action, const sdp_pkt_struct_t *cmd_pkt)
 Trigger SDP operation via the specified SDP packet description. More...
 

Detailed Description

SDP driver APIs.

Macro Definition Documentation

◆ AES_128_KEY_SIZE

#define AES_128_KEY_SIZE   (0x10U)

#include <drivers/inc/hpm_sdp_drv.h>

AES 128-bit key size in bytes

◆ AES_256_KEY_SIZE

#define AES_256_KEY_SIZE   (0x20U)

#include <drivers/inc/hpm_sdp_drv.h>

AES 256-bit key size in bytes

◆ AES_BLOCK_SIZE

#define AES_BLOCK_SIZE   (16U)

#include <drivers/inc/hpm_sdp_drv.h>

AES block size in bytes

◆ HASH_BLOCK_SIZE

#define HASH_BLOCK_SIZE   (64U)

#include <drivers/inc/hpm_sdp_drv.h>

Hash block size in bytes

◆ SDP_PKT_CTRL_CHAIN_MASK

#define SDP_PKT_CTRL_CHAIN_MASK   (1U << 3)

◆ SDP_PKT_CTRL_CIPHIV_MASK

#define SDP_PKT_CTRL_CIPHIV_MASK   (1U << 6)

◆ SDP_PKT_CTRL_DERSEMA_MASK

#define SDP_PKT_CTRL_DERSEMA_MASK   (1U << 2)

#include <drivers/inc/hpm_sdp_drv.h>

Bitfield definitions for the PKT_CTRL.

◆ SDP_PKT_CTRL_HASHFINISH_MASK

#define SDP_PKT_CTRL_HASHFINISH_MASK   (1U << 5)

◆ SDP_PKT_CTRL_HASHINIT_MASK

#define SDP_PKT_CTRL_HASHINIT_MASK   (1U << 4)

◆ SM4_BLOCK_SIZE

#define SM4_BLOCK_SIZE   (AES_BLOCK_SIZE)

#include <drivers/inc/hpm_sdp_drv.h>

SM4 block size in bytes

◆ SM4_KEY_SIZE

#define SM4_KEY_SIZE   (AES_128_KEY_SIZE)

#include <drivers/inc/hpm_sdp_drv.h>

SM4 Key size in bytes

Typedef Documentation

◆ sdp_aes_ctx_t

◆ sdp_aes_key_bits_t

◆ sdp_aes_op_t

◆ sdp_pkt_struct_t

typedef struct _sdp_packet_struct sdp_pkt_struct_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP Command Packet structure.

◆ sdp_sm4_key_bits_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

#include <drivers/inc/hpm_sdp_drv.h>

SDP error status definitions.

Enumerator
status_sdp_no_crypto_support 

The crypto algorithm is not supported

status_sdp_no_hash_support 

The hash algorithm is not supported

status_sdp_invalid_key_src 

Invalid AES key source

status_sdp_error_packet 

Error packet

status_sdp_aes_busy 

AES engine is busy

status_sdp_hash_busy 

HASH engine is busy

status_sdp_error_setup 

Error setup in SDP IP

status_sdp_error_src 

Error source address

status_sdp_error_dst 

Error destination address

status_sdp_error_hash 

Error Hash digest

status_sdp_error_chain 

Error packet chain

status_sdp_error_invalid_mac 

Invalid Message Authentication Code (MAC)

status_sdp_invalid_alg 

Invalid algorithm

◆ sdp_calc_hash_mode_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP HASH calculation mode.

Enumerator
sdp_calc_hash_for_input 

Calculate HASH before doing crypto operation

sdp_calc_hash_for_output 

Calculate HASH after doing crypto operation

◆ sdp_crypto_alg_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP Crypto algorithms.

Enumerator
sdp_crypto_alg_aes 

AES

◆ sdp_crypto_key_bits_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP AES key bit options.

Enumerator
sdp_aes_keybits_128 

128 bit AES key

sdp_aes_keybits_256 

256 bit AES key

◆ sdp_crypto_mode_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP Crypto modes.

Enumerator
sdp_crypto_mode_ecb 

ECB mode

sdp_crypto_mode_cbc 

CBC mode

◆ sdp_crypto_op_t

#include <drivers/inc/hpm_sdp_drv.h>

Crypto operation option.

Enumerator
sdp_aes_op_encrypt 

AES Encrypt operation

sdp_aes_op_decrypt 

AES Decrypt operation

◆ sdp_data_swap_mode_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP Data Swap modes.

Enumerator
sdp_swap_mode_none 

No data swap

sdp_swap_mode_bytes_in_word 

Swap bytes within one word

sdp_swap_mode_word_swap 

Swap words in one crypto block (16-bytes)

sdp_swap_mode_switch_endian 

Swap the data-endian in one crypto block (16-bytes)

◆ sdp_hash_alg_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP HASH algorithm definitions.

Enumerator
sdp_hash_alg_sha1 

SDP SHA1

sdp_hash_alg_crc32 

SDP CRC32

sdp_hash_alg_sha256 

SDP SHA256

sdp_hash_alg_max 

◆ sdp_operation_t

#include <drivers/inc/hpm_sdp_drv.h>

SDP Operations.

Enumerator
sdp_op_invalid 
sdp_op_cipher_only 
sdp_op_hash_only 
sdp_op_memcpy_only 
sdp_op_memfill_only 
sdp_op_cipher_hash 
sdp_op_copy_hash 

Function Documentation

◆ sdp_aes_ccm_decrypt_verify()

hpm_stat_t sdp_aes_ccm_decrypt_verify ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
uint32_t  input_len,
const uint8_t *  iv,
uint32_t  iv_len,
const uint8_t *  aad,
uint32_t  aad_len,
const uint8_t *  input,
uint8_t *  output,
const uint8_t *  tag,
uint32_t  tag_len 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the AES-CCM decrypt and verify See NIST Special Publication 800-38C for more details.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]input_lenInput data length in bytes
[in]ivInitial vector
[in]iv_lenInitial vector length in bytes
[in]aadAdditional Authentication data
[in]aad_lenAdditional authentication data size
[in]inputInput data buffer
[out]outputOutput buffer
[in]tagMAC buffer
[in]tag_lenTag/MAC size in bytes
Returns
API execution status.

◆ sdp_aes_ccm_generate_encrypt()

hpm_stat_t sdp_aes_ccm_generate_encrypt ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
uint32_t  input_len,
const uint8_t *  iv,
uint32_t  iv_len,
const uint8_t *  aad,
uint32_t  aad_len,
const uint8_t *  input,
uint8_t *  output,
uint8_t *  tag,
uint32_t  tag_len 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the AES-CCM generate and encrypt See NIST Special Publication 800-38C for more details.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]input_lenInput data length in bytes
[in]ivInitial vector
[in]iv_lenInitial vector length in bytes
[in]aadAdditional Authentication data
[in]aad_lenAdditional authentication data size
[in]inputInput data buffer
[out]outputOutput buffer
[out]tagMAC buffer
[in]tag_lenTag/MAC size in bytes
Returns
API execution status.

◆ sdp_aes_crypt_cbc()

hpm_stat_t sdp_aes_crypt_cbc ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
sdp_aes_op_t  op,
uint32_t  length,
const uint8_t  iv[16],
const uint8_t *  input,
uint8_t *  output 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the AES CBC operation.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]opAES operation option
[in]lengthAES data length in bytes
[in]ivInitial vector/nonce
[in]inputInput buffer
[out]outputOutput buffer
Returns
API execution status.

◆ sdp_aes_crypt_ctr()

hpm_stat_t sdp_aes_crypt_ctr ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
uint8_t *  nonce_counter,
uint8_t *  input,
uint8_t *  output,
uint32_t  length 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the AES-CTR operation See NIST Special Publication800-38A for more details.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]nonce_counterAES-CTR nonce/counter
[in]inputInput buffer
[out]outputOutput buffer
[in]lengthLength of data for AES-CTR operation
Returns
API execution status.

◆ sdp_aes_crypt_ecb()

hpm_stat_t sdp_aes_crypt_ecb ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
sdp_aes_op_t  op,
uint32_t  len,
const uint8_t *  in,
uint8_t *  out 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the basic AES ECB operation.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]opAES operation option
[in]lenAES data length in bytes
[in]inInput buffer
[out]outOutput buffer
Returns
API execution status.

◆ sdp_aes_set_key()

hpm_stat_t sdp_aes_set_key ( SDP_Type base,
sdp_aes_ctx_t aes_ctx,
const uint8_t *  key,
sdp_aes_key_bits_t  key_bits,
uint32_t  key_idx 
)

#include <drivers/inc/hpm_sdp_drv.h>

Set the AES key for the SDP AES operation.

Parameters
[in]baseSDP base address
[in]aes_ctxAES operation context
[in]keyAES key
[in]key_bitsAES key-bit option
[in]key_idxAES key index
Returns
API execution status.

◆ sdp_clear_status()

static void sdp_clear_status ( SDP_Type base,
uint32_t  mask 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Clear SDP status.

Parameters
[in]baseSDP base address
[in]maskStatus Mask

◆ sdp_deinit()

hpm_stat_t sdp_deinit ( SDP_Type base)

#include <drivers/inc/hpm_sdp_drv.h>

De-initialize the SDP controller.

Parameters
[in]baseSDP base address
Returns
API execution status.

◆ sdp_disable_interrupt()

static void sdp_disable_interrupt ( SDP_Type base)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Disable SDP interrupt.

Parameters
[in]baseSDP base address

◆ sdp_enable_interrupt()

static void sdp_enable_interrupt ( SDP_Type base)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Enable SDP interrupt.

Parameters
[in]baseSDP base address

◆ sdp_get_hash_digest()

static void sdp_get_hash_digest ( SDP_Type base,
uint32_t *  digest,
uint32_t  num_words 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Read the HASH digest result from SDP.

Parameters
[in]baseSDP base address
[out]digestHASH digest
[in]num_wordsDigest size in words

◆ sdp_get_status()

static uint32_t sdp_get_status ( SDP_Type base)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Get SDP status.

Parameters
[in]baseSDP base address
Returns
SDP status

◆ sdp_hash_finish()

hpm_stat_t sdp_hash_finish ( SDP_Type base,
sdp_hash_ctx_t hash_ctx,
uint8_t *  digest 
)

#include <drivers/inc/hpm_sdp_drv.h>

Finish the HASH calculation and output the digest.

Parameters
[in]baseSDP base address
[in]hash_ctxHASH operation context
[out]digestDigest buffer
Returns
API execution status.

◆ sdp_hash_init()

hpm_stat_t sdp_hash_init ( SDP_Type base,
sdp_hash_ctx_t hash_ctx,
sdp_hash_alg_t  alg 
)

#include <drivers/inc/hpm_sdp_drv.h>

Initialize the HASH engine.

Parameters
[in]baseSDP base address
[in]hash_ctxHASH operation context
[in]algHash algorithm
Returns
API execution status. status_success or status_invalid_argument

◆ sdp_hash_update()

hpm_stat_t sdp_hash_update ( SDP_Type base,
sdp_hash_ctx_t hash_ctx,
const uint8_t *  data,
uint32_t  length 
)

#include <drivers/inc/hpm_sdp_drv.h>

Compute the HASH digest.

Parameters
[in]baseSDP base address
[in]hash_ctxHASH operation context
[in]dataData for HASH computing
[in]lengthData size for HASH computing
Returns
API execution status.

◆ sdp_init()

hpm_stat_t sdp_init ( SDP_Type base)

#include <drivers/inc/hpm_sdp_drv.h>

Initialize the SDP controller.

Parameters
[in]baseSDP base address
Returns
API execution status.

◆ sdp_memcpy()

hpm_stat_t sdp_memcpy ( SDP_Type base,
sdp_dma_ctx_t sdp_ctx,
void *  dst,
const void *  src,
uint32_t  length 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the DMA accelerated memcpy.

Parameters
[in]baseSDP base address
[in]sdp_ctxSDP DMA context
[out]dstDestination address for memcpy operation
[in]srcSource address for memcpy operation
[in]lengthLength of the data to be copied
Returns
API execution status.

◆ sdp_memset()

hpm_stat_t sdp_memset ( SDP_Type base,
sdp_dma_ctx_t sdp_ctx,
void *  dst,
uint8_t  pattern,
uint32_t  length 
)

#include <drivers/inc/hpm_sdp_drv.h>

Perform the DMA accelerated memset.

Parameters
[in]baseSDP base address
[in]sdp_ctxSDP DMA context
[out]dstSDP destination address for memset operation
[in]patternpattern for memset operation
[in]lengthlength of the memory for memset operation
Returns
API execution status.

◆ sdp_set_key_index()

static void sdp_set_key_index ( SDP_Type base,
uint32_t  key_index 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Set the Crypto Key Index in SDP.

Parameters
[in]baseSDP base address
[in]key_indexSDP key index

◆ sdp_trigger_action()

hpm_stat_t sdp_trigger_action ( SDP_Type base,
const sdp_action_t action,
const sdp_pkt_struct_t cmd_pkt 
)

#include <drivers/inc/hpm_sdp_drv.h>

Trigger SDP operation via the specified SDP packet description.

Note
1. The Command Packet List should be in non-cacheable memory
  1. This is a non-blocking API, users should confirm whether action completed or not by checking STA register in SDP
Parameters
[in]baseSDP base address
[in]actionSDP action
[in]cmd_pktSDP Command packet description
Returns
API execution status.

◆ sdp_wait_done()

hpm_stat_t sdp_wait_done ( SDP_Type base)

#include <drivers/inc/hpm_sdp_drv.h>

Wait until the SDP operation gets done.

Parameters
[in]baseSDP base address
Returns
API execution status.

◆ sdp_write_cipher_iv()

static void sdp_write_cipher_iv ( SDP_Type base,
const uint32_t *  iv 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Write the cipher IV to SDP.

Parameters
[in]baseSDP base address
[in]ivInitial vector

◆ sdp_write_hash_digest()

static void sdp_write_hash_digest ( SDP_Type base,
const uint32_t *  digest,
uint32_t  num_words 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Write the HASH digest result to SDP.

Parameters
[in]baseSDP base address
[in]digestHASH digest
[in]num_wordsDigest size in words

◆ sdp_write_key()

static void sdp_write_key ( SDP_Type base,
uint32_t  key_index,
uint32_t  key_bits,
const uint32_t *  crypto_key 
)
inlinestatic

#include <drivers/inc/hpm_sdp_drv.h>

Write SDP key to specified SDP Key RAM.

Parameters
[in]baseSDP base address
[in]key_indexKey Index
[in]key_bitsKey bits, valid value: 128, 256
[in]crypto_keyCrypto Key buffer