Data Accelerator Offload
Loading...
Searching...
No Matches
dao_liquid_crypto.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: Marvell-MIT
2 * Copyright (c) 2025 Marvell.
3 */
4
5#ifndef __DAO_LIQUID_CRYPTO_H__
6#define __DAO_LIQUID_CRYPTO_H__
7
14#include <stdbool.h>
15#include <stdint.h>
16
17#include <dao_eth_trs.h>
18
20#define DAO_LC_VERSION "26.01.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
44#define DAO_LC_RSA_OAEP_MAX_LABEL_LEN 1024
46#define DAO_LC_RSA_OAEP_MAX_MOD_LEN 988
48#define DAO_LC_SHA3_MAX_CUSTOM_STRING_LEN 511
50#define DAO_LC_SHA3_MAX_FUNCTION_NAME_LEN 511
52#define DAO_LC_KMAC_MAX_AUTH_KEY_LEN 511
53
66
83
87struct dao_lc_buf {
89 void *data;
91 uint32_t total_len;
93 uint32_t frag_len;
96};
97
101/* Structure dao_lc_sym_op 8< */
107 uint64_t op_cookie;
109 uint64_t sess_id;
136 uint32_t cipher_len;
141 uint32_t auth_offset;
146 uint32_t auth_len;
148 uint8_t *cipher_iv;
150 uint8_t *auth_iv;
152 uint8_t *aad;
154 uint16_t aad_len;
156 uint8_t *digest;
170 union {
177 };
178 union {
183 };
184};
185/* >8 End of structure dao_lc_sym_op. */
186
206
277
289
300 uint64_t compcode : 7;
302 uint64_t doneint : 1;
307 uint64_t uc_compcode : 8;
309 uint64_t rlen : 16;
311 uint64_t spi : 32;
312
314 uint64_t esn;
315 } cn10k;
316
323 uint64_t compcode : 8;
328 uint64_t uc_compcode : 8;
330 uint64_t doneint : 1;
332 uint64_t reserved_17_63 : 47;
333
336 } cn9k;
337
338 struct {
343 uint8_t compcode;
345 uint8_t op_type;
347 uint8_t alg;
349 uint16_t data_out_len;
350 } pqc;
351
353 uint64_t u64[2];
354};
355
367
375 uint8_t dev_id;
377 uint16_t nb_qp;
383 uint16_t cmd_qp_idx;
384};
385
390 union {
392 struct {
394 uint64_t pqc_en : 1;
395 };
398 };
399};
400
428
438 union {
440 struct {
442 uint16_t data_out_len;
443 } rsa;
445 struct {
448 } ecdsa;
449 struct {
452 } key_wrap;
454 struct {
456 uint8_t op_type;
458 uint8_t alg;
460 uint8_t ret_code;
461 } pqc;
463 uint64_t u64;
464 };
466 uint64_t op_cookie;
467};
468
478
491
499 uint64_t sess_id;
501 uint64_t sess_cookie;
502};
503
511 uint8_t event_type;
512 union {
515 };
516};
517
533
543
555
586
591 /* Encrypt first, then authenticate */
592 DAO_LC_FC_CIPHER_THEN_AUTH = 0,
593 /* Authenticate first, then encrypt */
594 DAO_LC_FC_AUTH_THEN_CIPHER = 1
595};
596
606
616
664
680
685 /* Elliptic curve identifier for P-192 (secp192r1) */
686 DAO_LC_AE_EC_ID_P192 = 0,
687 /* Elliptic curve identifier for P-224 (secpr224r1) */
688 DAO_LC_AE_EC_ID_P224 = 1,
689 /* Elliptic curve identifier for P-256 (secpr256r1) */
690 DAO_LC_AE_EC_ID_P256 = 2,
691 /* Elliptic curve identifier for P-384 (secpr384r1) */
692 DAO_LC_AE_EC_ID_P384 = 3,
693 /* Elliptic curve identifier for P-521 (secpr521r1) */
694 DAO_LC_AE_EC_ID_P521 = 4,
698
709 uint64_t iv_source : 1;
714 uint64_t aes_key_len : 2;
716 uint64_t rsvd_59 : 1;
721 uint64_t enc_cipher : 4;
728 uint64_t auth_input_type : 1;
735 uint64_t auth_key_src : 1;
737 uint64_t rsvd_50_51 : 2;
742 uint64_t hash_type : 4;
744 uint64_t mac_len : 8;
746 uint64_t rsvd_16_39 : 24;
748 uint64_t hmac_key_sz : 16;
750 uint8_t encr_key[32];
752 uint8_t encr_iv[16];
754 uint8_t ipad[64];
759 uint8_t opad[64];
760};
761
776 struct {
789 uint16_t iv_len;
791 uint16_t aad_len;
793 uint16_t digest_len;
797 uint16_t key_wrap_len;
814 struct {
816 uint16_t mod_len;
818 uint16_t exp_len;
825 struct {
827 uint32_t rand_len;
829
838 struct {
844 uint16_t digest_len;
846
860 struct {
864 uint16_t mod_len;
866 uint16_t exp_len;
868 uint16_t label_len;
872
873 /* Specifies whether PQC is enabled or not */
874 struct {
875 bool is_pqc_enabled;
876 } pqc;
877
885 bool cmd_qp;
886};
887
903
920
942
963
972 uint8_t *key;
974 uint8_t *datetime;
976 uint8_t *seed;
978 uint8_t *out_seed;
979};
980
981struct dao_lc_random_op {
983 enum dao_lc_random_type type;
985 struct dao_lc_buf *out_buf;
987 uint32_t rand_len;
989 uint64_t op_cookie;
990
991 union {
993 struct dao_lc_random_op_x9_17 x9_17;
994 };
995};
996
1008
1024
1036
1050
1067
1084
1105int dao_liquid_crypto_qp_configure(uint8_t dev_id, uint16_t qp_id, struct dao_lc_qp_conf *conf);
1106
1121int dao_liquid_crypto_qp_inflight_req_count(uint8_t dev_id, uint16_t qp_id);
1122
1136
1155
1175int dao_liquid_crypto_dev_stop(uint8_t dev_id);
1176
1193
1213int dao_liquid_crypto_enqueue_op_passthrough(uint8_t dev_id, uint16_t qp_id, uint64_t op_cookie);
1214
1252int dao_liquid_crypto_enq_op_pkcs1v15enc(uint8_t dev_id, uint16_t qp_id,
1253 enum dao_liquid_crypto_rsa_key_type key_type,
1254 uint16_t mod_len, uint16_t exp_len, uint16_t msg_len,
1255 const uint8_t *mod, const uint8_t *exp, const uint8_t *msg,
1256 uint8_t *em, uint64_t op_cookie);
1257
1294int dao_liquid_crypto_enq_op_pkcs1v15dec(uint8_t dev_id, uint16_t qp_id,
1295 enum dao_liquid_crypto_rsa_key_type key_type,
1296 uint16_t mod_len, uint16_t exp_len, const uint8_t *mod,
1297 const uint8_t *exp, const uint8_t *em, uint8_t *msg,
1298 uint64_t op_cookie);
1299
1343int dao_liquid_crypto_enq_op_pkcs1v15enc_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len,
1344 uint16_t msg_len, const uint8_t *q, const uint8_t *dQ,
1345 const uint8_t *p, const uint8_t *dP,
1346 const uint8_t *qInv, const uint8_t *msg, uint8_t *em,
1347 uint64_t op_cookie);
1348
1391int dao_liquid_crypto_enq_op_pkcs1v15dec_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len,
1392 const uint8_t *q, const uint8_t *dQ, const uint8_t *p,
1393 const uint8_t *dP, const uint8_t *qInv,
1394 const uint8_t *em, uint8_t *msg, uint64_t op_cookie);
1395
1416
1437
1438#define DAO_LC_ML_KEYPAIR_SEED_LEN (64)
1439#define DAO_LC_ML_KEM_SHARED_SECRET_LEN (32)
1440
1441/* FIPS 204 recommends at most 255. */
1442#define DAO_LC_ML_DSA_CTX_LEN_MAX (255)
1443
1444#define DAO_LC_ML_KEM_512_PUB_KEY_LEN (800)
1445#define DAO_LC_ML_KEM_512_PRIV_KEY_LEN (1632)
1446#define DAO_LC_ML_KEM_512_CIPHERTEXT_LEN (768)
1447
1448#define DAO_LC_ML_KEM_768_PUB_KEY_LEN (1184)
1449#define DAO_LC_ML_KEM_768_PRIV_KEY_LEN (2400)
1450#define DAO_LC_ML_KEM_768_CIPHERTEXT_LEN (1088)
1451
1452#define DAO_LC_ML_KEM_1024_PUB_KEY_LEN (1568)
1453#define DAO_LC_ML_KEM_1024_PRIV_KEY_LEN (3168)
1454#define DAO_LC_ML_KEM_1024_CIPHERTEXT_LEN (1568)
1455
1456#define DAO_LC_ML_DSA_44_PUB_KEY_LEN (1312)
1457#define DAO_LC_ML_DSA_44_PRIV_KEY_LEN (2560)
1458#define DAO_LC_ML_DSA_44_SIGNATURE_LEN (2420)
1459
1460#define DAO_LC_ML_DSA_65_PUB_KEY_LEN (1952)
1461#define DAO_LC_ML_DSA_65_PRIV_KEY_LEN (4032)
1462#define DAO_LC_ML_DSA_65_SIGNATURE_LEN (3309)
1463
1464#define DAO_LC_ML_DSA_87_PUB_KEY_LEN (2592)
1465#define DAO_LC_ML_DSA_87_PRIV_KEY_LEN (4896)
1466#define DAO_LC_ML_DSA_87_SIGNATURE_LEN (4627)
1467
1468static uint16_t pqc_ml_pub_key_len[] = {[DAO_LC_ML_KEM_512] = DAO_LC_ML_KEM_512_PUB_KEY_LEN,
1469 [DAO_LC_ML_KEM_768] = DAO_LC_ML_KEM_768_PUB_KEY_LEN,
1470 [DAO_LC_ML_KEM_1024] = DAO_LC_ML_KEM_1024_PUB_KEY_LEN,
1471 [DAO_LC_ML_DSA_44] = DAO_LC_ML_DSA_44_PUB_KEY_LEN,
1472 [DAO_LC_ML_DSA_65] = DAO_LC_ML_DSA_65_PUB_KEY_LEN,
1473 [DAO_LC_ML_DSA_87] = DAO_LC_ML_DSA_87_PUB_KEY_LEN};
1474
1475static uint16_t pqc_ml_priv_key_len[] = {[DAO_LC_ML_KEM_512] = DAO_LC_ML_KEM_512_PRIV_KEY_LEN,
1476 [DAO_LC_ML_KEM_768] = DAO_LC_ML_KEM_768_PRIV_KEY_LEN,
1477 [DAO_LC_ML_KEM_1024] = DAO_LC_ML_KEM_1024_PRIV_KEY_LEN,
1478 [DAO_LC_ML_DSA_44] = DAO_LC_ML_DSA_44_PRIV_KEY_LEN,
1479 [DAO_LC_ML_DSA_65] = DAO_LC_ML_DSA_65_PRIV_KEY_LEN,
1480 [DAO_LC_ML_DSA_87] = DAO_LC_ML_DSA_87_PRIV_KEY_LEN};
1481
1482static uint16_t pqc_ml_signature_len[] = {
1484 [DAO_LC_ML_KEM_512] = 0,
1485 [DAO_LC_ML_KEM_768] = 0,
1486 [DAO_LC_ML_KEM_1024] = 0,
1487
1488 [DAO_LC_ML_DSA_44] = DAO_LC_ML_DSA_44_SIGNATURE_LEN,
1489 [DAO_LC_ML_DSA_65] = DAO_LC_ML_DSA_65_SIGNATURE_LEN,
1490 [DAO_LC_ML_DSA_87] = DAO_LC_ML_DSA_87_SIGNATURE_LEN};
1491
1492static uint16_t pqc_ml_ciphertext_len[] = {
1493 [DAO_LC_ML_KEM_512] = DAO_LC_ML_KEM_512_CIPHERTEXT_LEN,
1494 [DAO_LC_ML_KEM_768] = DAO_LC_ML_KEM_768_CIPHERTEXT_LEN,
1495 [DAO_LC_ML_KEM_1024] = DAO_LC_ML_KEM_1024_CIPHERTEXT_LEN,
1496 [DAO_LC_ML_DSA_44] = 0, /* DSA does not have ciphertext */
1497 [DAO_LC_ML_DSA_65] = 0, /* DSA does not have ciphertext */
1498 [DAO_LC_ML_DSA_87] = 0 /* DSA does not have ciphertext */
1499};
1500
1501static inline uint16_t
1502dao_lc_pqc_pub_key_len(enum dao_lc_pqc_alg alg)
1503{
1504 return pqc_ml_pub_key_len[alg];
1505}
1506
1507static inline uint16_t
1508dao_lc_pqc_priv_key_len(enum dao_lc_pqc_alg alg)
1509{
1510 return pqc_ml_priv_key_len[alg];
1511}
1512
1513static inline uint16_t
1514dao_lc_pqc_signature_len(enum dao_lc_pqc_alg alg)
1515{
1516 return pqc_ml_signature_len[alg];
1517}
1518
1519static inline uint16_t
1520dao_lc_pqc_ciphertext_len(enum dao_lc_pqc_alg alg)
1521{
1522 return pqc_ml_ciphertext_len[alg];
1523}
1524
1541 union {
1543 struct {
1545 uint8_t *pub_key;
1547 uint8_t *priv_key;
1549 uint8_t *seed;
1552 struct {
1554 const uint8_t *enc_key;
1558 uint8_t *ciphertext;
1561 struct {
1563 const uint8_t *dec_key;
1565 const uint8_t *ciphertext;
1567 uint8_t *shared_secret;
1570 struct {
1572 const uint8_t *msg;
1574 uint16_t msg_len;
1576 const uint8_t *ctx;
1578 uint16_t ctx_len;
1580 const uint8_t *priv_key;
1582 uint8_t *signature;
1585 struct {
1587 const uint8_t *msg;
1589 uint16_t msg_len;
1591 const uint8_t *ctx;
1593 uint16_t ctx_len;
1595 const uint8_t *signature;
1597 const uint8_t *pub_key;
1599 };
1600};
1601
1623int dao_liquid_crypto_pqc_enqueue(uint8_t dev_id, uint16_t qp_id, struct dao_lc_pqc_op *op,
1624 uint64_t op_cookie);
1625
1646int dao_liquid_crypto_enq_op_random(uint8_t dev_id, uint16_t qp_id, struct dao_lc_random_op *op);
1647
1674uint16_t dao_liquid_crypto_sym_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
1675 struct dao_lc_sym_op *op, uint16_t nb_ops);
1676
1699uint16_t dao_liquid_crypto_dequeue_burst(uint8_t dev_id, uint16_t qp_id, struct dao_lc_res *res,
1700 uint16_t nb_ops);
1701
1721int dao_liquid_crypto_sym_sess_create(uint8_t dev_id, const struct dao_lc_sym_ctx *ctx,
1722 uint64_t sess_cookie);
1723
1742int dao_liquid_crypto_sym_sess_destroy(uint8_t dev_id, uint64_t sess_id, uint64_t sess_cookie);
1743
1763uint16_t dao_liquid_crypto_cmd_event_dequeue(uint8_t dev_id, struct dao_lc_cmd_event *events,
1764 uint16_t nb_events);
1765
1828int dao_liquid_crypto_enq_op_ecdsa_sign(uint8_t dev_id, uint16_t qp_id,
1829 enum dao_liquid_crypto_ec_curve_type curve_id,
1830 uint16_t nonce_len, uint16_t pkey_len, uint16_t digest_len,
1831 const uint8_t *nonce, const uint8_t *pkey,
1832 const uint8_t *digest, uint8_t *rs_outdata,
1833 uint64_t op_cookie);
1834
1895int dao_liquid_crypto_enq_op_ecdsa_verify(uint8_t dev_id, uint16_t qp_id,
1896 enum dao_liquid_crypto_ec_curve_type curve_id,
1897 uint16_t r_len, uint16_t s_len, uint16_t digest_len,
1898 uint16_t qx_len, uint16_t qy_len, const uint8_t *r_data,
1899 const uint8_t *s_data, const uint8_t *digest,
1900 const uint8_t *qx_data, const uint8_t *qy_data,
1901 uint64_t op_cookie);
1902
1975int dao_liquid_crypto_enq_op_rsa_oaep_enc(uint8_t dev_id, uint16_t qp_id, uint8_t *label,
1976 uint16_t label_len, enum dao_lc_hash_type hash_type,
1977 uint16_t mod_len, uint16_t exp_len, uint16_t msg_len,
1978 const uint8_t *mod, const uint8_t *exp,
1979 const uint8_t *msg, uint8_t *em, uint64_t op_cookie);
1980
2030int dao_liquid_crypto_enq_op_rsa_oaep_pvt_exp_dec(uint8_t dev_id, uint16_t qp_id,
2031 uint16_t label_len, uint8_t *label,
2032 enum dao_lc_hash_type hash_type, uint16_t mod_len,
2033 const uint8_t *mod, uint16_t exp_len,
2034 const uint8_t *exp, const uint8_t *em,
2035 uint8_t *msg, uint64_t op_cookie);
2036
2094int dao_liquid_crypto_enq_op_rsa_oaep_pvt_crt_dec(uint8_t dev_id, uint16_t qp_id, uint8_t *label,
2095 uint16_t label_len,
2096 enum dao_lc_hash_type hash_type, uint16_t mod_len,
2097 uint8_t *p, uint8_t *dP, uint8_t *q, uint8_t *dQ,
2098 uint8_t *qInv, uint8_t *em, uint8_t *msg,
2099 uint64_t op_cookie);
2100
2101#endif /* __DAO_LIQUID_CRYPTO_H__ */
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_enq_op_rsa_oaep_pvt_crt_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, uint8_t *p, uint8_t *dP, uint8_t *q, uint8_t *dQ, uint8_t *qInv, uint8_t *em, uint8_t *msg, uint64_t op_cookie)
dao_lc_pqc_op_type
@ DAO_LC_ML_DSA_OP_VERIFY
@ DAO_LC_ML_DSA_OP_KEYGEN
@ DAO_LC_ML_DSA_OP_SIGN
@ DAO_LC_ML_KEM_OP_DECAP
@ DAO_LC_ML_KEM_OP_ENCAP
@ DAO_LC_ML_KEM_OP_KEYGEN
int dao_liquid_crypto_fini(void)
dao_liquid_crypto_ec_curve_type
@ DAO_LC_AE_EC_ID_PMAX
dao_lc_hash_digest_size
@ 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)
dao_pqc_comp_code
@ DAO_PQC_COMP_GOOD
@ DAO_PQC_COMP_NOT_DONE
@ DAO_PQC_COMP_LIB_ERROR_LIBOQS
@ DAO_LC_ML_KEM_768
@ DAO_LC_ML_KEM_1024
@ DAO_LC_ML_DSA_87
@ DAO_LC_ML_KEM_512
@ DAO_LC_ML_DSA_65
@ DAO_LC_ML_DSA_44
@ DAO_LC_ML_PQC_ALG_END
dao_lc_fc_auth_key_src
@ 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)
dao_cpt_comp_code
@ DAO_CPT_COMP_NOT_DONE
@ DAO_CPT_COMP_HWERR
@ DAO_CPT_COMP_SWERR
@ DAO_CPT_COMP_INSTERR
@ DAO_CPT_COMP_WARN
@ DAO_CPT_COMP_GOOD
@ DAO_CPT_COMP_FAULT
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
@ 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
@ DAO_LC_SYM_OPCODE_HASH
@ DAO_LC_SYM_OPCODE_AES_KEY_WRAP
@ DAO_LC_SYM_OPCODE_HMAC
@ DAO_LC_SYM_OPCODE_FC
dao_lc_fc_iv_src
@ DAO_LC_FC_IV_SRC_CTX
@ DAO_LC_FC_IV_SRC_OP
dao_lc_aes_key_len_bytes
@ 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)
dao_lc_fc_chain_order
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_comp_code
@ 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_RSA_OAEP_DECODING_ERROR
@ DAO_UC_ECC_PUB_KEY_INVALID
@ DAO_UC_SUCCESS
@ 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_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_PAI
@ DAO_UC_ECC_VERIFY_MISMATCH
@ DAO_UC_ERR_GC_AUTH_UNSUPPORTED
int dao_liquid_crypto_qp_inflight_req_count(uint8_t dev_id, uint16_t qp_id)
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
int dao_liquid_crypto_enq_op_rsa_oaep_pvt_exp_dec(uint8_t dev_id, uint16_t qp_id, uint16_t label_len, uint8_t *label, enum dao_lc_hash_type hash_type, uint16_t mod_len, const uint8_t *mod, uint16_t exp_len, const uint8_t *exp, const uint8_t *em, uint8_t *msg, uint64_t op_cookie)
dao_lc_fc_enc_cipher
@ 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
@ DAO_LC_HASH_TYPE_GMAC
@ DAO_LC_HASH_TYPE_SHA3_CSHAKE256
@ DAO_LC_HASH_TYPE_NULL
@ 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_SHA3_KMAC128
@ DAO_LC_HASH_TYPE_CMAC
@ DAO_LC_HASH_TYPE_SHA2_SHA512
@ DAO_LC_HASH_TYPE_SM3
@ DAO_LC_HASH_TYPE_SHA3_SHA224
@ DAO_LC_HASH_TYPE_SHA3_CSHAKE128
@ DAO_LC_HASH_TYPE_MD5
@ DAO_LC_HASH_TYPE_SHA2_SHA384
@ DAO_LC_HASH_TYPE_SHA3_KMAC256
@ DAO_LC_HASH_TYPE_SHA1
@ DAO_LC_HASH_TYPE_SHA3_SHA512
int dao_liquid_crypto_pqc_enqueue(uint8_t dev_id, uint16_t qp_id, struct dao_lc_pqc_op *op, uint64_t op_cookie)
uint16_t dao_liquid_crypto_dequeue_burst(uint8_t dev_id, uint16_t qp_id, struct dao_lc_res *res, uint16_t nb_ops)
int dao_liquid_crypto_dev_caps_get(struct dao_lc_dev_caps *lc_caps)
dao_lc_random_type
@ DAO_LC_RANDOM_TYPE_HW
@ DAO_LC_RANDOM_TYPE_X9_17
#define DAO_LC_AES_MAX_KEY_ENC_KEY_LEN
dao_lc_cmd_event_type
@ 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_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, uint8_t *rs_outdata, uint64_t op_cookie)
int dao_liquid_crypto_init(void)
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
uint32_t total_len
struct dao_lc_buf * next
uint32_t frag_len
struct dao_lc_cmd_sess_event sess_event
struct dao_lc_feature_params::@19 rng
enum dao_liquid_crypto_ec_curve_type curve_id
struct dao_lc_feature_params::@20 ecc
struct dao_lc_feature_params::@17 sym
struct dao_lc_feature_params::@18 rsa
enum dao_lc_hash_type hash_type
struct dao_lc_feature_params::@21 rsa_oaep
enum dao_lc_fc_aes_key_len aes_kek_type
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]
struct dao_lc_pqc_op::@27::@29 keygen
enum dao_lc_pqc_op_type op_type
struct dao_lc_pqc_op::@27::@30 encap
const uint8_t * dec_key
const uint8_t * ctx
const uint8_t * signature
const uint8_t * enc_key
const uint8_t * pub_key
const uint8_t * priv_key
const uint8_t * msg
struct dao_lc_pqc_op::@27::@32 sign
const uint8_t * ciphertext
struct dao_lc_pqc_op::@27::@33 verify
struct dao_lc_pqc_op::@27::@31 decap
enum dao_lc_pqc_alg alg
uint16_t ecc_rs_out_len
union dao_cpt_res_s res
uint16_t data_out_len
uint16_t wrap_unwrap_key_len
enum dao_lc_fc_chain_order chain_order
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_sym_op_kmac_params kmac_params
struct dao_lc_buf * in_buffer
struct dao_lc_sym_op_cshake_params cshake_params
struct dao_lc_buf * out_buffer