5#ifndef __DAO_LIQUID_CRYPTO_H__ 
    6#define __DAO_LIQUID_CRYPTO_H__ 
   20#define DAO_LC_VERSION "25.10.0" 
   22#define DAO_CRYPTO_VERSION_LEN 32 
   24#define DAO_CRYPTO_MAX_NB_DEV 1 
   26#define DAO_CMD_QP_IDX_INVALID 0xFFFF 
   28#define DAO_LC_SESS_ID_INVALID 0 
   30#define DAO_LC_SESS_ID_HASH 1 
   32#define DAO_LC_SESS_ID_AES_KEY_WRAP 2 
   34#define DAO_LC_MAX_DIGEST_LEN 255 
   36#define DAO_LC_MAX_AUTH_KEY_LEN 1024 
   38#define DAO_LC_AES_KEY_WRAP_MAX_KEY_DATA_LEN 3072 
   40#define DAO_LC_AES_MAX_KEY_ENC_KEY_LEN 32 
   42#define DAO_LC_AES_KEY_WRAP_IV_LEN 8 
  572    DAO_LC_AE_EC_ID_P192 = 0,
 
  574    DAO_LC_AE_EC_ID_P224 = 1,
 
  576    DAO_LC_AE_EC_ID_P256 = 2,
 
  578    DAO_LC_AE_EC_ID_P384 = 3,
 
  580    DAO_LC_AE_EC_ID_P521 = 4,
 
 
  838struct dao_lc_random_op {
 
 1073                     uint16_t mod_len, uint16_t exp_len, uint16_t msg_len,
 
 1074                     const uint8_t *mod, 
const uint8_t *exp, 
const uint8_t *msg,
 
 1075                     uint8_t *em, uint64_t op_cookie);
 
 1115                     uint16_t mod_len, uint16_t exp_len, 
const uint8_t *mod,
 
 1116                     const uint8_t *exp, 
const uint8_t *em, uint8_t *msg,
 
 1117                     uint64_t op_cookie);
 
 1163                         uint16_t msg_len, 
const uint8_t *q, 
const uint8_t *dQ,
 
 1164                         const uint8_t *p, 
const uint8_t *dP,
 
 1165                         const uint8_t *qInv, 
const uint8_t *msg, uint8_t *em,
 
 1166                         uint64_t op_cookie);
 
 1211                         const uint8_t *q, 
const uint8_t *dQ, 
const uint8_t *p,
 
 1212                         const uint8_t *dP, 
const uint8_t *qInv,
 
 1213                         const uint8_t *em, uint8_t *msg, uint64_t op_cookie);
 
 1311                      uint64_t sess_cookie);
 
 1353                         uint16_t nb_events);
 
 1408                    uint16_t nonce_len, uint16_t pkey_len, uint16_t digest_len,
 
 1409                    const uint8_t *nonce, 
const uint8_t *pkey,
 
 1410                    const uint8_t *digest_data, uint8_t *rs_outdata,
 
 1411                    uint64_t op_cookie);
 
 1471                      uint16_t r_len, uint16_t s_len, uint16_t digest_len,
 
 1472                      uint16_t qx_len, uint16_t qy_len, 
const uint8_t *r_data,
 
 1473                      const uint8_t *s_data, 
const uint8_t *digest,
 
 1474                      const uint8_t *qx_data, 
const uint8_t *qy_data,
 
 1475                      uint64_t op_cookie);
 
 1549                      uint16_t mod_len, uint16_t exp_len, uint16_t msg_len,
 
 1550                      const uint8_t *mod, 
const uint8_t *exp,
 
 1551                      const uint8_t *msg, uint8_t *em, uint64_t op_cookie);
 
 1602                          uint16_t mod_len, uint16_t exp_len,
 
 1603                          const uint8_t *mod, 
const uint8_t *exp,
 
 1604                          const uint8_t *em, uint8_t *msg, uint64_t op_cookie);
 
int dao_liquid_crypto_enq_op_pkcs1v15enc_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len, uint16_t msg_len, const uint8_t *q, const uint8_t *dQ, const uint8_t *p, const uint8_t *dP, const uint8_t *qInv, const uint8_t *msg, uint8_t *em, uint64_t op_cookie)
 
int dao_liquid_crypto_fini(void)
 
dao_liquid_crypto_ec_curve_type
 
@ DAO_LC_HASH_DIGEST_SIZE_SHA2_SHA512
 
@ DAO_LC_HASH_DIGEST_SIZE_SHA2_SHA384
 
@ DAO_LC_HASH_DIGEST_SIZE_SHA1
 
@ DAO_LC_HASH_DIGEST_SIZE_SHA2_SHA256
 
@ DAO_LC_HASH_DIGEST_SIZE_SHA2_SHA224
 
int dao_liquid_crypto_info_get(struct dao_lc_info *info)
 
int dao_liquid_crypto_enq_op_ecdsa_sign(uint8_t dev_id, uint16_t qp_id, enum dao_liquid_crypto_ec_curve_type curve_id, uint16_t nonce_len, uint16_t pkey_len, uint16_t digest_len, const uint8_t *nonce, const uint8_t *pkey, const uint8_t *digest_data, uint8_t *rs_outdata, uint64_t op_cookie)
 
