rte_crypto_cipher_xform(3)
π NAME π
rte_crypto_cipher_xform β bestie, this is the whole setup page for your symmetric cipher vibes, straight out of the DPDK Library Functions Manual β¨
π¦ SYNOPSIS π¦
#include <rte_crypto_sym.h>
π Data Fields π
Here's the entire squad, no cap, exactly as they appear in the struct:
enum rte_crypto_cipher_operation op
enum rte_crypto_cipher_algorithm algo
struct {
const uint8_t * data
uint16_t length
} key
struct {
uint16_t offset
uint16_t length
} iv
uint32_t dataunit_len
π Detailed Description π
Symmetric Cipher Setup Data. Literally what it says on the tin π«Ά
This structure contains data relating to Cipher (Encryption and Decryption) use to create a session.
Fr fr, it's defined at line 210 of file rte_crypto_sym.h β that's the source of truth, bestie π
β¨ Field Documentation β¨
πΈ enum rte_crypto_cipher_operation op
This parameter determines if the cipher operation is an encrypt or a decrypt operation. For the RC4 algorithm and the F8/CTR modes, only encrypt operations are valid.
β οΈ So like β RC4 and F8/CTR are encrypt-only, okay? Don't come for me if you try decrypt and it doesn't work.
Definition at line 211 of file rte_crypto_sym.h.
π enum rte_crypto_cipher_algorithm algo
Cipher algorithm. That's the whole vibe β which algorithm you're running π§
Definition at line 216 of file rte_crypto_sym.h.
π const uint8_t* data
pointer to key data.
Definition at line 220 of file rte_crypto_sym.h.
π uint16_t length
key length in bytes.
Length of valid IV data.
- For block ciphers in
CBCorF8mode, or forKASUMIinF8mode, or forSNOW 3GinUEA2mode, this is the length of the IV (which must be the same as the block length of the cipher). - For block ciphers in
CTRmode, this is the length of the counter (which must be the same as the block length of the cipher) or a 12-byte nonce (AESonly). - For
CCMmode, this is the length of the nonce, which can be in the range 7 to 13 inclusive.
Definition at line 221 of file rte_crypto_sym.h.
π₯ struct { ... } key
Cipher key. The main character of this whole page, honestly π
In case the PMD supports RTE_CRYPTODEV_FF_CIPHER_WRAPPED_KEY, the original key data provided may be wrapped(encrypted) using key wrap algorithm such as AES key wrap (rfc3394) and hence length of the key may increase beyond the PMD advertised supported key size. PMD shall validate the key length and report EMSGSIZE error while configuring the session and application can skip checking the capability key length in such cases.
For the RTE_CRYPTO_CIPHER_AES_F8 mode of operation, key.data will point to a concatenation of the AES encryption key followed by a keymask. As per RFC3711, the keymask should be padded with trailing bytes to match the length of the encryption key used.
Cipher key length is in bytes. For AES it can be 128 bits (16 bytes), 192 bits (24 bytes) or 256 bits (32 bytes).
For the RTE_CRYPTO_CIPHER_AES_F8 mode of operation, key.length should be set to the combined length of the encryption key and the keymask. Since the keymask and the encryption key are the same size, key.length should be set to 2 x the AES encryption key length.
For the AES-XTS mode of operation:
- Two keys must be provided and
key.lengthrefers to total length of the two keys. key.datamust point to the two keys concatenated together (key1 || key2).- Each key can be either 128 bits (16 bytes) or 256 bits (32 bytes).
- Both keys must have the same size.
π¦ uint16_t offset
Starting point for Initialisation Vector or Counter, specified as number of bytes from start of crypto operation (rte_crypto_op).
- For block ciphers in
CBCorF8mode, or forKASUMIinF8mode, or forSNOW 3GinUEA2mode, this is the Initialisation Vector (IV) value. - For block ciphers in
CTRmode, this is the counter. - For
CCMmode, the first byte is reserved, and the nonce should be written starting at&iv[1](to allow space for the implementation to write in the flags in the first byte). Note that a full 16 bytes should be allocated, even though the length field will have a value less than this. Note that the PMDs may modify the memory reserved (the first byte and the final padding). - For
AES-XTS, this is the 128bit tweak,i, fromIEEE Std 1619-2007.
For optimum performance, the data pointed to SHOULD be 8-byte aligned. Not a suggestion, bestie, it's a SHOULD π
Definition at line 255 of file rte_crypto_sym.h.
π struct { ... } iv
Initialisation vector parameters. Yes, another one β it's giving nested struct energy π
β uint32_t dataunit_len
When RTE_CRYPTODEV_FF_CIPHER_MULTIPLE_DATA_UNITS is enabled, this is the data-unit length of the algorithm, otherwise or when the value is 0, use the operation length. The value should be in the range defined by the dataunit_set field in the cipher capability.
- For
AES-XTSit is the size of data-unit, fromIEEE Std 1619-2007. For-each data-unit in the operation, the tweak (IV) value is assigned consecutively starting from the operation assigned IV.
Definition at line 298 of file rte_crypto_sym.h.
π«Ά Author π«Ά
Generated automatically by Doxygen for DPDK from the source code. Not a human, not a vibe curator β just Doxygen doing its thing π
okay that's the whole page, go slay your session config πβ¨ β this was rte_crypto_cipher_xform(3) from DPDK Version 26.03.0, courtsey of the DPDK manual, mwah π
π¦ where this page comes from
- nixos 26.05: dpdk 26.03
- nixpkgs unstable: dpdk 26.03
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms