Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_crypto_sym.h(3)		      DPDK		     rte_crypto_sym.h(3)

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>

   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_CI-
	 PHER_3DES_ECB,   RTE_CRYPTO_CIPHER_AES_CBC,  RTE_CRYPTO_CIPHER_AES_CTR,
	 RTE_CRYPTO_CIPHER_AES_ECB,   RTE_CRYPTO_CIPHER_AES_F8,   RTE_CRYPTO_CI-
	 PHER_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_CI-
	 PHER_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,
	 RTE_CRYPTO_AEAD_SM4_GCM }
     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

     RTE_CRYPTO_CIPHER_SM4_XTS
	    ShangMi 4 (SM4) algorithm in XTS 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 186 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 311 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 390 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

     RTE_CRYPTO_AEAD_SM4_GCM
	    SM4 cipher in GCM mode

     Definition at line 480 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 492 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 564 of file rte_crypto_sym.h.

Function Documentation
   static  void  __rte_crypto_sym_op_reset  (struct rte_crypto_sym_op * op) [in-
     line],  [static]
     Reset the fields of a symmetric operation to their default values.

     Parameters
	 op The crypto operation to be reset.

     Definition at line 887 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 904 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 927 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 954 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.

Version 25.11.0 		 Thu Aug 27 2026	     rte_crypto_sym.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=RTE_CRYPTO_AUTH_MD5&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help