rte_crypto_sym.h - Man Page

Synopsis

#include <string.h>
#include <rte_compat.h>
#include <rte_mbuf.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_common.h>

Data Structures

struct rte_crypto_vec
struct rte_crypto_sgl
struct rte_crypto_va_iova_ptr
struct rte_crypto_sym_vec
union rte_crypto_sym_ofs
struct rte_crypto_cipher_xform
struct rte_crypto_auth_xform
struct rte_crypto_sym_xform
struct rte_crypto_sym_op

Enumerations

enum rte_crypto_cipher_algorithm { RTE_CRYPTO_CIPHER_NULL = 1, RTE_CRYPTO_CIPHER_3DES_CBC, RTE_CRYPTO_CIPHER_3DES_CTR, RTE_CRYPTO_CIPHER_3DES_ECB, RTE_CRYPTO_CIPHER_AES_CBC, RTE_CRYPTO_CIPHER_AES_CTR, RTE_CRYPTO_CIPHER_AES_ECB, RTE_CRYPTO_CIPHER_AES_F8, RTE_CRYPTO_CIPHER_AES_XTS, RTE_CRYPTO_CIPHER_ARC4, RTE_CRYPTO_CIPHER_KASUMI_F8, RTE_CRYPTO_CIPHER_SNOW3G_UEA2, RTE_CRYPTO_CIPHER_ZUC_EEA3, RTE_CRYPTO_CIPHER_DES_CBC, RTE_CRYPTO_CIPHER_AES_DOCSISBPI, RTE_CRYPTO_CIPHER_DES_DOCSISBPI, RTE_CRYPTO_CIPHER_SM4_ECB, RTE_CRYPTO_CIPHER_SM4_CBC, RTE_CRYPTO_CIPHER_SM4_CTR, RTE_CRYPTO_CIPHER_SM4_OFB, RTE_CRYPTO_CIPHER_SM4_CFB }
enum rte_crypto_cipher_operation { RTE_CRYPTO_CIPHER_OP_ENCRYPT, RTE_CRYPTO_CIPHER_OP_DECRYPT }
enum rte_crypto_auth_algorithm { RTE_CRYPTO_AUTH_NULL = 1, RTE_CRYPTO_AUTH_AES_CBC_MAC, RTE_CRYPTO_AUTH_AES_CMAC, RTE_CRYPTO_AUTH_AES_GMAC, RTE_CRYPTO_AUTH_AES_XCBC_MAC, RTE_CRYPTO_AUTH_KASUMI_F9, RTE_CRYPTO_AUTH_MD5, RTE_CRYPTO_AUTH_MD5_HMAC, RTE_CRYPTO_AUTH_SHA1, RTE_CRYPTO_AUTH_SHA1_HMAC, RTE_CRYPTO_AUTH_SHA224, RTE_CRYPTO_AUTH_SHA224_HMAC, RTE_CRYPTO_AUTH_SHA256, RTE_CRYPTO_AUTH_SHA256_HMAC, RTE_CRYPTO_AUTH_SHA384, RTE_CRYPTO_AUTH_SHA384_HMAC, RTE_CRYPTO_AUTH_SHA512, RTE_CRYPTO_AUTH_SHA512_HMAC, RTE_CRYPTO_AUTH_SNOW3G_UIA2, RTE_CRYPTO_AUTH_ZUC_EIA3, RTE_CRYPTO_AUTH_SHA3_224, RTE_CRYPTO_AUTH_SHA3_224_HMAC, RTE_CRYPTO_AUTH_SHA3_256, RTE_CRYPTO_AUTH_SHA3_256_HMAC, RTE_CRYPTO_AUTH_SHA3_384, RTE_CRYPTO_AUTH_SHA3_384_HMAC, RTE_CRYPTO_AUTH_SHA3_512, RTE_CRYPTO_AUTH_SHA3_512_HMAC, RTE_CRYPTO_AUTH_SM3, RTE_CRYPTO_AUTH_SHAKE_128, RTE_CRYPTO_AUTH_SHAKE_256, RTE_CRYPTO_AUTH_SM3_HMAC }
enum rte_crypto_auth_operation { RTE_CRYPTO_AUTH_OP_VERIFY, RTE_CRYPTO_AUTH_OP_GENERATE }
enum rte_crypto_aead_algorithm { RTE_CRYPTO_AEAD_AES_CCM = 1, RTE_CRYPTO_AEAD_AES_GCM, RTE_CRYPTO_AEAD_CHACHA20_POLY1305 }
enum rte_crypto_aead_operation { RTE_CRYPTO_AEAD_OP_ENCRYPT, RTE_CRYPTO_AEAD_OP_DECRYPT }
enum rte_crypto_sym_xform_type { RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED = 0, RTE_CRYPTO_SYM_XFORM_AUTH, RTE_CRYPTO_SYM_XFORM_CIPHER, RTE_CRYPTO_SYM_XFORM_AEAD }

