xref: /rk3399_ARM-atf/include/drivers/nxp/crypto/caam/jobdesc.h (revision 87311b4c16730b884c7e4ff01e3faea83f2731be)
1*050a99a6SPankaj Gupta /*
2*050a99a6SPankaj Gupta  * Copyright 2017-2021 NXP
3*050a99a6SPankaj Gupta  *
4*050a99a6SPankaj Gupta  * SPDX-License-Identifier: BSD-3-Clause
5*050a99a6SPankaj Gupta  *
6*050a99a6SPankaj Gupta  */
7*050a99a6SPankaj Gupta 
8*050a99a6SPankaj Gupta #ifndef __JOBDESC_H
9*050a99a6SPankaj Gupta #define __JOBDESC_H
10*050a99a6SPankaj Gupta 
11*050a99a6SPankaj Gupta #include <rsa.h>
12*050a99a6SPankaj Gupta 
13*050a99a6SPankaj Gupta #define DESC_LEN_MASK		0x7f
14*050a99a6SPankaj Gupta #define DESC_START_SHIFT	16
15*050a99a6SPankaj Gupta 
16*050a99a6SPankaj Gupta #define KEY_BLOB_SIZE 32
17*050a99a6SPankaj Gupta #define MAC_SIZE 16
18*050a99a6SPankaj Gupta 
19*050a99a6SPankaj Gupta #define KEY_IDNFR_SZ_BYTES 16
20*050a99a6SPankaj Gupta #define CLASS_SHIFT 25
21*050a99a6SPankaj Gupta #define CLASS_2	(0x02 << CLASS_SHIFT)
22*050a99a6SPankaj Gupta 
23*050a99a6SPankaj Gupta #define CMD_SHIFT		27
24*050a99a6SPankaj Gupta #define CMD_OPERATION		(U(0x10) << CMD_SHIFT)
25*050a99a6SPankaj Gupta 
26*050a99a6SPankaj Gupta #define OP_TYPE_SHIFT		24
27*050a99a6SPankaj Gupta #define OP_TYPE_ENCAP_PROTOCOL	(0x07 << OP_TYPE_SHIFT)
28*050a99a6SPankaj Gupta 
29*050a99a6SPankaj Gupta /* Assuming OP_TYPE = OP_TYPE_UNI_PROTOCOL */
30*050a99a6SPankaj Gupta #define OP_PCLID_SHIFT		16
31*050a99a6SPankaj Gupta #define OP_PCLID_BLOB		(0x0d << OP_PCLID_SHIFT)
32*050a99a6SPankaj Gupta 
33*050a99a6SPankaj Gupta #define BLOB_PROTO_INFO		 0x00000002
34*050a99a6SPankaj Gupta 
35*050a99a6SPankaj Gupta uint32_t desc_length(uint32_t *desc);
36*050a99a6SPankaj Gupta 
37*050a99a6SPankaj Gupta int cnstr_rng_jobdesc(uint32_t *desc, uint32_t state_handle,
38*050a99a6SPankaj Gupta 		      uint32_t *add_inp, uint32_t add_ip_len,
39*050a99a6SPankaj Gupta 		      uint8_t *out_data, uint32_t len);
40*050a99a6SPankaj Gupta 
41*050a99a6SPankaj Gupta int cnstr_rng_instantiate_jobdesc(uint32_t *desc);
42*050a99a6SPankaj Gupta 
43*050a99a6SPankaj Gupta /* Construct descriptor to generate hw key blob */
44*050a99a6SPankaj Gupta int cnstr_hw_encap_blob_jobdesc(uint32_t *desc,
45*050a99a6SPankaj Gupta 				uint8_t *key_idnfr, uint32_t key_sz,
46*050a99a6SPankaj Gupta 				uint32_t key_class, uint8_t *plain_txt,
47*050a99a6SPankaj Gupta 				uint32_t in_sz, uint8_t *enc_blob,
48*050a99a6SPankaj Gupta 				uint32_t out_sz, uint32_t operation);
49*050a99a6SPankaj Gupta 
50*050a99a6SPankaj Gupta void cnstr_hash_jobdesc(uint32_t *desc, uint8_t *msg, uint32_t msgsz,
51*050a99a6SPankaj Gupta 			uint8_t *digest);
52*050a99a6SPankaj Gupta 
53*050a99a6SPankaj Gupta void cnstr_jobdesc_pkha_rsaexp(uint32_t *desc,
54*050a99a6SPankaj Gupta 			       struct pk_in_params *pkin, uint8_t *out,
55*050a99a6SPankaj Gupta 			       uint32_t out_siz);
56*050a99a6SPankaj Gupta #endif
57