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
18#define DAO_LC_VERSION "25.06.3"
20#define DAO_CRYPTO_VERSION_LEN 32
22#define DAO_CRYPTO_MAX_NB_DEV 1
24#define DAO_CMD_QP_IDX_INVALID 0xFFFF
26#define DAO_LC_SESS_ID_INVALID 0
28#define DAO_LC_SESS_ID_HASH 1
30#define DAO_LC_MAX_DIGEST_LEN 64
31
35struct dao_lc_buf {
37 void *data;
39 uint32_t total_len;
41 uint32_t frag_len;
44};
45
54 uint64_t op_cookie;
56 uint64_t sess_id;
70 uint32_t cipher_offset;
72 uint32_t auth_offset;
79 uint32_t cipher_len;
81 uint32_t auth_len;
83 uint8_t *cipher_iv;
85 uint8_t *auth_iv;
87 uint8_t *aad;
89 uint8_t aad_len;
91 uint8_t *digest;
93 bool encrypt;
94};
95
115
152
163 uint64_t compcode : 7;
165 uint64_t doneint : 1;
170 uint64_t uc_compcode : 8;
172 uint64_t rlen : 16;
174 uint64_t spi : 32;
175
177 uint64_t esn;
178 } cn10k;
179
186 uint64_t compcode : 8;
191 uint64_t uc_compcode : 8;
193 uint64_t doneint : 1;
195 uint64_t reserved_17_63 : 47;
196
199 } cn9k;
200
202 uint64_t u64[2];
203};
204
216
224 uint8_t dev_id;
226 uint16_t nb_qp;
232 uint16_t cmd_qp_idx;
233};
234
262
272 union {
274 struct {
276 uint16_t data_out_len;
277 } rsa;
279 uint64_t u64;
280 };
282 uint64_t op_cookie;
283};
284
294
307
315 uint64_t sess_id;
317 uint64_t sess_cookie;
318};
319
327 uint8_t event_type;
328 union {
331 };
332};
333
345
355
367
395
405
415
439
450 uint64_t iv_source : 1;
455 uint64_t aes_key_len : 2;
457 uint64_t rsvd_59 : 1;
462 uint64_t enc_cipher : 4;
469 uint64_t auth_input_type : 1;
476 uint64_t auth_key_src : 1;
478 uint64_t rsvd_50_51 : 2;
483 uint64_t hash_type : 4;
485 uint64_t mac_len : 8;
487 uint64_t rsvd_16_39 : 24;
489 uint64_t hmac_key_sz : 16;
491 uint8_t encr_key[32];
493 uint8_t encr_iv[16];
495 uint8_t ipad[64];
500 uint8_t opad[64];
501};
502
517 struct {
527 uint16_t iv_len;
529 uint16_t aad_len;
531 uint16_t digest_len;
543 struct {
545 uint16_t mod_len;
547 uint16_t exp_len;
549 uint16_t msg_len;
558 bool cmd_qp;
559};
560
568 uint16_t iv_len;
569 union {
572 };
573};
574
590
602
616
633
649
670int dao_liquid_crypto_qp_configure(uint8_t dev_id, uint16_t qp_id, struct dao_lc_qp_conf *conf);
671
689int dao_liquid_crypto_dev_start(uint8_t dev_id);
690
703int dao_liquid_crypto_dev_stop(uint8_t dev_id);
704
721
741int dao_liquid_crypto_enqueue_op_passthrough(uint8_t dev_id, uint16_t qp_id, uint64_t op_cookie);
742
780int dao_liquid_crypto_enq_op_pkcs1v15enc(uint8_t dev_id, uint16_t qp_id,
781 enum dao_liquid_crypto_rsa_key_type key_type,
782 uint16_t mod_len, uint16_t exp_len, uint16_t msg_len,
783 uint8_t *mod, uint8_t *exp, uint8_t *msg, uint8_t *em,
784 uint64_t op_cookie);
785
822int dao_liquid_crypto_enq_op_pkcs1v15dec(uint8_t dev_id, uint16_t qp_id,
823 enum dao_liquid_crypto_rsa_key_type key_type,
824 uint16_t mod_len, uint16_t exp_len, uint8_t *mod,
825 uint8_t *exp, uint8_t *em, uint8_t *msg,
826 uint64_t op_cookie);
827
871int dao_liquid_crypto_enq_op_pkcs1v15enc_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len,
872 uint16_t msg_len, uint8_t *q, uint8_t *dQ, uint8_t *p,
873 uint8_t *dP, uint8_t *qInv, uint8_t *msg, uint8_t *em,
874 uint64_t op_cookie);
875
918int dao_liquid_crypto_enq_op_pkcs1v15dec_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len,
919 uint8_t *q, uint8_t *dQ, uint8_t *p, uint8_t *dP,
920 uint8_t *qInv, uint8_t *em, uint8_t *msg,
921 uint64_t op_cookie);
922
949uint16_t dao_liquid_crypto_sym_enqueue_burst(uint8_t dev_id, uint16_t qp_id,
950 struct dao_lc_sym_op *op, uint16_t nb_ops);
951
974uint16_t dao_liquid_crypto_dequeue_burst(uint8_t dev_id, uint16_t qp_id, struct dao_lc_res *res,
975 uint16_t nb_ops);
976
996int dao_liquid_crypto_sym_sess_create(uint8_t dev_id, const struct dao_lc_sym_ctx *ctx,
997 uint64_t sess_cookie);
998
1017int dao_liquid_crypto_sym_sess_destroy(uint8_t dev_id, uint64_t sess_id, uint64_t sess_cookie);
1018
1038uint16_t dao_liquid_crypto_cmd_event_dequeue(uint8_t dev_id, struct dao_lc_cmd_event *events,
1039 uint16_t nb_events);
1040
1041#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, uint8_t *q, uint8_t *dQ, uint8_t *p, uint8_t *dP, uint8_t *qInv, uint8_t *msg, uint8_t *em, uint64_t op_cookie)
int dao_liquid_crypto_fini(void)
int dao_liquid_crypto_info_get(struct dao_lc_info *info)
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, uint8_t *mod, uint8_t *exp, uint8_t *em, uint8_t *msg, uint64_t op_cookie)
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_FC
dao_lc_fc_iv_src
@ DAO_LC_FC_IV_SRC_CTX
@ DAO_LC_FC_IV_SRC_OP
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_dev_destroy(uint8_t dev_id)
dao_uc_comp_code
@ DAO_UC_ERR_GC_CIPHER_UNSUPPORTED
@ DAO_UC_ERR_GC_ICV_MISCOMPARE
@ DAO_UC_RSA_MOD_LEN_INVALID
@ DAO_UC_RSA_MOD_LEN_NOT_EVEN
@ DAO_UC_SUCCESS
@ DAO_UC_RSA_PKCS_DEC_INCORRECT
@ DAO_UC_ERR_GC_CTX_LEN_INVALID
@ DAO_UC_ERR_GC_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_ERR_GC_AUTH_UNSUPPORTED
int dao_liquid_crypto_dev_start(uint8_t dev_id)
int dao_liquid_crypto_enq_op_pkcs1v15dec_crt(uint8_t dev_id, uint16_t qp_id, uint16_t mod_len, uint8_t *q, uint8_t *dQ, uint8_t *p, uint8_t *dP, uint8_t *qInv, uint8_t *em, uint8_t *msg, uint64_t op_cookie)
int dao_liquid_crypto_sym_sess_destroy(uint8_t dev_id, uint64_t sess_id, uint64_t sess_cookie)
#define DAO_CRYPTO_VERSION_LEN
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, uint8_t *mod, uint8_t *exp, uint8_t *msg, uint8_t *em, 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)
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_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)
dao_lc_fc_hash_type
@ DAO_LC_FC_HASH_TYPE_SHA2_SHA384
@ DAO_LC_FC_HASH_TYPE_MD5
@ DAO_LC_FC_HASH_TYPE_SHA2_SHA256
@ DAO_LC_FC_HASH_TYPE_SHA2_SHA224
@ DAO_LC_FC_HASH_TYPE_POLY1305
@ DAO_LC_FC_HASH_TYPE_SHA1
@ DAO_LC_FC_HASH_TYPE_SHA2_SHA512
@ DAO_LC_FC_HASH_TYPE_NULL
@ DAO_LC_FC_HASH_TYPE_GMAC
int dao_liquid_crypto_init(void)
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
struct dao_lc_buf * next
uint32_t frag_len
struct dao_lc_cmd_sess_event sess_event
struct dao_lc_feature_params::@6 rsa
struct dao_lc_feature_params::@5 sym
uint16_t nb_qp[DAO_CRYPTO_MAX_NB_DEV]
char version[DAO_CRYPTO_VERSION_LEN]
union dao_cpt_res_s res
uint16_t data_out_len
struct dao_lc_sym_fc_ctx fc
enum dao_lc_sym_opcode opcode
struct dao_lc_buf * in_buffer
struct dao_lc_buf * out_buffer