.TH "rte_crypto_sym.h" 3 "Version 25.11.0" "DPDK" \" -*- nroff -*-
.ad l
.nh
.SH NAME
rte_crypto_sym.h
.SH SYNOPSIS
.br
.PP
\fR#include <string\&.h>\fP
.br
\fR#include <rte_compat\&.h>\fP
.br
\fR#include <rte_mbuf\&.h>\fP
.br
\fR#include <rte_memory\&.h>\fP
.br
\fR#include <rte_mempool\&.h>\fP
.br
\fR#include <rte_common\&.h>\fP
.br

.SS "Data Structures"

.in +1c
.ti -1c
.RI "struct \fBrte_crypto_vec\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_sgl\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_va_iova_ptr\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_sym_vec\fP"
.br
.ti -1c
.RI "union \fBrte_crypto_sym_ofs\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_cipher_xform\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_auth_xform\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_sym_xform\fP"
.br
.ti -1c
.RI "struct \fBrte_crypto_sym_op\fP"
.br
.in -1c
.SS "Enumerations"

.in +1c
.ti -1c
.RI "enum \fBrte_crypto_cipher_algorithm\fP { \fBRTE_CRYPTO_CIPHER_NULL\fP = 1, \fBRTE_CRYPTO_CIPHER_3DES_CBC\fP, \fBRTE_CRYPTO_CIPHER_3DES_CTR\fP, \fBRTE_CRYPTO_CIPHER_3DES_ECB\fP, \fBRTE_CRYPTO_CIPHER_AES_CBC\fP, \fBRTE_CRYPTO_CIPHER_AES_CTR\fP, \fBRTE_CRYPTO_CIPHER_AES_ECB\fP, \fBRTE_CRYPTO_CIPHER_AES_F8\fP, \fBRTE_CRYPTO_CIPHER_AES_XTS\fP, \fBRTE_CRYPTO_CIPHER_ARC4\fP, \fBRTE_CRYPTO_CIPHER_KASUMI_F8\fP, \fBRTE_CRYPTO_CIPHER_SNOW3G_UEA2\fP, \fBRTE_CRYPTO_CIPHER_ZUC_EEA3\fP, \fBRTE_CRYPTO_CIPHER_DES_CBC\fP, \fBRTE_CRYPTO_CIPHER_AES_DOCSISBPI\fP, \fBRTE_CRYPTO_CIPHER_DES_DOCSISBPI\fP, \fBRTE_CRYPTO_CIPHER_SM4_ECB\fP, \fBRTE_CRYPTO_CIPHER_SM4_CBC\fP, \fBRTE_CRYPTO_CIPHER_SM4_CTR\fP, \fBRTE_CRYPTO_CIPHER_SM4_OFB\fP, \fBRTE_CRYPTO_CIPHER_SM4_CFB\fP, \fBRTE_CRYPTO_CIPHER_SM4_XTS\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_cipher_operation\fP { \fBRTE_CRYPTO_CIPHER_OP_ENCRYPT\fP, \fBRTE_CRYPTO_CIPHER_OP_DECRYPT\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_auth_algorithm\fP { \fBRTE_CRYPTO_AUTH_NULL\fP = 1, \fBRTE_CRYPTO_AUTH_AES_CBC_MAC\fP, \fBRTE_CRYPTO_AUTH_AES_CMAC\fP, \fBRTE_CRYPTO_AUTH_AES_GMAC\fP, \fBRTE_CRYPTO_AUTH_AES_XCBC_MAC\fP, \fBRTE_CRYPTO_AUTH_KASUMI_F9\fP, \fBRTE_CRYPTO_AUTH_MD5\fP, \fBRTE_CRYPTO_AUTH_MD5_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA1\fP, \fBRTE_CRYPTO_AUTH_SHA1_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA224\fP, \fBRTE_CRYPTO_AUTH_SHA224_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA256\fP, \fBRTE_CRYPTO_AUTH_SHA256_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA384\fP, \fBRTE_CRYPTO_AUTH_SHA384_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA512\fP, \fBRTE_CRYPTO_AUTH_SHA512_HMAC\fP, \fBRTE_CRYPTO_AUTH_SNOW3G_UIA2\fP, \fBRTE_CRYPTO_AUTH_ZUC_EIA3\fP, \fBRTE_CRYPTO_AUTH_SHA3_224\fP, \fBRTE_CRYPTO_AUTH_SHA3_224_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA3_256\fP, \fBRTE_CRYPTO_AUTH_SHA3_256_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA3_384\fP, \fBRTE_CRYPTO_AUTH_SHA3_384_HMAC\fP, \fBRTE_CRYPTO_AUTH_SHA3_512\fP, \fBRTE_CRYPTO_AUTH_SHA3_512_HMAC\fP, \fBRTE_CRYPTO_AUTH_SM3\fP, \fBRTE_CRYPTO_AUTH_SHAKE_128\fP, \fBRTE_CRYPTO_AUTH_SHAKE_256\fP, \fBRTE_CRYPTO_AUTH_SM3_HMAC\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_auth_operation\fP { \fBRTE_CRYPTO_AUTH_OP_VERIFY\fP, \fBRTE_CRYPTO_AUTH_OP_GENERATE\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_aead_algorithm\fP { \fBRTE_CRYPTO_AEAD_AES_CCM\fP = 1, \fBRTE_CRYPTO_AEAD_AES_GCM\fP, \fBRTE_CRYPTO_AEAD_CHACHA20_POLY1305\fP, \fBRTE_CRYPTO_AEAD_SM4_GCM\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_aead_operation\fP { \fBRTE_CRYPTO_AEAD_OP_ENCRYPT\fP, \fBRTE_CRYPTO_AEAD_OP_DECRYPT\fP }"
.br
.ti -1c
.RI "enum \fBrte_crypto_sym_xform_type\fP { \fBRTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED\fP = 0, \fBRTE_CRYPTO_SYM_XFORM_AUTH\fP, \fBRTE_CRYPTO_SYM_XFORM_CIPHER\fP, \fBRTE_CRYPTO_SYM_XFORM_AEAD\fP }"
.br
.in -1c
.SS "Functions"

