API Reference Manual  1.45.0
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-2024 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/packet_types.h>
16 #include <odp/api/pool_types.h>
17 #include <odp/api/std_types.h>
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
40 typedef enum {
46 
50 typedef enum {
56 
60 typedef enum {
63 
66 
69 
72 
75 
78 
81 
84 
88 
97 
106 
115 
124 
135 
145 
165 
168 
176 
179 
182 
185 
193 
201 
203 
207 typedef enum {
210 
216 
222 
228 
234 
240 
246 
249 
252 
255 
258 
267 
286 
295 
303 
310 
319 
330 
341 
351 
372 
380 
395 
398 
406 
421 
429 
432 
435 
438 
441 
444 
447 
450 
453 
456 
459 
462 
464 
470  struct {
472  uint32_t null : 1;
473 
475  uint32_t des : 1;
476 
478  uint32_t trides_cbc : 1;
479 
481  uint32_t trides_ecb : 1;
482 
484  uint32_t aes_cbc : 1;
485 
487  uint32_t aes_ctr : 1;
488 
490  uint32_t aes_ecb : 1;
491 
493  uint32_t aes_cfb128 : 1;
494 
496  uint32_t aes_xts : 1;
497 
499  uint32_t aes_gcm : 1;
500 
502  uint32_t aes_ccm : 1;
503 
505  uint32_t chacha20_poly1305 : 1;
506 
508  uint32_t kasumi_f8 : 1;
509 
511  uint32_t snow3g_uea2 : 1;
512 
514  uint32_t aes_eea2 : 1;
515 
517  uint32_t zuc_eea3 : 1;
518 
520  uint32_t snow_v : 1;
521 
523  uint32_t snow_v_gcm : 1;
524 
526  uint32_t sm4_ecb : 1;
527 
529  uint32_t sm4_cbc : 1;
530 
532  uint32_t sm4_ctr : 1;
533 
535  uint32_t sm4_gcm : 1;
536 
538  uint32_t sm4_ccm : 1;
539 
540  } bit;
541 
546  uint64_t all_bits;
548 
552 typedef union odp_crypto_auth_algos_t {
554  struct {
556  uint32_t null : 1;
557 
559  uint32_t md5_hmac : 1;
560 
562  uint32_t sha1_hmac : 1;
563 
565  uint32_t sha224_hmac : 1;
566 
568  uint32_t sha256_hmac : 1;
569 
571  uint32_t sha384_hmac : 1;
572 
574  uint32_t sha512_hmac : 1;
575 
577  uint32_t sha3_224_hmac : 1;
578 
580  uint32_t sha3_256_hmac : 1;
581 
583  uint32_t sha3_384_hmac : 1;
584 
586  uint32_t sha3_512_hmac : 1;
587 
589  uint32_t aes_gcm : 1;
590 
592  uint32_t aes_gmac : 1;
593 
595  uint32_t aes_ccm : 1;
596 
598  uint32_t aes_cmac : 1;
599 
601  uint32_t aes_xcbc_mac : 1;
602 
604  uint32_t chacha20_poly1305 : 1;
605 
607  uint32_t kasumi_f9 : 1;
608 
610  uint32_t snow3g_uia2 : 1;
611 
613  uint32_t aes_eia2 : 1;
614 
616  uint32_t zuc_eia3 : 1;
617 
619  uint32_t snow_v_gcm : 1;
620 
622  uint32_t snow_v_gmac : 1;
623 
625  uint32_t sm3_hmac : 1;
626 
628  uint32_t sm4_gcm : 1;
629 
631  uint32_t sm4_gmac : 1;
632 
634  uint32_t sm4_ccm : 1;
635 
637  uint32_t md5 : 1;
638 
640  uint32_t sha1 : 1;
641 
643  uint32_t sha224 : 1;
644 
646  uint32_t sha256 : 1;
647 
649  uint32_t sha384 : 1;
650 
652  uint32_t sha512 : 1;
653 
655  uint32_t sha3_224 : 1;
656 
658  uint32_t sha3_256 : 1;
659 
661  uint32_t sha3_384 : 1;
662 
664  uint32_t sha3_512 : 1;
665 
667  uint32_t sm3 : 1;
668 
669  } bit;
670 
675  uint64_t all_bits;
677 
681 typedef struct odp_crypto_key {
683  uint8_t *data;
684 
686  uint32_t length;
687 
689 
693 typedef enum odp_crypto_op_type_t {
702 
708 
722 
736 
738 
748 
760 
772 
784 
803 
813 
827 
833 
847 
853 
855  uint32_t cipher_iv_len;
856 
876 
882 
884  uint32_t auth_iv_len;
885 
890  uint32_t auth_digest_len;
891 
898  uint32_t auth_aad_len;
899 
906 
917 
919 
926 
928  const uint8_t *cipher_iv_ptr;
929 
931  const uint8_t *auth_iv_ptr;
932 
955 
959  const uint8_t *aad_ptr;
960 
978 
1003 
1016 
1023  uint8_t null_crypto :1;
1024 
1026 
1030 typedef enum {
1039 
1048 
1056 
1066 
1070 typedef enum {
1080 
1084 typedef struct odp_crypto_op_status {
1088 
1098 
1101 
1104 
1106 
1110 typedef struct odp_crypto_capability_t {
1112  uint32_t max_sessions;
1113 
1116 
1119 
1122 
1125 
1128 
1131 
1142 
1154 
1160  uint32_t key_len;
1161 
1163  uint32_t iv_len;
1164 
1184 
1186 
1192  uint32_t digest_len;
1193 
1195  uint32_t key_len;
1196 
1198  uint32_t iv_len;
1199 
1201  struct {
1203  uint32_t min;
1204 
1206  uint32_t max;
1207 
1210  uint32_t inc;
1212 
1232 
1234 
1239 #ifdef __cplusplus
1240 }
1241 #endif
1242 
1243 #include <odp/visibility_end.h>
1244 #endif
ODP packet.
ODP pool.
Standard C language types and definitions for ODP.
struct odp_crypto_packet_result_t odp_crypto_packet_result_t
Crypto packet API operation result.
struct odp_crypto_cipher_capability_t odp_crypto_cipher_capability_t
Cipher algorithm capabilities.
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.
struct odp_crypto_packet_op_param_t odp_crypto_packet_op_param_t
Crypto packet API per packet operation parameters.
odp_crypto_op_type_t
Type of odp_crypto_op()/odp_crypto_op_enq() calls.
struct odp_crypto_auth_capability_t odp_crypto_auth_capability_t
Authentication algorithm capabilities.
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.
union odp_crypto_auth_algos_t odp_crypto_auth_algos_t
Authentication algorithms in a bit field structure.
struct odp_crypto_session_param_t odp_crypto_session_param_t
Crypto API session creation parameters.
odp_crypto_alg_err_t
Crypto API algorithm return code.
union odp_crypto_cipher_algos_t odp_crypto_cipher_algos_t
Cipher algorithms in a bit field structure.
odp_crypto_op_t
Crypto API operation.
struct odp_crypto_capability_t odp_crypto_capability_t
Crypto capabilities.
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_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_LEGACY
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_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_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.
int odp_bool_t
Use odp boolean type to have it well-defined and known size, regardless which compiler is used as thi...
odp_support_t
ODP support.
Authentication algorithm capabilities.
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.
struct odp_crypto_auth_capability_t::@29 aad_len
Additional Authenticated Data (AAD) lengths.
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.
struct odp_crypto_auth_algos_t::@28 bit
Authentication algorithms.
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.
uint32_t aes_ccm
ODP_AUTH_ALG_AES_CCM.
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.
uint32_t sm4_cbc
ODP_CIPHER_ALG_SM4_CBC.
uint32_t aes_cfb128
ODP_CIPHER_ALG_AES_CFB128.
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.
struct odp_crypto_cipher_algos_t::@27 bit
Cipher algorithms.
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 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.