Functions

static void __rte_crypto_sym_op_reset (struct rte_crypto_sym_op *op)
static struct rte_crypto_sym_xform * __rte_crypto_sym_op_sym_xforms_alloc (struct rte_crypto_sym_op *sym_op, void *priv_data, uint8_t nb_xforms)
static int __rte_crypto_sym_op_attach_sym_session (struct rte_crypto_sym_op *sym_op, void *sess)
static __rte_experimental int rte_crypto_mbuf_to_vec (const struct rte_mbuf *mb, uint32_t ofs, uint32_t len, struct rte_crypto_vec vec[], uint32_t num)

Variables

const char * rte_crypto_cipher_operation_strings []
const char * rte_crypto_auth_operation_strings []
const char * rte_crypto_aead_operation_strings []

Detailed Description

RTE Definitions for Symmetric Cryptography

Defines symmetric cipher and authentication algorithms and modes, as well as supported symmetric crypto operation combinations.

Definition in file rte_crypto_sym.h.

Enumeration Type Documentation

enum rte_crypto_cipher_algorithm

Symmetric Cipher Algorithms

Note, to avoid ABI breakage across releases

  • LIST_END should not be added to this enum
  • the order of enums should not be changed
  • new algorithms should only be added to the end

Enumerator

RTE_CRYPTO_CIPHER_NULL

NULL cipher algorithm. No mode applies to the NULL algorithm.

RTE_CRYPTO_CIPHER_3DES_CBC

Triple DES algorithm in CBC mode

RTE_CRYPTO_CIPHER_3DES_CTR

Triple DES algorithm in CTR mode

RTE_CRYPTO_CIPHER_3DES_ECB

Triple DES algorithm in ECB mode

RTE_CRYPTO_CIPHER_AES_CBC

AES algorithm in CBC mode

RTE_CRYPTO_CIPHER_AES_CTR

AES algorithm in Counter mode

RTE_CRYPTO_CIPHER_AES_ECB

AES algorithm in ECB mode

RTE_CRYPTO_CIPHER_AES_F8

AES algorithm in F8 mode

RTE_CRYPTO_CIPHER_AES_XTS

AES algorithm in XTS mode

RTE_CRYPTO_CIPHER_ARC4

(A)RC4 cipher algorithm

RTE_CRYPTO_CIPHER_KASUMI_F8

KASUMI algorithm in F8 mode

RTE_CRYPTO_CIPHER_SNOW3G_UEA2

SNOW 3G algorithm in UEA2 mode

RTE_CRYPTO_CIPHER_ZUC_EEA3

ZUC algorithm in EEA3 mode

RTE_CRYPTO_CIPHER_DES_CBC

DES algorithm in CBC mode

RTE_CRYPTO_CIPHER_AES_DOCSISBPI

AES algorithm using modes required by DOCSIS Baseline Privacy Plus Spec. Chained mbufs are not supported in this mode, i.e. rte_mbuf.next for m_src and m_dst in the rte_crypto_sym_op must be NULL.

RTE_CRYPTO_CIPHER_DES_DOCSISBPI

DES algorithm using modes required by DOCSIS Baseline Privacy Plus Spec. Chained mbufs are not supported in this mode, i.e. rte_mbuf.next for m_src and m_dst in the rte_crypto_sym_op must be NULL.

RTE_CRYPTO_CIPHER_SM4_ECB