.in +1c
.ti -1c
.RI "static void \fB__rte_crypto_sym_op_reset\fP (struct \fBrte_crypto_sym_op\fP *op)"
.br
.ti -1c
.RI "static struct \fBrte_crypto_sym_xform\fP * \fB__rte_crypto_sym_op_sym_xforms_alloc\fP (struct \fBrte_crypto_sym_op\fP *sym_op, void *priv_data, uint8_t nb_xforms)"
.br
.ti -1c
.RI "static int \fB__rte_crypto_sym_op_attach_sym_session\fP (struct \fBrte_crypto_sym_op\fP *sym_op, void *sess)"
.br
.ti -1c
.RI "static __rte_experimental int \fBrte_crypto_mbuf_to_vec\fP (const struct \fBrte_mbuf\fP *mb, uint32_t ofs, uint32_t len, struct \fBrte_crypto_vec\fP vec[], uint32_t num)"
.br
.in -1c
.SS "Variables"

.in +1c
.ti -1c
.RI "const char * \fBrte_crypto_cipher_operation_strings\fP []"
.br
.ti -1c
.RI "const char * \fBrte_crypto_auth_operation_strings\fP []"
.br
.ti -1c
.RI "const char * \fBrte_crypto_aead_operation_strings\fP []"
.br
.in -1c
.SH "Detailed Description"
.PP 
RTE Definitions for Symmetric Cryptography

.PP
Defines symmetric cipher and authentication algorithms and modes, as well as supported symmetric crypto operation combinations\&. 
.PP
Definition in file \fBrte_crypto_sym\&.h\fP\&.
.SH "Enumeration Type Documentation"
.PP 
.SS "enum \fBrte_crypto_cipher_algorithm\fP"
Symmetric Cipher Algorithms

.PP
Note, to avoid ABI breakage across releases
.IP "\(bu" 2
LIST_END should not be added to this enum
.IP "\(bu" 2
the order of enums should not be changed
.IP "\(bu" 2
new algorithms should only be added to the end 
.PP