@ DAO_LC_FC_AUTH_KEY_SRC_OP
 
@ DAO_LC_FC_AUTH_KEY_SRC_CTX
 
int dao_liquid_crypto_sym_sess_create(uint8_t dev_id, const struct dao_lc_sym_ctx *ctx, uint64_t sess_cookie)
 
int dao_liquid_crypto_qp_configure(uint8_t dev_id, uint16_t qp_id, struct dao_lc_qp_conf *conf)
 
@ DAO_LC_FC_AES_KEY_LEN_192
 
@ DAO_LC_FC_AES_KEY_LEN_128
 
@ DAO_LC_FC_AES_KEY_LEN_256
 
@ DAO_LC_SYM_OPCODE_AES_KEY_WRAP
 
@ DAO_LC_AES_KEY_LEN_32_BYTES
 
@ DAO_LC_AES_KEY_LEN_24_BYTES
 
@ DAO_LC_AES_KEY_LEN_16_BYTES
 
dao_lc_fc_auth_input_type
 
@ DAO_LC_FC_AUTH_INPUT_OPAD_IPAD
 
@ DAO_LC_FC_AUTH_INPUT_KEY
 
uint16_t dao_liquid_crypto_seg_size_calc(struct dao_lc_feature_params *params)
 
int dao_liquid_crypto_enq_op_ecdsa_verify(uint8_t dev_id, uint16_t qp_id, enum dao_liquid_crypto_ec_curve_type curve_id, uint16_t r_len, uint16_t s_len, uint16_t digest_len, uint16_t qx_len, uint16_t qy_len, const uint8_t *r_data, const uint8_t *s_data, const uint8_t *digest, const uint8_t *qx_data, const uint8_t *qy_data, uint64_t op_cookie)
 
int dao_liquid_crypto_dev_destroy(uint8_t dev_id)
 
@ DAO_UC_ERR_GC_CIPHER_UNSUPPORTED
 
@ DAO_UC_ERR_GC_ICV_MISCOMPARE
 
@ DAO_UC_ECC_SIGN_S_INVALID
 
@ DAO_UC_RSA_MOD_LEN_INVALID
 
@ DAO_UC_RSA_MOD_LEN_NOT_EVEN
 
@ DAO_UC_ECC_CURVE_INVALID
 
@ DAO_UC_ECC_PUB_KEY_INVALID
 
@ DAO_UC_ECC_DATA_LEN_INVALID
 
@ DAO_UC_RSA_PKCS_DEC_INCORRECT
 
@ DAO_UC_ECC_SIGN_R_INVALID
 
@ DAO_UC_ERR_GC_CTX_LEN_INVALID
 
@ DAO_UC_ERR_GC_DATA_LEN_INVALID
 
@ DAO_UC_ERR_GC_KEY_DATA_LEN_INVALID
 
@ DAO_UC_ERR_PKCS_DECODING_ERROR
 
@ DAO_UC_ERR_GC_OFFSET_INVALID
 
@ DAO_UC_ERR_GC_DATA_UNALIGNED
 
@ DAO_UC_ERR_GC_KEY_LEN_INVALID
 
@ DAO_UC_RSA_SG_NOT_SUPPORTED
 
@ DAO_UC_ECC_VERIFY_MISMATCH
 
@ DAO_UC_ERR_GC_AUTH_UNSUPPORTED
 
int dao_liquid_crypto_enq_op_pkcs1v15dec_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len, const uint8_t *q, const uint8_t *dQ, const uint8_t *p, const uint8_t *dP, const uint8_t *qInv, const uint8_t *em, uint8_t *msg, uint64_t op_cookie)
 
int dao_liquid_crypto_enq_op_pkcs1v15enc(uint8_t dev_id, uint16_t qp_id, enum dao_liquid_crypto_rsa_key_type key_type, uint16_t mod_len, uint16_t exp_len, uint16_t msg_len, const uint8_t *mod, const uint8_t *exp, const uint8_t *msg, uint8_t *em, uint64_t op_cookie)
 
int dao_liquid_crypto_dev_start(uint8_t dev_id)
 
int dao_liquid_crypto_sym_sess_destroy(uint8_t dev_id, uint64_t sess_id, uint64_t sess_cookie)
 
#define DAO_CRYPTO_VERSION_LEN
 
#define DAO_LC_MAX_AUTH_KEY_LEN
 
@ DAO_LC_FC_ENC_CIPHER_CHACHA
 
@ DAO_LC_FC_ENC_CIPHER_AES_CCM
 
@ DAO_LC_FC_ENC_CIPHER_AES_CTR
 
@ DAO_LC_FC_ENC_CIPHER_3DES_CBC
 
@ DAO_LC_FC_ENC_CIPHER_AES_CFB
 
@ DAO_LC_FC_ENC_CIPHER_3DES_ECB
 
@ DAO_LC_FC_ENC_CIPHER_AES_XTS
 
@ DAO_LC_FC_ENC_CIPHER_AES_CBC
 
@ DAO_LC_FC_ENC_CIPHER_AES_GCM
 
