DPDK: Data Plane Development Kit

18.02.0
rte_crypto_sym.h File Reference
#include <string.h>
#include <rte_mbuf.h>
#include <rte_memory.h>
#include <rte_mempool.h>
#include <rte_common.h>

Go to the source code of this file.

Data Structures

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
}
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
}
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 }
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, struct rte_cryptodev_sym_session *sess)

Variables

const char * rte_crypto_cipher_algorithm_strings []
const char * rte_crypto_cipher_operation_strings []
const char * rte_crypto_auth_algorithm_strings []
const char * rte_crypto_auth_operation_strings []
const char * rte_crypto_aead_algorithm_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

Symmetric Cipher Algorithms

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.

Definition at line 30 of file rte_crypto_sym.h.

Symmetric Cipher Direction

Enumerator:
RTE_CRYPTO_CIPHER_OP_ENCRYPT 

Encrypt cipher operation

RTE_CRYPTO_CIPHER_OP_DECRYPT 

Decrypt cipher operation

Definition at line 90 of file rte_crypto_sym.h.

Symmetric Authentication / Hash Algorithms

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 

128 bit SHA algorithm.

RTE_CRYPTO_AUTH_SHA1_HMAC 

HMAC using 128 bit SHA algorithm.

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

Definition at line 200 of file rte_crypto_sym.h.

Symmetric Authentication / Hash Operations

Enumerator:
RTE_CRYPTO_AUTH_OP_VERIFY 

Verify authentication digest

RTE_CRYPTO_AUTH_OP_GENERATE 

Generate authentication digest

Definition at line 256 of file rte_crypto_sym.h.

Symmetric AEAD Algorithms

Enumerator:
RTE_CRYPTO_AEAD_AES_CCM 

AES algorithm in CCM mode.

RTE_CRYPTO_AEAD_AES_GCM 

AES algorithm in GCM mode.

Definition at line 331 of file rte_crypto_sym.h.

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 344 of file rte_crypto_sym.h.

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 409 of file rte_crypto_sym.h.

Function Documentation

static void __rte_crypto_sym_op_reset ( struct rte_crypto_sym_op op)
inlinestatic

Reset the fields of a symmetric operation to their default values.

Parameters
opThe crypto operation to be reset.

Definition at line 670 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 
)
staticread

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 687 of file rte_crypto_sym.h.

static int __rte_crypto_sym_op_attach_sym_session ( struct rte_crypto_sym_op sym_op,
struct rte_cryptodev_sym_session sess 
)
inlinestatic

Attach a session to a symmetric crypto operation

Parameters
sym_opcrypto operation
sesscryptodev session

Definition at line 710 of file rte_crypto_sym.h.

Variable Documentation

const char* rte_crypto_cipher_algorithm_strings[]

Cipher algorithm name strings

Examples:
examples/l2fwd-crypto/main.c.
const char* rte_crypto_cipher_operation_strings[]

Cipher operation name strings

const char* rte_crypto_auth_algorithm_strings[]

Authentication algorithm name strings

Examples:
examples/l2fwd-crypto/main.c.
const char* rte_crypto_auth_operation_strings[]

Authentication operation name strings

const char* rte_crypto_aead_algorithm_strings[]

AEAD algorithm name strings

Examples:
examples/l2fwd-crypto/main.c.
const char* rte_crypto_aead_operation_strings[]

Authentication operation name strings