ShangMi 4 (SM4) algorithm in ECB mode

RTE_CRYPTO_CIPHER_SM4_CBC

ShangMi 4 (SM4) algorithm in CBC mode

RTE_CRYPTO_CIPHER_SM4_CTR

ShangMi 4 (SM4) algorithm in CTR mode

RTE_CRYPTO_CIPHER_SM4_OFB

ShangMi 4 (SM4) algorithm in OFB mode

RTE_CRYPTO_CIPHER_SM4_CFB

ShangMi 4 (SM4) algorithm in CFB mode

Definition at line 120 of file rte_crypto_sym.h.

enum rte_crypto_cipher_operation

Symmetric Cipher Direction

Enumerator

RTE_CRYPTO_CIPHER_OP_ENCRYPT

Encrypt cipher operation

RTE_CRYPTO_CIPHER_OP_DECRYPT

Decrypt cipher operation

Definition at line 184 of file rte_crypto_sym.h.

enum rte_crypto_auth_algorithm

Symmetric Authentication / Hash Algorithms

Note, to avoid ABI breakage across releases

  • LIST_END should not be added to this enum
  • the order of enums should not be changed
  • new algorithms should only be added to the end

Enumerator

RTE_CRYPTO_AUTH_NULL

NULL hash algorithm.

RTE_CRYPTO_AUTH_AES_CBC_MAC

AES-CBC-MAC algorithm. Only 128-bit keys are supported.

RTE_CRYPTO_AUTH_AES_CMAC

AES CMAC algorithm.

RTE_CRYPTO_AUTH_AES_GMAC

AES GMAC algorithm.

RTE_CRYPTO_AUTH_AES_XCBC_MAC

AES XCBC algorithm.

RTE_CRYPTO_AUTH_KASUMI_F9

KASUMI algorithm in F9 mode.

RTE_CRYPTO_AUTH_MD5

MD5 algorithm

RTE_CRYPTO_AUTH_MD5_HMAC

HMAC using MD5 algorithm

RTE_CRYPTO_AUTH_SHA1

160 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA1_HMAC

HMAC using 160 bit SHA algorithm. HMAC-SHA-1-96 can be generated by setting digest_length to 12 bytes in auth/aead xforms.

RTE_CRYPTO_AUTH_SHA224

224 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA224_HMAC

HMAC using 224 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA256

256 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA256_HMAC

HMAC using 256 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA384

384 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA384_HMAC

HMAC using 384 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA512

512 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA512_HMAC

HMAC using 512 bit SHA algorithm.

RTE_CRYPTO_AUTH_SNOW3G_UIA2

SNOW 3G algorithm in UIA2 mode.

RTE_CRYPTO_AUTH_ZUC_EIA3

ZUC algorithm in EIA3 mode

RTE_CRYPTO_AUTH_SHA3_224

224 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_224_HMAC

HMAC using 224 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_256

256 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_256_HMAC

HMAC using 256 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_384

384 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_384_HMAC

HMAC using 384 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_512

512 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SHA3_512_HMAC

HMAC using 512 bit SHA3 algorithm.

RTE_CRYPTO_AUTH_SM3

ShangMi 3 (SM3) algorithm

RTE_CRYPTO_AUTH_SHAKE_128

128 bit SHAKE algorithm.

RTE_CRYPTO_AUTH_SHAKE_256

256 bit SHAKE algorithm.

Definition at line 309 of file rte_crypto_sym.h.

enum rte_crypto_auth_operation

Symmetric Authentication / Hash Operations

Enumerator

RTE_CRYPTO_AUTH_OP_VERIFY

Verify authentication digest

RTE_CRYPTO_AUTH_OP_GENERATE

Generate authentication digest

Definition at line 388 of file rte_crypto_sym.h.

enum rte_crypto_aead_algorithm

Symmetric AEAD Algorithms

Note, to avoid ABI breakage across releases

  • LIST_END should not be added to this enum
  • the order of enums should not be changed
  • new algorithms should only be added to the end

Enumerator

RTE_CRYPTO_AEAD_AES_CCM

AES algorithm in CCM mode.

RTE_CRYPTO_AEAD_AES_GCM