.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_CIPHER_NULL \fP
NULL cipher algorithm\&. No mode applies to the NULL algorithm\&. 
.TP
\f(BIRTE_CRYPTO_CIPHER_3DES_CBC \fP
Triple DES algorithm in CBC mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_3DES_CTR \fP
Triple DES algorithm in CTR mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_3DES_ECB \fP
Triple DES algorithm in ECB mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_CBC \fP
AES algorithm in CBC mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_CTR \fP
AES algorithm in Counter mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_ECB \fP
AES algorithm in ECB mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_F8 \fP
AES algorithm in F8 mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_XTS \fP
AES algorithm in XTS mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_ARC4 \fP
(A)RC4 cipher algorithm 
.TP
\f(BIRTE_CRYPTO_CIPHER_KASUMI_F8 \fP
KASUMI algorithm in F8 mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SNOW3G_UEA2 \fP
SNOW 3G algorithm in UEA2 mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_ZUC_EEA3 \fP
ZUC algorithm in EEA3 mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_DES_CBC \fP
DES algorithm in CBC mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_AES_DOCSISBPI \fP
AES algorithm using modes required by DOCSIS Baseline Privacy Plus Spec\&. Chained mbufs are not supported in this mode, i\&.e\&. \fBrte_mbuf\&.next\fP for m_src and m_dst in the \fBrte_crypto_sym_op\fP must be NULL\&. 
.TP
\f(BIRTE_CRYPTO_CIPHER_DES_DOCSISBPI \fP
DES algorithm using modes required by DOCSIS Baseline Privacy Plus Spec\&. Chained mbufs are not supported in this mode, i\&.e\&. \fBrte_mbuf\&.next\fP for m_src and m_dst in the \fBrte_crypto_sym_op\fP must be NULL\&. 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_ECB \fP
ShangMi 4 (SM4) algorithm in ECB mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_CBC \fP
ShangMi 4 (SM4) algorithm in CBC mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_CTR \fP
ShangMi 4 (SM4) algorithm in CTR mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_OFB \fP
ShangMi 4 (SM4) algorithm in OFB mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_CFB \fP
ShangMi 4 (SM4) algorithm in CFB mode 
.TP
\f(BIRTE_CRYPTO_CIPHER_SM4_XTS \fP
ShangMi 4 (SM4) algorithm in XTS mode 
.PP
Definition at line \fB120\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_cipher_operation\fP"
Symmetric Cipher Direction 
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_CIPHER_OP_ENCRYPT \fP
Encrypt cipher operation 
.TP
\f(BIRTE_CRYPTO_CIPHER_OP_DECRYPT \fP
Decrypt cipher operation 
.PP
Definition at line \fB186\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_auth_algorithm\fP"
Symmetric Authentication / Hash Algorithms

.PP
Note, to avoid ABI breakage across releases
.IP "\(bu" 2
LIST_END should not be added to this enum
.IP "\(bu" 2
the order of enums should not be changed
.IP "\(bu" 2
new algorithms should only be added to the end 
.PP

.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_AUTH_NULL \fP
NULL hash algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_AES_CBC_MAC \fP
AES-CBC-MAC algorithm\&. Only 128-bit keys are supported\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_AES_CMAC \fP
AES CMAC algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_AES_GMAC \fP
AES GMAC algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_AES_XCBC_MAC \fP
AES XCBC algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_KASUMI_F9 \fP
KASUMI algorithm in F9 mode\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_MD5 \fP
MD5 algorithm 
.TP
\f(BIRTE_CRYPTO_AUTH_MD5_HMAC \fP
HMAC using MD5 algorithm 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA1 \fP
160 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA1_HMAC \fP
HMAC using 160 bit SHA algorithm\&. HMAC-SHA-1-96 can be generated by setting digest_length to 12 bytes in auth/aead xforms\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA224 \fP
224 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA224_HMAC \fP
HMAC using 224 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA256 \fP
256 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA256_HMAC \fP
HMAC using 256 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA384 \fP
384 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA384_HMAC \fP
HMAC using 384 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA512 \fP
512 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA512_HMAC \fP
HMAC using 512 bit SHA algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SNOW3G_UIA2 \fP
SNOW 3G algorithm in UIA2 mode\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_ZUC_EIA3 \fP
ZUC algorithm in EIA3 mode 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_224 \fP
224 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_224_HMAC \fP
HMAC using 224 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_256 \fP
256 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_256_HMAC \fP
HMAC using 256 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_384 \fP
384 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_384_HMAC \fP
HMAC using 384 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_512 \fP
512 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHA3_512_HMAC \fP
HMAC using 512 bit SHA3 algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SM3 \fP
ShangMi 3 (SM3) algorithm 
.TP
\f(BIRTE_CRYPTO_AUTH_SHAKE_128 \fP
128 bit SHAKE algorithm\&. 
.TP
\f(BIRTE_CRYPTO_AUTH_SHAKE_256 \fP
256 bit SHAKE algorithm\&. 
.PP
Definition at line \fB311\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_auth_operation\fP"
Symmetric Authentication / Hash Operations 
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_AUTH_OP_VERIFY \fP
Verify authentication digest 
.TP
\f(BIRTE_CRYPTO_AUTH_OP_GENERATE \fP
Generate authentication digest 
.PP
Definition at line \fB390\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_aead_algorithm\fP"
Symmetric AEAD Algorithms

.PP
Note, to avoid ABI breakage across releases
.IP "\(bu" 2
LIST_END should not be added to this enum
.IP "\(bu" 2
the order of enums should not be changed
.IP "\(bu" 2
new algorithms should only be added to the end 
.PP

.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_AEAD_AES_CCM \fP
AES algorithm in CCM mode\&. 
.TP
\f(BIRTE_CRYPTO_AEAD_AES_GCM \fP
AES algorithm in GCM mode\&. 
.TP
\f(BIRTE_CRYPTO_AEAD_CHACHA20_POLY1305 \fP
Chacha20 cipher with poly1305 authenticator 
.TP
\f(BIRTE_CRYPTO_AEAD_SM4_GCM \fP
SM4 cipher in GCM mode 
.PP
Definition at line \fB480\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_aead_operation\fP"
Symmetric AEAD Operations 
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_AEAD_OP_ENCRYPT \fP
Encrypt and generate digest 
.TP
\f(BIRTE_CRYPTO_AEAD_OP_DECRYPT \fP
Verify digest and decrypt 
.PP
Definition at line \fB492\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "enum \fBrte_crypto_sym_xform_type\fP"
Crypto transformation types 
.PP
\fBEnumerator\fP
.in +1c
.TP
\f(BIRTE_CRYPTO_SYM_XFORM_NOT_SPECIFIED \fP
No xform specified 
.TP
\f(BIRTE_CRYPTO_SYM_XFORM_AUTH \fP
Authentication xform 
.TP
\f(BIRTE_CRYPTO_SYM_XFORM_CIPHER \fP
Cipher xform 
.TP
\f(BIRTE_CRYPTO_SYM_XFORM_AEAD \fP
AEAD xform 
.PP
Definition at line \fB564\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SH "Function Documentation"
.PP 
.SS "void __rte_crypto_sym_op_reset (struct \fBrte_crypto_sym_op\fP * op)\fR [inline]\fP, \fR [static]\fP"
Reset the fields of a symmetric operation to their default values\&.

.PP
\fBParameters\fP
.RS 4
\fIop\fP The crypto operation to be reset\&. 
.RE
.PP

.PP
Definition at line \fB887\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "struct \fBrte_crypto_sym_xform\fP * __rte_crypto_sym_op_sym_xforms_alloc (struct \fBrte_crypto_sym_op\fP * sym_op, void * priv_data, uint8_t nb_xforms)\fR [inline]\fP, \fR [static]\fP"
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

.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
On success returns pointer to first crypto xform in crypto operations chain
.IP "\(bu" 2
On failure returns NULL 
.PP
.RE
.PP

.PP
Definition at line \fB904\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "int __rte_crypto_sym_op_attach_sym_session (struct \fBrte_crypto_sym_op\fP * sym_op, void * sess)\fR [inline]\fP, \fR [static]\fP"
Attach a session to a symmetric crypto operation

.PP
\fBParameters\fP
.RS 4
\fIsym_op\fP crypto operation 
.br
\fIsess\fP cryptodev session 
.RE
.PP

.PP
Definition at line \fB927\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SS "__rte_experimental int rte_crypto_mbuf_to_vec (const struct \fBrte_mbuf\fP * mb, uint32_t ofs, uint32_t len, struct \fBrte_crypto_vec\fP vec[], uint32_t num)\fR [inline]\fP, \fR [static]\fP"
Converts portion of mbuf data into a vector representation\&. Each segment will be represented as a separate entry in \fIvec\fP array\&. Expects that provided \fIofs\fP + \fIlen\fP not to exceed mbuf's \fIpkt_len\fP\&. 
.PP
\fBParameters\fP
.RS 4
\fImb\fP Pointer to the \fI\fBrte_mbuf\fP\fP object\&. 
.br
\fIofs\fP Offset within mbuf data to start with\&. 
.br
\fIlen\fP Length of data to represent\&. 
.br
\fIvec\fP Pointer to an output array of IO vectors\&. 
.br
\fInum\fP Size of an output array\&. 
.RE
.PP
\fBReturns\fP
.RS 4
.IP "\(bu" 2
number of successfully filled entries in \fIvec\fP array\&.
.IP "\(bu" 2
negative number of elements in \fIvec\fP array required\&. 
.PP
.RE
.PP

.PP
Definition at line \fB954\fP of file \fBrte_crypto_sym\&.h\fP\&.
.SH "Variable Documentation"
.PP 
.SS "const char* rte_crypto_cipher_operation_strings[]\fR [extern]\fP"
Cipher operation name strings 
.SS "const char* rte_crypto_auth_operation_strings[]\fR [extern]\fP"
Authentication operation name strings 
.SS "const char* rte_crypto_aead_operation_strings[]\fR [extern]\fP"
Authentication operation name strings 
.SH "Author"
.PP 
Generated automatically by Doxygen for DPDK from the source code\&.
