NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
DOCA AES-GCM Engine

Typedefs

typedef void(* doca_aes_gcm_task_encrypt_completion_cb_t) (struct doca_aes_gcm_task_encrypt *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on aes_gcm encrypt task completion. More...
 
typedef void(* doca_aes_gcm_task_decrypt_completion_cb_t) (struct doca_aes_gcm_task_decrypt *task, union doca_data task_user_data, union doca_data ctx_user_data)
 Function to execute on aes_gcm decrypt task completion. More...
 

Enumerations

enum  doca_aes_gcm_key_type { DOCA_AES_GCM_KEY_128 = 1 , DOCA_AES_GCM_KEY_256 = 2 }
 AES-GCM key type. More...
 

Functions

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_create (struct doca_dev *dev, struct doca_aes_gcm **aes_gcm)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_destroy (struct doca_aes_gcm *aes_gcm)
 
DOCA_EXPERIMENTAL struct doca_ctx * doca_aes_gcm_as_ctx (struct doca_aes_gcm *aes_gcm)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_get_max_num_tasks (struct doca_aes_gcm *aes_gcm, uint32_t *max_num_tasks)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_create (struct doca_aes_gcm *aes_gcm, const void *raw_key, enum doca_aes_gcm_key_type raw_key_type, struct doca_aes_gcm_key **key)
 Create an AES-GCM key from the user raw key to send with the task to allow encrypt/decrypt operations. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_destroy (struct doca_aes_gcm_key *key)
 Destroy AES-GCM key that was created in doca_aes_gcm_key_create. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_supported (const struct doca_devinfo *devinfo)
 Check if a aes_gcm encrypt task is supported by a device. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_iv_len (const struct doca_devinfo *devinfo, uint32_t *max_iv_len)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_96_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_128_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_key_type_supported (const struct doca_devinfo *devinfo, enum doca_aes_gcm_key_type key_type)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_buf_size (const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
 Get aes_gcm encrypt max buffer size. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_list_buf_num_elem (const struct doca_devinfo *devinfo, uint32_t *max_list_num_elem)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_set_conf (struct doca_aes_gcm *aes_gcm, doca_aes_gcm_task_encrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_encrypt_completion_cb_t task_error_cb, uint32_t num_tasks)
 This method sets the aes_gcm encrypt task configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_alloc_init (struct doca_aes_gcm *aes_gcm, struct doca_buf const *src_buff, struct doca_buf *dst_buff, struct doca_aes_gcm_key *key, const uint8_t *iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, union doca_data user_data, struct doca_aes_gcm_task_encrypt **task)
 Allocate aes_gcm encrypt task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_aes_gcm_task_encrypt_as_task (struct doca_aes_gcm_task_encrypt *task)
 convert aes_gcm encrypt task to doca_task More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_src (struct doca_aes_gcm_task_encrypt *task, struct doca_buf const *src_buff)
 set aes_gcm encrypt task source More...
 
DOCA_EXPERIMENTAL struct doca_buf const * doca_aes_gcm_task_encrypt_get_src (const struct doca_aes_gcm_task_encrypt *task)
 get aes_gcm encrypt task source More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_dst (struct doca_aes_gcm_task_encrypt *task, struct doca_buf *dst_buff)
 set aes_gcm encrypt task destination More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_aes_gcm_task_encrypt_get_dst (const struct doca_aes_gcm_task_encrypt *task)
 get aes_gcm encrypt task destination More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_key (struct doca_aes_gcm_task_encrypt *task, struct doca_aes_gcm_key *key)
 set aes_gcm encrypt task doca_aes_gcm_key More...
 
DOCA_EXPERIMENTAL struct doca_aes_gcm_key * doca_aes_gcm_task_encrypt_get_key (const struct doca_aes_gcm_task_encrypt *task)
 get aes_gcm encrypt task doca_aes_gcm_key More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_iv (struct doca_aes_gcm_task_encrypt *task, const uint8_t *iv, uint32_t iv_length)
 set aes_gcm encrypt task initialization vector More...
 
DOCA_EXPERIMENTAL const uint8_t * doca_aes_gcm_task_encrypt_get_iv (const struct doca_aes_gcm_task_encrypt *task, uint32_t *iv_length)
 get aes_gcm encrypt task initialization vector More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_tag_size (struct doca_aes_gcm_task_encrypt *task, uint32_t tag_size)
 set aes_gcm encrypt task authentication tag size More...
 
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_tag_size (const struct doca_aes_gcm_task_encrypt *task)
 get aes_gcm encrypt task authentication tag size More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_aad_size (struct doca_aes_gcm_task_encrypt *task, uint32_t aad_size)
 set aes_gcm encrypt task additional authenticated data size More...
 
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_aad_size (const struct doca_aes_gcm_task_encrypt *task)
 get aes_gcm encrypt task additional authenticated data size More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_supported (const struct doca_devinfo *devinfo)
 Check if a aes_gcm decrypt task is supported by a device. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_iv_len (const struct doca_devinfo *devinfo, uint32_t *max_iv_len)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_96_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_128_supported (const struct doca_devinfo *devinfo)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_key_type_supported (const struct doca_devinfo *devinfo, enum doca_aes_gcm_key_type key_type)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_buf_size (const struct doca_devinfo *devinfo, uint64_t *max_buffer_size)
 Get aes_gcm decrypt max buffer size. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_list_buf_num_elem (const struct doca_devinfo *devinfo, uint32_t *max_list_num_elem)
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_set_conf (struct doca_aes_gcm *aes_gcm, doca_aes_gcm_task_decrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_decrypt_completion_cb_t task_error_cb, uint32_t num_tasks)
 This method sets the aes_gcm decrypt task configuration. More...
 
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_alloc_init (struct doca_aes_gcm *aes_gcm, struct doca_buf const *src_buff, struct doca_buf *dst_buff, struct doca_aes_gcm_key *key, const uint8_t *iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, union doca_data user_data, struct doca_aes_gcm_task_decrypt **task)
 Allocate aes_gcm decrypt task. More...
 
DOCA_EXPERIMENTAL struct doca_task * doca_aes_gcm_task_decrypt_as_task (struct doca_aes_gcm_task_decrypt *task)
 convert aes_gcm decrypt task to doca_task More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_src (struct doca_aes_gcm_task_decrypt *task, struct doca_buf const *src_buff)
 set aes_gcm decrypt task source More...
 
DOCA_EXPERIMENTAL struct doca_buf const * doca_aes_gcm_task_decrypt_get_src (const struct doca_aes_gcm_task_decrypt *task)
 get aes_gcm decrypt task source More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_dst (struct doca_aes_gcm_task_decrypt *task, struct doca_buf *dst_buff)
 set aes_gcm decrypt task destination More...
 
DOCA_EXPERIMENTAL struct doca_buf * doca_aes_gcm_task_decrypt_get_dst (const struct doca_aes_gcm_task_decrypt *task)
 get aes_gcm decrypt task destination More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_key (struct doca_aes_gcm_task_decrypt *task, struct doca_aes_gcm_key *key)
 set aes_gcm decrypt task doca_aes_gcm_key More...
 
DOCA_EXPERIMENTAL struct doca_aes_gcm_key * doca_aes_gcm_task_decrypt_get_key (const struct doca_aes_gcm_task_decrypt *task)
 get aes_gcm decrypt task doca_aes_gcm_key More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_iv (struct doca_aes_gcm_task_decrypt *task, const uint8_t *iv, uint32_t iv_length)
 set aes_gcm decrypt task initialization vector More...
 
DOCA_EXPERIMENTAL const uint8_t * doca_aes_gcm_task_decrypt_get_iv (const struct doca_aes_gcm_task_decrypt *task, uint32_t *iv_length)
 get aes_gcm decrypt task initialization vector More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_tag_size (struct doca_aes_gcm_task_decrypt *task, uint32_t tag_size)
 set aes_gcm decrypt task authentication tag size More...
 
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_tag_size (const struct doca_aes_gcm_task_decrypt *task)
 get aes_gcm decrypt task authentication tag size More...
 
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_aad_size (struct doca_aes_gcm_task_decrypt *task, uint32_t aad_size)
 set aes_gcm decrypt task additional authenticated data size More...
 
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_aad_size (const struct doca_aes_gcm_task_decrypt *task)
 get aes_gcm decrypt task additional authenticated data size More...
 

Detailed Description

DOCA AES-GCM library. For more details please refer to the user guide on DOCA devzone.

Typedef Documentation

◆ doca_aes_gcm_task_decrypt_completion_cb_t

typedef void(* doca_aes_gcm_task_decrypt_completion_cb_t) (struct doca_aes_gcm_task_decrypt *task, union doca_data task_user_data, union doca_data ctx_user_data)

Function to execute on aes_gcm decrypt task completion.

Parameters
[in]taskaes_gcm decrypt task. The implementation can assume this value is not NULL.
[in]task_user_datatask user data
[in]ctx_user_datadoca_ctx user data

Definition at line 560 of file doca_aes_gcm.h.

◆ doca_aes_gcm_task_encrypt_completion_cb_t

typedef void(* doca_aes_gcm_task_encrypt_completion_cb_t) (struct doca_aes_gcm_task_encrypt *task, union doca_data task_user_data, union doca_data ctx_user_data)

Function to execute on aes_gcm encrypt task completion.

Parameters
[in]taskaes_gcm encrypt task. The implementation can assume this value is not NULL.
[in]task_user_datatask user data
[in]ctx_user_datadoca_ctx user data

Definition at line 196 of file doca_aes_gcm.h.

Enumeration Type Documentation

◆ doca_aes_gcm_key_type

AES-GCM key type.

Enumerator
DOCA_AES_GCM_KEY_128 

key size of 128 bit

DOCA_AES_GCM_KEY_256 

key size of 256 bit

Definition at line 131 of file doca_aes_gcm.h.

Function Documentation

◆ doca_aes_gcm_as_ctx()

DOCA_EXPERIMENTAL struct doca_ctx* doca_aes_gcm_as_ctx ( struct doca_aes_gcm *  aes_gcm)

Adapt doca_aes_gcm instance into a generalized context for use with doca core objects.

Parameters
[in]aes_gcmAES-GCM instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.

◆ doca_aes_gcm_cap_get_max_num_tasks()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_get_max_num_tasks ( struct doca_aes_gcm *  aes_gcm,
uint32_t *  max_num_tasks 
)

Get the maximum number of tasks

This method retrieves the maximum number of tasks for a device. Sum of num tasks should not exceed this number.

Parameters
[in]aes_gcmAES-GCM context to get max number of tasks from
[out]max_num_tasksSum of num tasks should not exceed this number (
See also
doca_aes_gcm_set_aes_gcm_encrypt_task_conf, doca_aes_gcm_set_aes_gcm_decrypt_task_conf)
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - in case of invalid input.

◆ doca_aes_gcm_cap_task_decrypt_get_max_buf_size()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_buf_size ( const struct doca_devinfo *  devinfo,
uint64_t *  max_buffer_size 
)

Get aes_gcm decrypt max buffer size.

This method retrieves aes_gcm decrypt max size

Parameters
[in]devinfodoca device info to check
[out]max_buffer_sizeThe max buffer size for aes_gcm decrypt operation in bytes.
Returns
DOCA_SUCCESS - in case device supports the task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_get_max_iv_len()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_iv_len ( const struct doca_devinfo *  devinfo,
uint32_t *  max_iv_len 
)

Get aes_gcm decrypt maximum initialization vector length for a device

Parameters
[in]devinfodoca device info to check
[out]max_iv_lenThe max iv length in bytes.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support decrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_get_max_list_buf_num_elem()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_list_buf_num_elem ( const struct doca_devinfo *  devinfo,
uint32_t *  max_list_num_elem 
)

Get the maximum supported number of elements in DOCA linked-list buffer for aes_gcm decrypt task.

Parameters
[in]devinfoThe DOCA device information.
[out]max_list_num_elemThe maximum supported number of elements in DOCA linked-list buffer. The value 1 indicates that only a single element is supported.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - in case of invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_is_key_type_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_key_type_supported ( const struct doca_devinfo *  devinfo,
enum doca_aes_gcm_key_type  key_type 
)

Check if a given AES-GCM key type for decrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
[in]key_typekey type to check. See enum doca_aes_gcm_key_type.
Returns
DOCA_SUCCESS - in case device supports the AES-GCM key type for decrypt task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - AES-GCM key type for decrypt task is not supported by the device or devinfo does not support decrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_is_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_supported ( const struct doca_devinfo *  devinfo)

Check if a aes_gcm decrypt task is supported by a device.

This method checks if a aes_gcm decrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports the task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_is_tag_128_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_128_supported ( const struct doca_devinfo *  devinfo)

Check if authentication tag of size 128-bit for decrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports authentication tag of size 128-bit Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - authentication tag of size 128-bit is not supported by the device or devinfo does not support decrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_decrypt_is_tag_96_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_96_supported ( const struct doca_devinfo *  devinfo)

Check if authentication tag of size 96-bit for decrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports authentication tag of size 96-bit Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - authentication tag of size 96-bit is not supported by the device or devinfo does not support decrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_get_max_buf_size()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_buf_size ( const struct doca_devinfo *  devinfo,
uint64_t *  max_buffer_size 
)

Get aes_gcm encrypt max buffer size.

This method retrieves a aes_gcm encrypt max size for a device

Parameters
[in]devinfodoca device info to check
[out]max_buffer_sizeThe max buffer size for aes_gcm encrypt operation in bytes.
Returns
DOCA_SUCCESS - in case device supports the task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_get_max_iv_len()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_iv_len ( const struct doca_devinfo *  devinfo,
uint32_t *  max_iv_len 
)

Get aes_gcm encrypt maximum initialization vector length for a device

Parameters
[in]devinfodoca device info to check
[out]max_iv_lenThe max iv length in bytes.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support encrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_get_max_list_buf_num_elem()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_list_buf_num_elem ( const struct doca_devinfo *  devinfo,
uint32_t *  max_list_num_elem 
)

Get the maximum supported number of elements in DOCA linked-list buffer for aes_gcm encrypt task.

Parameters
[in]devinfoThe DOCA device information.
[out]max_list_num_elemThe maximum supported number of elements in DOCA linked-list buffer. The value 1 indicates that only a single element is supported.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - in case of invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_is_key_type_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_key_type_supported ( const struct doca_devinfo *  devinfo,
enum doca_aes_gcm_key_type  key_type 
)

Check if a given AES-GCM key type for encrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
[in]key_typekey type to check. See enum doca_aes_gcm_key_type.
Returns
DOCA_SUCCESS - in case device supports the AES-GCM key type for encrypt task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - AES-GCM key type for encrypt task is not supported by the device or devinfo does not support encrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_is_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_supported ( const struct doca_devinfo *  devinfo)

Check if a aes_gcm encrypt task is supported by a device.

This method checks if a aes_gcm encrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports the task Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - devinfo does not support the task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_is_tag_128_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_128_supported ( const struct doca_devinfo *  devinfo)

Check if authentication tag of size 128-bit for encrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports authentication tag of size 128-bit Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - authentication tag of size 128-bit is not supported by the device or devinfo does not support encrypt task or failed to query device capabilities.

◆ doca_aes_gcm_cap_task_encrypt_is_tag_96_supported()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_96_supported ( const struct doca_devinfo *  devinfo)

Check if authentication tag of size 96-bit for encrypt task is supported by a device

Parameters
[in]devinfodoca device info to check
Returns
DOCA_SUCCESS - in case device supports authentication tag of size 96-bit Error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - authentication tag of size 96-bit is not supported by the device or devinfo does not support encrypt task or failed to query device capabilities.

◆ doca_aes_gcm_create()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_create ( struct doca_dev *  dev,
struct doca_aes_gcm **  aes_gcm 
)

Create a DOCA AES-GCM instance.

Parameters
[in]devThe device to attach to the aes_gcm context
[out]aes_gcmPointer to pointer to be set to point to the created doca_aes_gcm instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - one or more of the arguments is null.
  • DOCA_ERROR_NOT_SUPPORTED - failed to query device capabilities.
  • DOCA_ERROR_NO_MEMORY - failed to alloc doca_aes_gcm.

◆ doca_aes_gcm_destroy()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_destroy ( struct doca_aes_gcm *  aes_gcm)

Destroy a DOCA AES-GCM instance.

Parameters
[in]aes_gcmPointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_IN_USE - if unable to gain exclusive access to the aes_gcm instance or if there are undestroyed DOCA AES-GCM keys.
  • DOCA_ERROR_BAD_STATE - aes_gcm context is not in idle state, try to stop the context.

◆ doca_aes_gcm_key_create()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_create ( struct doca_aes_gcm *  aes_gcm,
const void *  raw_key,
enum doca_aes_gcm_key_type  raw_key_type,
struct doca_aes_gcm_key **  key 
)

Create an AES-GCM key from the user raw key to send with the task to allow encrypt/decrypt operations.

Note
Need to attach device to ctx before calling this function
Parameters
[in]aes_gcmAES_GCM instance.
[in]raw_keyThe raw key given by the user, only 128bit or 256bit keys are supported
[in]raw_key_typeThe raw key type given by the user. See enum doca_aes_gcm_key_type.
[out]keyPointer to pointer to be set to point to the created AES-GCM key to allow encrypt/decrypt operations.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NOT_SUPPORTED - if key type is not supported by the device or if failed to create DOCA AES-GCM key.

◆ doca_aes_gcm_key_destroy()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_destroy ( struct doca_aes_gcm_key *  key)

Destroy AES-GCM key that was created in doca_aes_gcm_key_create.

Parameters
[in]keyThe AES-GCM key to allow encrypt/decrypt operations.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_DRIVER - low level layer failure.

◆ doca_aes_gcm_task_decrypt_alloc_init()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_alloc_init ( struct doca_aes_gcm *  aes_gcm,
struct doca_buf const *  src_buff,
struct doca_buf *  dst_buff,
struct doca_aes_gcm_key *  key,
const uint8_t *  iv,
uint32_t  iv_length,
uint32_t  tag_size,
uint32_t  aad_size,
union doca_data  user_data,
struct doca_aes_gcm_task_decrypt **  task 
)

Allocate aes_gcm decrypt task.

This method allocates and initializes a aes_gcm decrypt task. Task parameters can be set later on by setters.

Parameters
[in]aes_gcmThe aes_gcm context to allocate the task from
[in]src_buffSource buffer
[in]dst_buffDestination buffer
[in]keyDOCA AES-GCM key
[in]ivInitialization vector
[in]iv_lengthInitialization vector length in bytes, 0B-12B values are supported
[in]tag_sizeAuthentication tag size in bytes, only 12B and 16B values are supported
[in]aad_sizeAdditional authenticated data size in bytes
[in]user_datadoca_data that can be retrieved from the task (usually when the task is completed).
[out]taskThe allocated task
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NO_MEMORY - all aes_gcm decrypt tasks are already allocated.
  • DOCA_ERROR_BAD_STATE - aes_gcm context is not in running state, try to start the context.

◆ doca_aes_gcm_task_decrypt_as_task()

DOCA_EXPERIMENTAL struct doca_task* doca_aes_gcm_task_decrypt_as_task ( struct doca_aes_gcm_task_decrypt *  task)

convert aes_gcm decrypt task to doca_task

Parameters
[in]taskThe task to convert
Returns
doca_task

◆ doca_aes_gcm_task_decrypt_get_aad_size()

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_aad_size ( const struct doca_aes_gcm_task_decrypt *  task)

get aes_gcm decrypt task additional authenticated data size

Parameters
[in]taskTask to get the additional authenticated data size from
Returns
additional authenticated data size in bytes

◆ doca_aes_gcm_task_decrypt_get_dst()

DOCA_EXPERIMENTAL struct doca_buf* doca_aes_gcm_task_decrypt_get_dst ( const struct doca_aes_gcm_task_decrypt *  task)

get aes_gcm decrypt task destination

Parameters
[in]taskTask to get the destination from
Returns
destination buffer

◆ doca_aes_gcm_task_decrypt_get_iv()

DOCA_EXPERIMENTAL const uint8_t* doca_aes_gcm_task_decrypt_get_iv ( const struct doca_aes_gcm_task_decrypt *  task,
uint32_t *  iv_length 
)

get aes_gcm decrypt task initialization vector

Parameters
[in]taskTask to get the initialization vector from
[out]iv_lengthInitialization vector length in bytes
Returns
initialization vector

◆ doca_aes_gcm_task_decrypt_get_key()

DOCA_EXPERIMENTAL struct doca_aes_gcm_key* doca_aes_gcm_task_decrypt_get_key ( const struct doca_aes_gcm_task_decrypt *  task)

get aes_gcm decrypt task doca_aes_gcm_key

Parameters
[in]taskTask to get the doca_aes_gcm_key from
Returns
DOCA AES-GCM key.

◆ doca_aes_gcm_task_decrypt_get_src()

DOCA_EXPERIMENTAL struct doca_buf const* doca_aes_gcm_task_decrypt_get_src ( const struct doca_aes_gcm_task_decrypt *  task)

get aes_gcm decrypt task source

Parameters
[in]taskTask to get the source from
Returns
source buffer

◆ doca_aes_gcm_task_decrypt_get_tag_size()

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_tag_size ( const struct doca_aes_gcm_task_decrypt *  task)

get aes_gcm decrypt task authentication tag size

Parameters
[in]taskTask to get the authentication tag size from
Returns
authentication tag size in bytes

◆ doca_aes_gcm_task_decrypt_set_aad_size()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_aad_size ( struct doca_aes_gcm_task_decrypt *  task,
uint32_t  aad_size 
)

set aes_gcm decrypt task additional authenticated data size

Parameters
[in]taskTask to set the additional authenticated data size to
[in]aad_sizeAdditional authenticated data size in bytes

◆ doca_aes_gcm_task_decrypt_set_conf()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_set_conf ( struct doca_aes_gcm *  aes_gcm,
doca_aes_gcm_task_decrypt_completion_cb_t  task_completion_cb,
doca_aes_gcm_task_decrypt_completion_cb_t  task_error_cb,
uint32_t  num_tasks 
)

This method sets the aes_gcm decrypt task configuration.

Parameters
[in]aes_gcmThe aes_gcm context to config
[in]task_completion_cbTask completion callback
[in]task_error_cbTask error callback
[in]num_tasksNumber of aes_gcm decrypt tasks that the context can allocate
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_BAD_STATE - aes_gcm context is not in idle state, try to stop the context.

◆ doca_aes_gcm_task_decrypt_set_dst()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_dst ( struct doca_aes_gcm_task_decrypt *  task,
struct doca_buf *  dst_buff 
)

set aes_gcm decrypt task destination

Parameters
[in]taskTask to set the destination to
[in]dst_buffdestination buffer to set

◆ doca_aes_gcm_task_decrypt_set_iv()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_iv ( struct doca_aes_gcm_task_decrypt *  task,
const uint8_t *  iv,
uint32_t  iv_length 
)

set aes_gcm decrypt task initialization vector

Parameters
[in]taskTask to set the initialization vector to
[in]ivInitialization vector
[in]iv_lengthInitialization vector length in bytes

◆ doca_aes_gcm_task_decrypt_set_key()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_key ( struct doca_aes_gcm_task_decrypt *  task,
struct doca_aes_gcm_key *  key 
)

set aes_gcm decrypt task doca_aes_gcm_key

Parameters
[in]taskTask to set the doca_aes_gcm_key to
[in]keyDOCA AES-GCM key

◆ doca_aes_gcm_task_decrypt_set_src()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_src ( struct doca_aes_gcm_task_decrypt *  task,
struct doca_buf const *  src_buff 
)

set aes_gcm decrypt task source

Parameters
[in]taskTask to set the source to
[in]src_buffSource buffer to set

◆ doca_aes_gcm_task_decrypt_set_tag_size()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_tag_size ( struct doca_aes_gcm_task_decrypt *  task,
uint32_t  tag_size 
)

set aes_gcm decrypt task authentication tag size

Parameters
[in]taskTask to set the authentication tag size to
[in]tag_sizeAuthentication tag size in bytes

◆ doca_aes_gcm_task_encrypt_alloc_init()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_alloc_init ( struct doca_aes_gcm *  aes_gcm,
struct doca_buf const *  src_buff,
struct doca_buf *  dst_buff,
struct doca_aes_gcm_key *  key,
const uint8_t *  iv,
uint32_t  iv_length,
uint32_t  tag_size,
uint32_t  aad_size,
union doca_data  user_data,
struct doca_aes_gcm_task_encrypt **  task 
)

Allocate aes_gcm encrypt task.

This method allocates and initializes a aes_gcm encrypt task. Task parameters can be set later on by setters.

Parameters
[in]aes_gcmThe aes_gcm context to allocate the task from
[in]src_buffSource buffer
[in]dst_buffDestination buffer
[in]keyDOCA AES-GCM key
[in]ivInitialization vector
[in]iv_lengthInitialization vector length in bytes, 0B-12B values are supported
[in]tag_sizeAuthentication tag size in bytes, only 12B and 16B values are supported
[in]aad_sizeAdditional authenticated data size in bytes
[in]user_datadoca_data that can be retrieved from the task (usually when the task is completed).
[out]taskThe allocated task
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_NO_MEMORY - all aes_gcm encrypt tasks are already allocated.
  • DOCA_ERROR_BAD_STATE - aes_gcm context is not in running state, try to start the context.

◆ doca_aes_gcm_task_encrypt_as_task()

DOCA_EXPERIMENTAL struct doca_task* doca_aes_gcm_task_encrypt_as_task ( struct doca_aes_gcm_task_encrypt *  task)

convert aes_gcm encrypt task to doca_task

Parameters
[in]taskThe task to convert
Returns
doca_task

◆ doca_aes_gcm_task_encrypt_get_aad_size()

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_aad_size ( const struct doca_aes_gcm_task_encrypt *  task)

get aes_gcm encrypt task additional authenticated data size

Parameters
[in]taskTask to get the additional authenticated data size from
Returns
additional authenticated data size in bytes

◆ doca_aes_gcm_task_encrypt_get_dst()

DOCA_EXPERIMENTAL struct doca_buf* doca_aes_gcm_task_encrypt_get_dst ( const struct doca_aes_gcm_task_encrypt *  task)

get aes_gcm encrypt task destination

Parameters
[in]taskTask to get the destination from
Returns
destination buffer

◆ doca_aes_gcm_task_encrypt_get_iv()

DOCA_EXPERIMENTAL const uint8_t* doca_aes_gcm_task_encrypt_get_iv ( const struct doca_aes_gcm_task_encrypt *  task,
uint32_t *  iv_length 
)

get aes_gcm encrypt task initialization vector

Parameters
[in]taskTask to get the initialization vector from
[out]iv_lengthInitialization vector length in bytes
Returns
initialization vector

◆ doca_aes_gcm_task_encrypt_get_key()

DOCA_EXPERIMENTAL struct doca_aes_gcm_key* doca_aes_gcm_task_encrypt_get_key ( const struct doca_aes_gcm_task_encrypt *  task)

get aes_gcm encrypt task doca_aes_gcm_key

Parameters
[in]taskTask to get the doca_aes_gcm_key from
Returns
DOCA AES-GCM key.

◆ doca_aes_gcm_task_encrypt_get_src()

DOCA_EXPERIMENTAL struct doca_buf const* doca_aes_gcm_task_encrypt_get_src ( const struct doca_aes_gcm_task_encrypt *  task)

get aes_gcm encrypt task source

Parameters
[in]taskTask to get the source from
Returns
source buffer

◆ doca_aes_gcm_task_encrypt_get_tag_size()

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_tag_size ( const struct doca_aes_gcm_task_encrypt *  task)

get aes_gcm encrypt task authentication tag size

Parameters
[in]taskTask to get the authentication tag size from
Returns
authentication tag size in bytes

◆ doca_aes_gcm_task_encrypt_set_aad_size()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_aad_size ( struct doca_aes_gcm_task_encrypt *  task,
uint32_t  aad_size 
)

set aes_gcm encrypt task additional authenticated data size

Parameters
[in]taskTask to set the additional authenticated data size to
[in]aad_sizeAdditional authenticated data size in bytes

◆ doca_aes_gcm_task_encrypt_set_conf()

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_set_conf ( struct doca_aes_gcm *  aes_gcm,
doca_aes_gcm_task_encrypt_completion_cb_t  task_completion_cb,
doca_aes_gcm_task_encrypt_completion_cb_t  task_error_cb,
uint32_t  num_tasks 
)

This method sets the aes_gcm encrypt task configuration.

Parameters
[in]aes_gcmThe aes_gcm context to config
[in]task_completion_cbTask completion callback
[in]task_error_cbTask error callback
[in]num_tasksNumber of aes_gcm encrypt tasks that the context can allocate
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
  • DOCA_ERROR_INVALID_VALUE - received invalid input.
  • DOCA_ERROR_BAD_STATE - aes_gcm context is not in idle state, try to stop the context.

◆ doca_aes_gcm_task_encrypt_set_dst()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_dst ( struct doca_aes_gcm_task_encrypt *  task,
struct doca_buf *  dst_buff 
)

set aes_gcm encrypt task destination

Parameters
[in]taskTask to set the destination to
[in]dst_buffdestination buffer to set

◆ doca_aes_gcm_task_encrypt_set_iv()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_iv ( struct doca_aes_gcm_task_encrypt *  task,
const uint8_t *  iv,
uint32_t  iv_length 
)

set aes_gcm encrypt task initialization vector

Parameters
[in]taskTask to set the initialization vector to
[in]ivInitialization vector
[in]iv_lengthInitialization vector length in bytes

◆ doca_aes_gcm_task_encrypt_set_key()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_key ( struct doca_aes_gcm_task_encrypt *  task,
struct doca_aes_gcm_key *  key 
)

set aes_gcm encrypt task doca_aes_gcm_key

Parameters
[in]taskTask to set the doca_aes_gcm_key to
[in]keyDOCA AES-GCM key

◆ doca_aes_gcm_task_encrypt_set_src()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_src ( struct doca_aes_gcm_task_encrypt *  task,
struct doca_buf const *  src_buff 
)

set aes_gcm encrypt task source

Parameters
[in]taskTask to set the source to
[in]src_buffSource buffer to set

◆ doca_aes_gcm_task_encrypt_set_tag_size()

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_tag_size ( struct doca_aes_gcm_task_encrypt *  task,
uint32_t  tag_size 
)

set aes_gcm encrypt task authentication tag size

Parameters
[in]taskTask to set the authentication tag size to
[in]tag_sizeAuthentication tag size in bytes