logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

rte_crypto_sym.h

Author

       Generated automatically by Doxygen for DPDK from the source code.

DPDK                                             Version 24.11.2                             rte_crypto_sym.h(3)

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

See Also