API Reference Manual 1.51.0
Loading...
Searching...
No Matches
api/spec/crypto_types.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2014-2018 Linaro Limited
3 * Copyright (c) 2021-2025 Nokia
4 */
5
11#ifndef ODP_API_SPEC_CRYPTO_TYPES_H_
12#define ODP_API_SPEC_CRYPTO_TYPES_H_
13#include <odp/visibility_begin.h>
14
15#include <odp/api/deprecated.h>
17#include <odp/api/pool_types.h>
18#include <odp/api/std_types.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
47
57
220
497
503 struct {
505 uint32_t null : 1;
506
508 uint32_t des : 1;
509
511 uint32_t trides_cbc : 1;
512
514 uint32_t trides_ecb : 1;
515
517 uint32_t aes_cbc : 1;
518
520 uint32_t aes_ctr : 1;
521
523 uint32_t aes_ecb : 1;
524
526 uint32_t aes_cfb128 : 1;
527
529 uint32_t aes_xts : 1;
530
532 uint32_t aes_gcm : 1;
533
535 uint32_t aes_ccm : 1;
536
538 uint32_t chacha20_poly1305 : 1;
539
541 uint32_t kasumi_f8 : 1;
542
544 uint32_t snow3g_uea2 : 1;
545
547 uint32_t snow5g_nea4 : 1;
548
550 uint32_t aes_eea2 : 1;
551
553 uint32_t zuc_eea3 : 1;
554
556 uint32_t zuc_nea6 : 1;
557
559 uint32_t snow_v : 1;
560
562 uint32_t snow_v_gcm : 1;
563
565 uint32_t sm4_ecb : 1;
566
568 uint32_t sm4_cbc : 1;
569
571 uint32_t sm4_ctr : 1;
572
574 uint32_t sm4_gcm : 1;
575
577 uint32_t sm4_ccm : 1;
578
580
585 uint64_t all_bits;
587
593 struct {
595 uint32_t null : 1;
596
598 uint32_t md5_hmac : 1;
599
601 uint32_t sha1_hmac : 1;
602
604 uint32_t sha224_hmac : 1;
605
607 uint32_t sha256_hmac : 1;
608
610 uint32_t sha384_hmac : 1;
611
613 uint32_t sha512_hmac : 1;
614
616 uint32_t sha3_224_hmac : 1;
617
619 uint32_t sha3_256_hmac : 1;
620
622 uint32_t sha3_384_hmac : 1;
623
625 uint32_t sha3_512_hmac : 1;
626
628 uint32_t aes_gcm : 1;
629
631 uint32_t aes_gmac : 1;
632
634 uint32_t aes_ccm : 1;
635
637 uint32_t aes_cmac : 1;
638
640 uint32_t aes_xcbc_mac : 1;
641
643 uint32_t chacha20_poly1305 : 1;
644
646 uint32_t kasumi_f9 : 1;
647
649 uint32_t snow3g_uia2 : 1;
650
652 uint32_t snow5g_nia4 : 1;
653
655 uint32_t aes_eia2 : 1;
656
658 uint32_t zuc_eia3 : 1;
659
661 uint32_t zuc_nia6 : 1;
662
664 uint32_t snow_v_gcm : 1;
665
667 uint32_t snow_v_gmac : 1;
668
670 uint32_t sm3_hmac : 1;
671
673 uint32_t sm4_gcm : 1;
674
676 uint32_t sm4_gmac : 1;
677
679 uint32_t sm4_ccm : 1;
680
682 uint32_t md5 : 1;
683
685 uint32_t sha1 : 1;
686
688 uint32_t sha224 : 1;
689
691 uint32_t sha256 : 1;
692
694 uint32_t sha384 : 1;
695
697 uint32_t sha512 : 1;
698
700 uint32_t sha3_224 : 1;
701
703 uint32_t sha3_256 : 1;
704
706 uint32_t sha3_384 : 1;
707
709 uint32_t sha3_512 : 1;
710
712 uint32_t sm3 : 1;
713
715
720 uint64_t all_bits;
722
726typedef struct odp_crypto_key {
728 uint8_t *data;
729
731 uint32_t length;
732
734
774
953
1060
1100
1114
1122
1140
1188
1220
1226 uint32_t digest_len;
1227
1229 uint32_t key_len;
1230
1232 uint32_t iv_len;
1233
1235 struct {
1237 uint32_t min;
1238
1240 uint32_t max;
1241
1244 uint32_t inc;
1246
1266
1268
1273#ifdef __cplusplus
1274}
1275#endif
1276
1277#include <odp/visibility_end.h>
1278#endif
ODP packet.
ODP pool.
Standard C language types and definitions for ODP.
Control deprecated API definitions.
odp_cipher_alg_t
Crypto API cipher algorithm.
struct odp_crypto_key odp_crypto_key_t
Crypto API key structure.
uint64_t odp_crypto_session_t
Crypto API opaque session handle.
odp_crypto_op_type_t
Type of odp_crypto_op()/odp_crypto_op_enq() calls.
odp_auth_alg_t
Crypto API authentication algorithm.
odp_crypto_ses_create_err_t
Crypto API session creation return code.
struct odp_crypto_op_status odp_crypto_op_status_t
Crypto API per packet operation completion status.
odp_crypto_alg_err_t
Crypto API algorithm return code.
odp_crypto_op_t
Crypto API operation.
odp_crypto_op_mode_t
Crypto API operation mode.
@ ODP_CIPHER_ALG_KASUMI_F8
Confidentiality F8 algorithm (UEA1)
@ ODP_CIPHER_ALG_AES_CFB128
AES with 128-bit cipher feedback.
@ ODP_CIPHER_ALG_ZUC_NEA6
NEA6 confidentiality algorithm.
@ ODP_CIPHER_ALG_SNOW5G_NEA4
NEA4 confidentiality algorithm.
@ ODP_CIPHER_ALG_SNOW3G_UEA2
Confidentiality UEA2 algorithm (128-EEA1)
@ ODP_CIPHER_ALG_SNOW_V_GCM
SNOW-V-GCM AEAD algorithm.
@ ODP_CIPHER_ALG_AES_CCM
AES-CCM.
@ ODP_CIPHER_ALG_SM4_CCM
SM4-CCM AEAD algorithm.
@ ODP_CIPHER_ALG_AES_ECB
AES with electronic codebook.
@ ODP_CIPHER_ALG_AES_CTR
AES with counter mode.
@ ODP_CIPHER_ALG_CHACHA20_POLY1305
ChaCha20-Poly1305.
@ ODP_CIPHER_ALG_AES_CBC
AES with cipher block chaining.
@ ODP_CIPHER_ALG_SM4_ECB
SM4 block cipher in ECB mode.
@ ODP_CIPHER_ALG_AES_GCM
AES-GCM.
@ ODP_CIPHER_ALG_3DES_CBC
Triple DES with cipher block chaining.
@ ODP_CIPHER_ALG_AES_EEA2
Confidentiality 128-EEA2 algorithm.
@ ODP_CIPHER_ALG_SM4_CBC
SM4 block cipher in CBC mode.
@ ODP_CIPHER_ALG_AES_XTS
AES with XEX-based tweaked-codebook mode with ciphertext stealing (XTS)
@ ODP_CIPHER_ALG_DES
DES.
@ ODP_CIPHER_ALG_SM4_GCM
SM4-GCM AEAD algorithm.
@ ODP_CIPHER_ALG_NULL
No cipher algorithm specified.
@ ODP_CIPHER_ALG_ZUC_EEA3
ZUC based confidentiality algorithm.
@ ODP_CIPHER_ALG_SNOW_V
SNOW-V stream cipher.
@ ODP_CIPHER_ALG_3DES_ECB
Triple DES with Electronic Codebook.
@ ODP_CIPHER_ALG_SM4_CTR
SM4 block cipher in CTR mode.
@ ODP_CRYPTO_OP_TYPE_BASIC
Input packet data and metadata are copied to the output packet and then processed.
@ ODP_CRYPTO_OP_TYPE_OOP
Out-of-place crypto operation.
@ ODP_CRYPTO_OP_TYPE_BASIC_AND_OOP
Basic or out-of-place crypto operation depending on op params.
@ ODP_AUTH_ALG_ZUC_NIA6
NIA6 integrity algorithm.
@ ODP_AUTH_ALG_SM4_GCM
SM4-GCM AEAD algorithm.
@ ODP_AUTH_ALG_MD5
MD5 algorithm.
@ ODP_AUTH_ALG_SHA384_HMAC
HMAC-SHA-384.
@ ODP_AUTH_ALG_CHACHA20_POLY1305
ChaCha20-Poly1305 AEAD.
@ ODP_AUTH_ALG_AES_CMAC
AES-CMAC.
@ ODP_AUTH_ALG_SHA384
384 bit SHA2 algorithm
@ ODP_AUTH_ALG_SM3
SM3 hash function.
@ ODP_AUTH_ALG_NULL
No authentication algorithm specified.
@ ODP_AUTH_ALG_SM4_CCM
SM4-CCM AEAD algorithm.
@ ODP_AUTH_ALG_SHA512
512 bit SHA2 algorithm
@ ODP_AUTH_ALG_SHA3_256
SHA-3 hash function producing 256-bit digests.
@ ODP_AUTH_ALG_MD5_HMAC
HMAC-MD5.
@ ODP_AUTH_ALG_SHA512_HMAC
HMAC-SHA-512.
@ ODP_AUTH_ALG_SHA1_HMAC
HMAC-SHA-1.
@ ODP_AUTH_ALG_SNOW5G_NIA4
NIA4 integrity algorithm.
@ ODP_AUTH_ALG_SHA256_HMAC
HMAC-SHA-256.
@ ODP_AUTH_ALG_SHA3_224_HMAC
HMAC using SHA3-224.
@ ODP_AUTH_ALG_SHA256
256 bit SHA2 algorithm
@ ODP_AUTH_ALG_SHA1
SHA1 algorithm.
@ ODP_AUTH_ALG_SNOW_V_GMAC
SNOW-V-GMAC.
@ ODP_AUTH_ALG_SNOW3G_UIA2
Integrity UIA2 algorithm (128-EIA1)
@ ODP_AUTH_ALG_SHA3_512
SHA-3 hash function producing 512-bit digests.
@ ODP_AUTH_ALG_SM3_HMAC
HMAC using SM3.
@ ODP_AUTH_ALG_SHA224_HMAC
HMAC-SHA-224.
@ ODP_AUTH_ALG_AES_GMAC
AES-GMAC.
@ ODP_AUTH_ALG_AES_XCBC_MAC
AES-XCBC-MAC.
@ ODP_AUTH_ALG_AES_GCM
AES-GCM.
@ ODP_AUTH_ALG_KASUMI_F9
Integrity F9 algorithm (UIA1)
@ ODP_AUTH_ALG_SHA3_256_HMAC
HMAC using SHA3-256.
@ ODP_AUTH_ALG_SHA3_384
SHA-3 hash function producing 384-bit digests.
@ ODP_AUTH_ALG_SM4_GMAC
SM4-GMAC.
@ ODP_AUTH_ALG_AES_CCM
AES-CCM.
@ ODP_AUTH_ALG_SHA3_224
SHA-3 hash function producing 224-bit digests.
@ ODP_AUTH_ALG_SNOW_V_GCM
SNOW-V-GCM AEAD algorithm.
@ ODP_AUTH_ALG_SHA3_384_HMAC
HMAC using SHA3-384.
@ ODP_AUTH_ALG_AES_EIA2
Integrity 128-EIA2 algorithm.
@ ODP_AUTH_ALG_SHA3_512_HMAC
HMAC using SHA3-512.
@ ODP_AUTH_ALG_ZUC_EIA3
ZUC-based integrity algorithm.
@ ODP_AUTH_ALG_SHA224
224 bit SHA2 algorithm
@ ODP_CRYPTO_SES_ERR_ALG_COMBO
Unsupported combination of algorithms.
@ ODP_CRYPTO_SES_ERR_NONE
Session created.
@ ODP_CRYPTO_SES_ERR_AUTH
Creation failed, bad auth params.
@ ODP_CRYPTO_SES_ERR_ALG_ORDER
Unsupported order of cipher and auth.
@ ODP_CRYPTO_SES_ERR_CIPHER
Creation failed, bad cipher params.
@ ODP_CRYPTO_SES_ERR_PARAMS
Unsupported combination of session creation parameters.
@ ODP_CRYPTO_SES_ERR_ENOMEM
Creation failed, no resources.
@ ODP_CRYPTO_ALG_ERR_NONE
Algorithm successful.
@ ODP_CRYPTO_ALG_ERR_OTHER
Other error.
@ ODP_CRYPTO_ALG_ERR_ICV_CHECK
Computed ICV value mismatch.
@ ODP_CRYPTO_ALG_ERR_DATA_SIZE
Invalid range or packet size.
@ ODP_CRYPTO_OP_ENCODE
Encrypt and/or compute authentication ICV.
@ ODP_CRYPTO_OP_DECODE
Decrypt and/or verify authentication ICV.
@ ODP_CRYPTO_SYNC
Synchronous, return results immediately.
@ ODP_CRYPTO_ASYNC
Asynchronous, return results via posted event.
bool odp_bool_t
Boolean type.
odp_support_t
ODP support.
Authentication algorithm capabilities.
struct odp_crypto_auth_capability_t::@26 aad_len
Additional Authenticated Data (AAD) lengths.
uint32_t min
Minimum AAD length in bytes.
uint32_t max
Maximum AAD length in bytes.
odp_bool_t bit_mode
Auth algorithm supports bit mode.
uint32_t inc
Increment of supported lengths between min and max (in bytes)
uint32_t digest_len
Digest length in bytes.
uint32_t key_len
Key length in bytes.
uint32_t iv_len
IV length in bytes.
odp_support_t async_mode
Supported packet operation in ASYNC mode.
odp_bool_t queue_type_sched
Scheduled crypto completion queue support.
odp_crypto_cipher_algos_t ciphers
Supported cipher algorithms.
odp_crypto_auth_algos_t hw_auths
Authentication algorithms implemented with HW offload.
odp_crypto_cipher_algos_t hw_ciphers
Cipher algorithms implemented with HW offload.
odp_support_t sync_mode
Supported packet operation in SYNC mode.
odp_bool_t queue_type_plain
Plain crypto completion queue support.
odp_crypto_auth_algos_t auths
Supported authentication algorithms.
uint32_t max_sessions
Maximum number of crypto sessions.
Cipher algorithm capabilities.
odp_bool_t bit_mode
Cipher supports bit mode.
uint32_t key_len
Key length in bytes.
uint32_t iv_len
IV length in bytes.
Crypto API key structure.
uint8_t * data
Key data.
uint32_t length
Key length in bytes.
Crypto API per packet operation completion status.
odp_crypto_alg_err_t alg_err
Algorithm specific return code.
Crypto packet API per packet operation parameters.
uint32_t hash_result_offset
Offset from start of packet for hash result.
const uint8_t * aad_ptr
Pointer to AAD.
int32_t dst_offset_shift
Shift of the output offsets with ODP_CRYPTO_OP_TYPE_OOP.
const uint8_t * cipher_iv_ptr
IV pointer for cipher.
const uint8_t * auth_iv_ptr
IV pointer for authentication.
odp_packet_data_range_t cipher_range
Data range to be ciphered.
odp_crypto_session_t session
Session handle from creation.
uint8_t null_crypto
Use null crypto algorithms.
odp_packet_data_range_t auth_range
Data range to be authenticated.
Crypto packet API operation result.
odp_crypto_op_status_t auth_status
Authentication status.
odp_packet_t pkt_in
Input packet passed to odp_crypo_op_enq() when the operation type of the session is ODP_CRYPTO_OP_TYP...
odp_crypto_op_status_t cipher_status
Cipher status.
Crypto API session creation parameters.
odp_bool_t auth_cipher_text
Authenticate cipher vs.
odp_bool_t cipher_range_in_bits
Cipher range unit.
odp_crypto_key_t auth_key
Authentication key.
uint32_t auth_aad_len
Additional Authenticated Data (AAD) length in bytes.
odp_bool_t null_crypto_enable
Enable skipping crypto on per-packet basis.
odp_crypto_op_type_t op_type
Crypto operation type.
odp_crypto_key_t cipher_key
Cipher key.
odp_queue_t compl_queue
Async mode completion event queue.
odp_pool_t output_pool
Output pool.
uint32_t cipher_iv_len
Cipher IV length.
odp_bool_t hash_result_in_auth_range
Hash result location may overlap authentication range.
uint32_t auth_digest_len
Authentication digest length in bytes.
odp_auth_alg_t auth_alg
Authentication algorithm.
odp_bool_t auth_range_in_bits
Auth range unit.
odp_crypto_op_mode_t op_mode
Operation mode when using packet interface: sync or async.
odp_cipher_alg_t cipher_alg
Cipher algorithm.
uint32_t auth_iv_len
Authentication IV length.
odp_crypto_op_t op
Encode vs.
Packet API data range specifier.
Authentication algorithms in a bit field structure.
uint32_t md5
ODP_AUTH_ALG_MD5.
uint32_t sha3_512_hmac
ODP_AUTH_ALG_SHA3_512_HMAC.
uint32_t sha384
ODP_AUTH_ALG_SHA384.
uint32_t sha224
ODP_AUTH_ALG_SHA224.
uint32_t sha3_224
ODP_AUTH_ALG_SHA3_224.
uint64_t all_bits
All bits of the bit field structure.
uint32_t sm3
ODP_AUTH_ALG_SM3.
uint32_t null
ODP_AUTH_ALG_NULL.
uint32_t sha1_hmac
ODP_AUTH_ALG_SHA1_HMAC.
uint32_t sha512_hmac
ODP_AUTH_ALG_SHA512_HMAC.
uint32_t sha256
ODP_AUTH_ALG_SHA256.
uint32_t sha224_hmac
ODP_AUTH_ALG_SHA224_HMAC.
uint32_t sm4_gmac
ODP_AUTH_ALG_SM4_GMAC.
uint32_t sha3_512
ODP_AUTH_ALG_SHA3_512.
uint32_t aes_cmac
ODP_AUTH_ALG_AES_CMAC.
uint32_t zuc_eia3
ODP_AUTH_ALG_ZUC_EIA3.
uint32_t kasumi_f9
ODP_AUTH_ALG_KASUMI_F9.
uint32_t sm4_ccm
ODP_AUTH_ALG_SM4_CCM.
uint32_t snow3g_uia2
ODP_AUTH_ALG_SNOW3G_UIA2.
uint32_t snow_v_gmac
ODP_AUTH_ALG_SNOW_V_GMAC.
uint32_t aes_gmac
ODP_AUTH_ALG_AES_GMAC.
uint32_t sm4_gcm
ODP_AUTH_ALG_SM4_GCM.
uint32_t sha3_224_hmac
ODP_AUTH_ALG_SHA3_224_HMAC.
uint32_t aes_gcm
ODP_AUTH_ALG_AES_GCM.
uint32_t sm3_hmac
ODP_AUTH_ALG_SM3_HMAC.
uint32_t snow_v_gcm
ODP_AUTH_ALG_SNOW_V_GCM.
uint32_t md5_hmac
ODP_AUTH_ALG_MD5_HMAC.
uint32_t sha1
ODP_AUTH_ALG_SHA1.
uint32_t sha3_384_hmac
ODP_AUTH_ALG_SHA3_384_HMAC.
uint32_t aes_xcbc_mac
ODP_AUTH_ALG_AES_XCBC_MAC.
uint32_t sha3_256
ODP_AUTH_ALG_SHA3_256.
uint32_t sha384_hmac
ODP_AUTH_ALG_SHA384_HMAC.
uint32_t sha256_hmac
ODP_AUTH_ALG_SHA256_HMAC.
uint32_t aes_eia2
ODP_AUTH_ALG_AES_EIA2.
uint32_t sha3_256_hmac
ODP_AUTH_ALG_SHA3_256_HMAC.
uint32_t chacha20_poly1305
ODP_AUTH_ALG_CHACHA20_POLY1305.
uint32_t sha512
ODP_AUTH_ALG_SHA512.
struct odp_crypto_auth_algos_t::@25 bit
Authentication algorithms.
uint32_t zuc_nia6
ODP_AUTH_ALG_ZUC_NIA6.
uint32_t aes_ccm
ODP_AUTH_ALG_AES_CCM.
uint32_t snow5g_nia4
ODP_AUTH_ALG_SNOW5G_NIA4.
uint32_t sha3_384
ODP_AUTH_ALG_SHA3_384.
Cipher algorithms in a bit field structure.
uint32_t snow_v
ODP_CIPHER_ALG_SNOW_V.
struct odp_crypto_cipher_algos_t::@24 bit
Cipher algorithms.
uint32_t sm4_cbc
ODP_CIPHER_ALG_SM4_CBC.
uint32_t aes_cfb128
ODP_CIPHER_ALG_AES_CFB128.
uint32_t zuc_nea6
ODP_CIPHER_ALG_ZUC_NEA6.
uint32_t aes_gcm
ODP_CIPHER_ALG_AES_GCM.
uint32_t trides_cbc
ODP_CIPHER_ALG_3DES_CBC.
uint32_t snow_v_gcm
ODP_CIPHER_ALG_SNOW_V_GCM.
uint32_t sm4_ecb
ODP_CIPHER_ALG_SM4_ECB.
uint32_t aes_eea2
ODP_CIPHER_ALG_AES_EEA2.
uint32_t aes_ctr
ODP_CIPHER_ALG_AES_CTR.
uint32_t aes_cbc
ODP_CIPHER_ALG_AES_CBC.
uint32_t sm4_ctr
ODP_CIPHER_ALG_SM4_CTR.
uint32_t des
ODP_CIPHER_ALG_DES.
uint32_t aes_xts
ODP_CIPHER_ALG_AES_XTS.
uint32_t snow5g_nea4
ODP_CIPHER_ALG_SNOW5G_NEA4.
uint32_t zuc_eea3
ODP_CIPHER_ALG_ZUC_EEA3.
uint32_t null
ODP_CIPHER_ALG_NULL.
uint32_t sm4_gcm
ODP_CIPHER_ALG_SM4_GCM.
uint64_t all_bits
All bits of the bit field structure.
uint32_t kasumi_f8
ODP_CIPHER_ALG_KASUMI_F8.
uint32_t sm4_ccm
ODP_CIPHER_ALG_SM4_CCM.
uint32_t aes_ecb
ODP_CIPHER_ALG_AES_ECB.
uint32_t chacha20_poly1305
ODP_CIPHER_ALG_CHACHA20_POLY1305.
uint32_t trides_ecb
ODP_CIPHER_ALG_3DES_ECB.
uint32_t snow3g_uea2
ODP_CIPHER_ALG_SNOW3G_UEA2.
uint32_t aes_ccm
ODP_CIPHER_ALG_AES_CCM.