AES algorithm in GCM mode.

RTE_CRYPTO_AEAD_CHACHA20_POLY1305

Chacha20 cipher with poly1305 authenticator

Definition at line 478 of file rte_crypto_sym.h.

enum rte_crypto_aead_operation

Symmetric AEAD Operations

Enumerator

RTE_CRYPTO_AEAD_OP_ENCRYPT

Encrypt and generate digest

RTE_CRYPTO_AEAD_OP_DECRYPT

Verify digest and decrypt

Definition at line 488 of file rte_crypto_sym.h.

enum rte_crypto_sym_xform_type

Crypto transformation types

Enumerator

RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED

No xform specified

RTE_CRYPTO_SYM_XFORM_AUTH

Authentication xform

RTE_CRYPTO_SYM_XFORM_CIPHER

Cipher xform

RTE_CRYPTO_SYM_XFORM_AEAD

AEAD xform

Definition at line 560 of file rte_crypto_sym.h.

Function Documentation

static void __rte_crypto_sym_op_reset (struct rte_crypto_sym_op * op) [inline], [static]

Reset the fields of a symmetric operation to their default values.

Parameters

op The crypto operation to be reset.

Definition at line 883 of file rte_crypto_sym.h.

static struct rte_crypto_sym_xform * __rte_crypto_sym_op_sym_xforms_alloc (struct rte_crypto_sym_op * sym_op, void * priv_data, uint8_t nb_xforms) [inline], [static]

Allocate space for symmetric crypto xforms in the private data space of the crypto operation. This also defaults the crypto xform type to RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED and configures the chaining of the xforms in the crypto operation

Returns
  • On success returns pointer to first crypto xform in crypto operations chain
  • On failure returns NULL

Definition at line 900 of file rte_crypto_sym.h.

static int __rte_crypto_sym_op_attach_sym_session (struct rte_crypto_sym_op * sym_op, void * sess) [inline], [static]

Attach a session to a symmetric crypto operation

Parameters

sym_op crypto operation
sess cryptodev session

Definition at line 923 of file rte_crypto_sym.h.

static __rte_experimental int rte_crypto_mbuf_to_vec (const struct rte_mbuf * mb, uint32_t ofs, uint32_t len, struct rte_crypto_vec vec[], uint32_t num) [inline], [static]

Converts portion of mbuf data into a vector representation. Each segment will be represented as a separate entry in vec array. Expects that provided ofs + len not to exceed mbuf's pkt_len.

Parameters

mb Pointer to the rte_mbuf object.
ofs Offset within mbuf data to start with.
len Length of data to represent.
vec Pointer to an output array of IO vectors.
num Size of an output array.

Returns
  • number of successfully filled entries in vec array.
  • negative number of elements in vec array required.

Definition at line 950 of file rte_crypto_sym.h.

Variable Documentation

const char* rte_crypto_cipher_operation_strings[] [extern]

Cipher operation name strings

const char* rte_crypto_auth_operation_strings[] [extern]

Authentication operation name strings

const char* rte_crypto_aead_operation_strings[] [extern]

Authentication operation name strings

Author

Generated automatically by Doxygen for DPDK from the source code.

Referenced By