@ DAO_LC_FC_ENC_CIPHER_NULL
 
@ DAO_LC_FC_ENC_CIPHER_AES_ECB
 
#define DAO_CRYPTO_MAX_NB_DEV
 
int dao_liquid_crypto_dev_stop(uint8_t dev_id)
 
int dao_liquid_crypto_enqueue_op_passthrough(uint8_t dev_id, uint16_t qp_id, uint64_t op_cookie)
 
@ DAO_LC_HASH_TYPE_SHA3_SHAKE128
 
@ DAO_LC_HASH_TYPE_SHA3_SHA384
 
@ DAO_LC_HASH_TYPE_SHA2_SHA256
 
@ DAO_LC_HASH_TYPE_POLY1305
 
@ DAO_LC_HASH_TYPE_SHA3_SHA256
 
@ DAO_LC_HASH_TYPE_SHA3_SHAKE256
 
@ DAO_LC_HASH_TYPE_SHA2_SHA224
 
@ DAO_LC_HASH_TYPE_SHA2_SHA512
 
@ DAO_LC_HASH_TYPE_SHA3_SHA224
 
@ DAO_LC_HASH_TYPE_SHA2_SHA384
 
@ DAO_LC_HASH_TYPE_SHA3_SHA512
 
uint16_t dao_liquid_crypto_dequeue_burst(uint8_t dev_id, uint16_t qp_id, struct dao_lc_res *res, uint16_t nb_ops)
 
@ DAO_LC_RANDOM_TYPE_X9_17
 
#define DAO_LC_AES_MAX_KEY_ENC_KEY_LEN
 
@ DAO_LC_CMD_EVENT_SESS_CREATE
 
@ DAO_LC_CMD_EVENT_SESS_DESTROY
 
uint16_t dao_liquid_crypto_cmd_event_dequeue(uint8_t dev_id, struct dao_lc_cmd_event *events, uint16_t nb_events)
 
int dao_liquid_crypto_enq_op_rsa_oaep_enc(uint8_t dev_id, uint16_t qp_id, uint8_t *label, uint16_t label_len, enum dao_lc_hash_type hash_type, uint16_t mod_len, uint16_t exp_len, uint16_t msg_len, const uint8_t *mod, const uint8_t *exp, const uint8_t *msg, uint8_t *em, uint64_t op_cookie)
 
int dao_liquid_crypto_enq_op_pkcs1v15dec(uint8_t dev_id, uint16_t qp_id, enum dao_liquid_crypto_rsa_key_type key_type, uint16_t mod_len, uint16_t exp_len, const uint8_t *mod, const uint8_t *exp, const uint8_t *em, uint8_t *msg, uint64_t op_cookie)
 
int dao_liquid_crypto_init(void)
 
int dao_liquid_crypto_enq_op_rsa_oaep_exp_dec(uint8_t dev_id, uint16_t qp_id, uint8_t *label, uint16_t label_len, enum dao_lc_hash_type hash_type, uint16_t mod_len, uint16_t exp_len, const uint8_t *mod, const uint8_t *exp, const uint8_t *em, uint8_t *msg, uint64_t op_cookie)
 
int dao_liquid_crypto_enq_op_random(uint8_t dev_id, uint16_t qp_id, struct dao_lc_random_op *op)
 
uint16_t dao_liquid_crypto_sym_enqueue_burst(uint8_t dev_id, uint16_t qp_id, struct dao_lc_sym_op *op, uint16_t nb_ops)
 
int dao_liquid_crypto_dev_create(struct dao_lc_dev_conf *conf)
 
dao_liquid_crypto_rsa_key_type
 
@ DAO_LC_RSA_KEY_TYPE_PRIVATE
 
@ DAO_LC_RSA_KEY_TYPE_PUBLIC
 
uint8_t kek[DAO_LC_AES_MAX_KEY_ENC_KEY_LEN]
 
enum dao_lc_fc_aes_key_len aes_kek_type
 
struct dao_lc_cmd_sess_event sess_event
 
uint16_t cipher_auth_payload_len
 
enum dao_liquid_crypto_ec_curve_type curve_id
 
struct dao_lc_feature_params::@11 rng
 
struct dao_lc_feature_params::@10 rsa
 
struct dao_lc_feature_params::@9 sym
 
struct dao_lc_feature_params::@12 ecc
 
enum dao_lc_hash_type hmac_hash_type
 
uint8_t hmac_auth_key[DAO_LC_MAX_AUTH_KEY_LEN]
 
uint16_t nb_qp[DAO_CRYPTO_MAX_NB_DEV]
 
char version[DAO_CRYPTO_VERSION_LEN]
 
bool out_of_order_delivery_en
 
uint16_t wrap_unwrap_key_len
 
struct dao_lc_sym_fc_ctx fc
 
struct dao_lc_hmac_hash_ctx hash
 
struct dao_lc_aes_key_wrap_ctx aes_key_wrap
 
enum dao_lc_sym_opcode opcode
 
uint32_t wrap_unwrap_key_len
 
struct dao_lc_buf * in_buffer
 
struct dao_lc_buf * out_buffer