DPDK  25.11.0
rte_crypto_asym.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium Networks
3  */
4 
5 #ifndef _RTE_CRYPTO_ASYM_H_
6 #define _RTE_CRYPTO_ASYM_H_
7 
17 #include <string.h>
18 #include <stdint.h>
19 
20 #include <rte_memory.h>
21 #include <rte_mempool.h>
22 #include <rte_common.h>
23 
24 #include "rte_crypto_sym.h"
25 
26 struct rte_cryptodev_asym_session;
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
33 extern const char *
35 
37 extern const char *
39 
41 extern const uint16_t
43 extern const uint16_t
44 rte_crypto_ml_kem_privkey_size[];
45 extern const uint16_t
46 rte_crypto_ml_kem_cipher_size[];
47 extern const uint16_t
48 rte_crypto_ml_dsa_pubkey_size[];
49 extern const uint16_t
50 rte_crypto_ml_dsa_privkey_size[];
51 extern const uint16_t
52 rte_crypto_ml_dsa_sign_size[];
53 
54 #ifdef __cplusplus
55 }
56 #endif
57 
58 #define RTE_CRYPTO_ASYM_FLAG_PUB_KEY_NO_PADDING RTE_BIT32(0)
64 #define RTE_CRYPTO_ASYM_FLAG_SHARED_KEY_NO_PADDING RTE_BIT32(1)
70 #define RTE_CRYPTO_ASYM_FLAG_PUB_KEY_COMPRESSED RTE_BIT32(2)
85  RTE_CRYPTO_EC_GROUP_SECP192R1 = 19,
86  RTE_CRYPTO_EC_GROUP_SECP224R1 = 21,
87  RTE_CRYPTO_EC_GROUP_SECP256R1 = 23,
88  RTE_CRYPTO_EC_GROUP_SECP384R1 = 24,
89  RTE_CRYPTO_EC_GROUP_SECP521R1 = 25,
90  RTE_CRYPTO_EC_GROUP_ED25519 = 29,
91  RTE_CRYPTO_EC_GROUP_ED448 = 30,
92  RTE_CRYPTO_EC_GROUP_SM2 = 41,
93 };
94 
99  RTE_CRYPTO_EDCURVE_25519,
100  RTE_CRYPTO_EDCURVE_25519CTX,
101  RTE_CRYPTO_EDCURVE_25519PH,
102  RTE_CRYPTO_EDCURVE_448,
103  RTE_CRYPTO_EDCURVE_448PH
104 };
105 
169 };
170 
183  RTE_CRYPTO_ASYM_OP_LIST_END
184 };
185 
200 };
201 
216 };
217 
231 };
232 
245 typedef struct rte_crypto_param_t {
246  uint8_t *data;
250  size_t length;
253 
256 
265 };
266 
282 };
283 
323  uint16_t pss_saltlen;
338 };
339 
351  enum rte_crypto_rsa_priv_key_type key_type;
352 
353  struct {
358  };
359 
362 };
363 
374 };
375 
384 };
385 
396 };
397 
412 };
413 
426  struct rte_crypto_ec_point q;
428 };
429 
439 };
440 
497 };
498 
533 };
534 
569 };
570 
601 };
602 
630 };
631 
655 };
656 
661  struct rte_crypto_ec_point p;
664  struct rte_crypto_ec_point r;
669 };
670 
681 };
682 
708  union {
723  struct {
724  struct rte_crypto_ec_point c1;
735  struct rte_crypto_ec_point kp;
746  };
747  };
748 
771 };
772 
779  RTE_CRYPTO_ML_KEM_NONE,
780  RTE_CRYPTO_ML_KEM_512,
781  RTE_CRYPTO_ML_KEM_768,
782  RTE_CRYPTO_ML_KEM_1024,
783 };
784 
791  RTE_CRYPTO_ML_KEM_OP_KEYGEN,
792  RTE_CRYPTO_ML_KEM_OP_KEYVER,
793  RTE_CRYPTO_ML_KEM_OP_ENCAP,
794  RTE_CRYPTO_ML_KEM_OP_DECAP,
795  RTE_CRYPTO_ML_KEM_OP_END
796 };
797 
806 };
807 
833 };
834 
854 };
855 
880 };
881 
899 };
900 
908  union {
909  struct rte_crypto_ml_kem_keygen_op keygen;
910  struct rte_crypto_ml_kem_keyver_op keyver;
911  struct rte_crypto_ml_kem_encap_op encap;
912  struct rte_crypto_ml_kem_decap_op decap;
913  };
914 };
915 
922  RTE_CRYPTO_ML_DSA_NONE,
923  RTE_CRYPTO_ML_DSA_44,
924  RTE_CRYPTO_ML_DSA_65,
925  RTE_CRYPTO_ML_DSA_87,
926 };
927 
934  RTE_CRYPTO_ML_DSA_OP_KEYGEN,
935  RTE_CRYPTO_ML_DSA_OP_SIGN,
936  RTE_CRYPTO_ML_DSA_OP_VERIFY,
937  RTE_CRYPTO_ML_DSA_OP_END
938 };
939 
954 };
955 
978 };
979 
1010 };
1011 
1035 };
1036 
1043  enum rte_crypto_ml_dsa_op_type op;
1044  union {
1045  struct rte_crypto_ml_dsa_keygen_op keygen;
1046  struct rte_crypto_ml_dsa_siggen_op siggen;
1047  struct rte_crypto_ml_dsa_sigver_op sigver;
1048  };
1049 };
1050 
1062  union {
1063  struct rte_crypto_rsa_xform rsa;
1072  struct rte_crypto_dh_xform dh;
1075  struct rte_crypto_dsa_xform dsa;
1078  struct rte_crypto_ec_xform ec;
1088  };
1089 };
1090 
1097  union {
1098  struct rte_cryptodev_asym_session *session;
1102  };
1103 
1104  union {
1105  struct rte_crypto_rsa_op_param rsa;
1106  struct rte_crypto_mod_op_param modex;
1107  struct rte_crypto_mod_op_param modinv;
1108  struct rte_crypto_dh_op_param dh;
1109  struct rte_crypto_ecdh_op_param ecdh;
1110  struct rte_crypto_dsa_op_param dsa;
1111  struct rte_crypto_ecdsa_op_param ecdsa;
1112  struct rte_crypto_ecpm_op_param ecpm;
1113  struct rte_crypto_sm2_op_param sm2;
1114  struct rte_crypto_eddsa_op_param eddsa;
1115  struct rte_crypto_ml_kem_op mlkem;
1116  struct rte_crypto_ml_dsa_op mldsa;
1117  };
1118  uint16_t flags;
1123 };
1124 
1125 #endif /* _RTE_CRYPTO_ASYM_H_ */
uint64_t rte_iova_t
Definition: rte_common.h:770
rte_crypto_sm2_op_capa
@ RTE_CRYPTO_SM2_PARTIAL
@ RTE_CRYPTO_SM2_PH
@ RTE_CRYPTO_SM2_RNG
rte_crypto_ml_kem_op_type
rte_crypto_asym_op_type
@ RTE_CRYPTO_ASYM_OP_ENCRYPT
@ RTE_CRYPTO_ASYM_OP_SIGN
@ RTE_CRYPTO_ASYM_OP_DECRYPT
@ RTE_CRYPTO_ASYM_OP_VERIFY
rte_crypto_asym_xform_type
@ RTE_CRYPTO_ASYM_XFORM_NONE
@ RTE_CRYPTO_ASYM_XFORM_UNSPECIFIED
@ RTE_CRYPTO_ASYM_XFORM_SM2
@ RTE_CRYPTO_ASYM_XFORM_MODEX
@ RTE_CRYPTO_ASYM_XFORM_ECPM
@ RTE_CRYPTO_ASYM_XFORM_EDDSA
@ RTE_CRYPTO_ASYM_XFORM_DH
@ RTE_CRYPTO_ASYM_XFORM_ECDH
@ RTE_CRYPTO_ASYM_XFORM_DSA
@ RTE_CRYPTO_ASYM_XFORM_RSA
@ RTE_CRYPTO_ASYM_XFORM_ML_KEM
@ RTE_CRYPTO_ASYM_XFORM_ECDSA
@ RTE_CRYPTO_ASYM_XFORM_ML_DSA
@ RTE_CRYPTO_ASYM_XFORM_MODINV
@ RTE_CRYPTO_ASYM_XFORM_ECFPM
rte_crypto_asym_ke_type
@ RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE
@ RTE_CRYPTO_ASYM_KE_PUB_KEY_VERIFY
@ RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE
@ RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE
const char * rte_crypto_asym_op_strings[]
struct rte_crypto_param_t rte_crypto_param
rte_crypto_ml_kem_type
rte_crypto_rsa_padding_type
@ RTE_CRYPTO_RSA_PADDING_PKCS1_5
@ RTE_CRYPTO_RSA_PADDING_OAEP
@ RTE_CRYPTO_RSA_PADDING_NONE
@ RTE_CRYPTO_RSA_PADDING_PSS
rte_crypto_edward_instance
rte_crypto_param rte_crypto_uint
rte_crypto_ml_dsa_type
rte_crypto_curve_id
const char * rte_crypto_asym_ke_strings[]
rte_crypto_rsa_priv_key_type
@ RTE_RSA_KEY_TYPE_QT
@ RTE_RSA_KEY_TYPE_EXP
rte_crypto_ml_dsa_op_type
const uint16_t rte_crypto_ml_kem_pubkey_size[]
rte_crypto_auth_algorithm
struct rte_cryptodev_asym_session * session
struct rte_crypto_asym_xform * xform
struct rte_crypto_dh_xform dh
struct rte_crypto_modex_xform modex
struct rte_crypto_modinv_xform modinv
struct rte_crypto_asym_xform * next
struct rte_crypto_ml_dsa_xform mldsa
struct rte_crypto_rsa_xform rsa
struct rte_crypto_ml_kem_xform mlkem
struct rte_crypto_ec_xform ec
enum rte_crypto_asym_xform_type xform_type
struct rte_crypto_dsa_xform dsa
enum rte_crypto_asym_ke_type ke_type
rte_crypto_uint priv_key
rte_crypto_uint shared_secret
rte_crypto_uint pub_key
rte_crypto_uint g
rte_crypto_uint p
enum rte_crypto_asym_op_type op_type
rte_crypto_param message
rte_crypto_param y
rte_crypto_param x
enum rte_crypto_curve_id curve_id
rte_crypto_uint pkey
struct rte_crypto_ec_point q
enum rte_crypto_asym_ke_type ke_type
struct rte_crypto_ec_point shared_secret
struct rte_crypto_ec_point pub_key
enum rte_crypto_asym_op_type op_type
struct rte_crypto_ec_point p
struct rte_crypto_ec_point r
enum rte_crypto_asym_op_type op_type
enum rte_crypto_edward_instance instance
enum rte_crypto_auth_algorithm hash
enum rte_crypto_auth_algorithm hash
enum rte_crypto_ml_dsa_type type
enum rte_crypto_ml_kem_op_type op
enum rte_crypto_ml_kem_type type
rte_crypto_uint modulus
rte_crypto_uint exponent
enum rte_crypto_asym_op_type op_type
rte_crypto_param message
rte_crypto_param cipher
enum rte_crypto_auth_algorithm mgf1hash
rte_crypto_param oaep_label
enum rte_crypto_auth_algorithm hash
enum rte_crypto_rsa_padding_type type
struct rte_crypto_rsa_priv_key_qt qt
struct rte_crypto_rsa_padding padding
enum rte_crypto_asym_op_type op_type
rte_crypto_param message
struct rte_crypto_ec_point c1
struct rte_crypto_ec_point kp
rte_crypto_param cipher
enum rte_crypto_auth_algorithm hash