The man pages RTE_CRYPTO_AEAD_AES_CCM(3), RTE_CRYPTO_AEAD_AES_GCM(3), rte_crypto_aead_algorithm(3), RTE_CRYPTO_AEAD_CHACHA20_POLY1305(3), RTE_CRYPTO_AEAD_OP_DECRYPT(3), RTE_CRYPTO_AEAD_OP_ENCRYPT(3), rte_crypto_aead_operation(3), rte_crypto_aead_operation_strings(3), RTE_CRYPTO_AUTH_AES_CBC_MAC(3), RTE_CRYPTO_AUTH_AES_CMAC(3), RTE_CRYPTO_AUTH_AES_GMAC(3), RTE_CRYPTO_AUTH_AES_XCBC_MAC(3), rte_crypto_auth_algorithm(3), RTE_CRYPTO_AUTH_KASUMI_F9(3), RTE_CRYPTO_AUTH_MD5(3), RTE_CRYPTO_AUTH_MD5_HMAC(3), RTE_CRYPTO_AUTH_NULL(3), rte_crypto_auth_operation(3), rte_crypto_auth_operation_strings(3), RTE_CRYPTO_AUTH_OP_GENERATE(3), RTE_CRYPTO_AUTH_OP_VERIFY(3), RTE_CRYPTO_AUTH_SHA1(3), RTE_CRYPTO_AUTH_SHA1_HMAC(3), RTE_CRYPTO_AUTH_SHA224(3), RTE_CRYPTO_AUTH_SHA224_HMAC(3), RTE_CRYPTO_AUTH_SHA256(3), RTE_CRYPTO_AUTH_SHA256_HMAC(3), RTE_CRYPTO_AUTH_SHA3_224(3), RTE_CRYPTO_AUTH_SHA3_224_HMAC(3), RTE_CRYPTO_AUTH_SHA3_256(3), RTE_CRYPTO_AUTH_SHA3_256_HMAC(3), RTE_CRYPTO_AUTH_SHA3_384(3), RTE_CRYPTO_AUTH_SHA3_384_HMAC(3), RTE_CRYPTO_AUTH_SHA3_512(3), RTE_CRYPTO_AUTH_SHA3_512_HMAC(3), RTE_CRYPTO_AUTH_SHA384(3), RTE_CRYPTO_AUTH_SHA384_HMAC(3), RTE_CRYPTO_AUTH_SHA512(3), RTE_CRYPTO_AUTH_SHA512_HMAC(3), RTE_CRYPTO_AUTH_SHAKE_128(3), RTE_CRYPTO_AUTH_SHAKE_256(3), RTE_CRYPTO_AUTH_SM3(3), RTE_CRYPTO_AUTH_SNOW3G_UIA2(3), RTE_CRYPTO_AUTH_ZUC_EIA3(3), RTE_CRYPTO_CIPHER_3DES_CBC(3), RTE_CRYPTO_CIPHER_3DES_CTR(3), RTE_CRYPTO_CIPHER_3DES_ECB(3), RTE_CRYPTO_CIPHER_AES_CBC(3), RTE_CRYPTO_CIPHER_AES_CTR(3), RTE_CRYPTO_CIPHER_AES_DOCSISBPI(3), RTE_CRYPTO_CIPHER_AES_ECB(3), RTE_CRYPTO_CIPHER_AES_F8(3), RTE_CRYPTO_CIPHER_AES_XTS(3), rte_crypto_cipher_algorithm(3), RTE_CRYPTO_CIPHER_ARC4(3), RTE_CRYPTO_CIPHER_DES_CBC(3), RTE_CRYPTO_CIPHER_DES_DOCSISBPI(3), RTE_CRYPTO_CIPHER_KASUMI_F8(3), RTE_CRYPTO_CIPHER_NULL(3), RTE_CRYPTO_CIPHER_OP_DECRYPT(3), RTE_CRYPTO_CIPHER_OP_ENCRYPT(3), rte_crypto_cipher_operation(3), rte_crypto_cipher_operation_strings(3), RTE_CRYPTO_CIPHER_SM4_CBC(3), RTE_CRYPTO_CIPHER_SM4_CFB(3), RTE_CRYPTO_CIPHER_SM4_CTR(3), RTE_CRYPTO_CIPHER_SM4_ECB(3), RTE_CRYPTO_CIPHER_SM4_OFB(3), RTE_CRYPTO_CIPHER_SNOW3G_UEA2(3), RTE_CRYPTO_CIPHER_ZUC_EEA3(3), rte_crypto_mbuf_to_vec(3), __rte_crypto_sym_op_attach_sym_session(3), __rte_crypto_sym_op_reset(3), __rte_crypto_sym_op_sym_xforms_alloc(3), RTE_CRYPTO_SYM_XFORM_AEAD(3), RTE_CRYPTO_SYM_XFORM_AUTH(3), RTE_CRYPTO_SYM_XFORM_CIPHER(3), RTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED(3) and rte_crypto_sym_xform_type(3) are aliases of rte_crypto_sym.h(3).

Version 23.11.0 DPDK