Provided by: dpdk-doc_24.11.2-2_all bug

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_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 []

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

       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 490 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 562 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 885 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 902 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 925 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 952 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.

DPDK                                             Version 24.11.2                             rte_crypto_sym.h(3)