rte_crypto_sym.h
Contents
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
enumrte_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
EnumeratorRTE_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
RTE_CRYPTO_CIPHER_SM4_XTS
ShangMi 4 (SM4) algorithm in XTS mode
Definition at line 120 of file rte_crypto_sym.h.
enumrte_crypto_cipher_operation
Symmetric Cipher Direction
EnumeratorRTE_CRYPTO_CIPHER_OP_ENCRYPT
Encrypt cipher operation
RTE_CRYPTO_CIPHER_OP_DECRYPT
Decrypt cipher operation
Definition at line 186 of file rte_crypto_sym.h.
enumrte_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
EnumeratorRTE_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 311 of file rte_crypto_sym.h.
enumrte_crypto_auth_operation
Symmetric Authentication / Hash Operations
EnumeratorRTE_CRYPTO_AUTH_OP_VERIFY
Verify authentication digest
RTE_CRYPTO_AUTH_OP_GENERATE
Generate authentication digest
Definition at line 390 of file rte_crypto_sym.h.
enumrte_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
EnumeratorRTE_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 480 of file rte_crypto_sym.h.
enumrte_crypto_aead_operation
Symmetric AEAD Operations
EnumeratorRTE_CRYPTO_AEAD_OP_ENCRYPT
Encrypt and generate digest
RTE_CRYPTO_AEAD_OP_DECRYPT
Verify digest and decrypt
Definition at line 490 of file rte_crypto_sym.h.
enumrte_crypto_sym_xform_type
Crypto transformation types
EnumeratorRTE_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 562 of file rte_crypto_sym.h.
Function Documentation
staticvoid__rte_crypto_sym_op_reset(structrte_crypto_sym_op*op)[inline],[static]
Reset the fields of a symmetric operation to their default values.
Parametersop The crypto operation to be reset.
Definition at line 885 of file rte_crypto_sym.h.
staticstructrte_crypto_sym_xform*__rte_crypto_sym_op_sym_xforms_alloc(structrte_crypto_sym_op*sym_op,void*priv_data,uint8_tnb_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 902 of file rte_crypto_sym.h.
staticint__rte_crypto_sym_op_attach_sym_session(structrte_crypto_sym_op*sym_op,void*sess)[inline],[static]
Attach a session to a symmetric crypto operation
Parameterssym_op crypto operation
sess cryptodev session
Definition at line 925 of file rte_crypto_sym.h.
static__rte_experimentalintrte_crypto_mbuf_to_vec(conststructrte_mbuf*mb,uint32_tofs,uint32_tlen,structrte_crypto_vecvec[],uint32_tnum)[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.
Parametersmb Pointer to the rte_mbufobject.ofsOffsetwithinmbufdatatostartwith.lenLengthofdatatorepresent.vecPointertoanoutputarrayofIOvectors.numSizeofanoutputarray.Returns
• number of successfully filled entries in vec array.
• negative number of elements in vec array required.
Definition at line 952 of file rte_crypto_sym.h.
Name
rte_crypto_sym.h
Synopsis
#include <string.h>
#include <rte_compat.h>
#include <rte_mbuf.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_common.h>
DataStructures
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_opEnumerations
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, RTE_CRYPTO_CIPHER_SM4_XTS }
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 []
Variable Documentation
constchar*rte_crypto_cipher_operation_strings[][extern]
Cipher operation name strings
constchar*rte_crypto_auth_operation_strings[][extern]
Authentication operation name strings
constchar*rte_crypto_aead_operation_strings[][extern]
Authentication operation name strings
