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