blob: f8dade5136e6c92caf6e30a75b6b61dc217ebb34 [file] [log] [blame]
Bo Lv72d0e902023-01-02 14:27:34 +00001/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
2/*
3 * Copyright (c) 2019 Amlogic, Inc. All rights reserved.
4 */
5
6#ifndef _AML_MKL_H_
7#define _AML_MKL_H_
8
9#include <common.h>
10/**
11 * Key-Ladder parameters
12 */
13
14/* key ladder level */
15#define AML_KL_LEVEL_3 (3)
16#define AML_KL_LEVEL_4 (4)
17#define AML_KL_LEVEL_5 (5)
18#define AML_KL_LEVEL_6 (6)
19
20/* key flag */
21#define AML_KT_FLAG_NONE (0)
22#define AML_KT_FLAG_ENC_ONLY (1)
23#define AML_KT_FLAG_DEC_ONLY (2)
24#define AML_KT_FLAG_ENC_DEC (3)
25
26/* key algorithm */
27#define AML_KT_ALGO_AES (0)
28#define AML_KT_ALGO_TDES (1)
29#define AML_KT_ALGO_DES (2)
30#define AML_KT_ALGO_NDL (7)
31#define AML_KT_ALGO_ND (8)
32#define AML_KT_ALGO_CSA3 (9)
33#define AML_KT_ALGO_CSA2 (10)
34#define AML_KT_ALGO_HMAC (13)
35
36/* key user */
37#define AML_KT_USER_M2M_0 (0)
38#define AML_KT_USER_M2M_1 (1)
39#define AML_KT_USER_M2M_2 (2)
40#define AML_KT_USER_M2M_3 (3)
41#define AML_KT_USER_M2M_4 (4)
42#define AML_KT_USER_M2M_5 (5)
43#define AML_KT_USER_M2M_ANY (7)
44#define AML_KT_USER_TSD (8)
45#define AML_KT_USER_TSN (9)
46#define AML_KT_USER_TSE (10)
47
48/* key ladder algo */
49#define AML_KL_ALGO_TDES (0)
50#define AML_KL_ALGO_AES (1)
51
52/* key ladder mode */
53#define AML_KL_MODE_AML (0)
54#define AML_KL_MODE_ETSI (2)
55
56/* ETSI key ladder mrk_cfg_index */
57#define AML_KL_MRK_ETSI_0 (0)
58#define AML_KL_MRK_ETSI_1 (1)
59#define AML_KL_MRK_ETSI_2 (2)
60#define AML_KL_MRK_ETSI_3 (3)
61
62/* AML key ladder mrk_cfg_index */
63#define AML_KL_MRK_ACGK (0)
64#define AML_KL_MRK_ACUK (1)
65#define AML_KL_MRK_DVGK (2)
66#define AML_KL_MRK_DVUK (3)
67#define AML_KL_MRK_DGPK1 (4)
68#define AML_KL_MRK_DGPK2 (5)
69#define AML_KL_MRK_ACRK (6)
70
71/* ETSI key ladder kl_num (only for T5W) */
72#define AML_KL_NUM_0 (0)
73#define AML_KL_NUM_1 (1)
74#define AML_KL_NUM_2 (2)
75#define AML_KL_NUM_3 (3)
76#define AML_KL_NUM_4 (4)
77#define AML_KL_NUM_5 (5)
78#define AML_KL_NUM_6 (6)
79#define AML_KL_NUM_7 (7)
80#define AML_KL_NUM_8 (8)
81#define AML_KL_NUM_9 (9)
82#define AML_KL_NUM_10 (10)
83
84/* ETSI key ladder func_id */
85#define AML_KL_FUNC_ID_0 (0)
86#define AML_KL_FUNC_ID_6 (6)
87#define AML_KL_FUNC_ID_7 (7)
88#define AML_KL_FUNC_ID_8 (8)
89#define AML_KL_FUNC_ID_9 (9)
90
91/* AML key ladder func_id */
92#define AML_KL_FUNC_AES_0 (0)
93#define AML_KL_FUNC_AES_1 (1)
94#define AML_KL_FUNC_AES_2 (2)
95#define AML_KL_FUNC_AES_3 (3)
96#define AML_KL_FUNC_TDES2_0 (4)
97#define AML_KL_FUNC_TDES2_1 (5)
98#define AML_KL_FUNC_HMAC_L (6)
99#define AML_KL_FUNC_HMAC_H (7)
100#define AML_KL_FUNC_AES256_L (8)
101#define AML_KL_FUNC_AES256_H (9)
102
103struct amlkl_usage {
104 __u32 crypto;
105 __u32 algo;
106 __u32 uid;
107};
108
109struct amlkl_params {
110 __u32 kt_handle;
111 __u8 levels;
112 struct amlkl_usage usage;
113 __u8 module_id;
114 __u8 kl_algo;
115 __u8 kl_mode;
116 __u8 mrk_cfg_index;
117 __u8 kl_num;
118 __u8 func_id;
119 __u8 eks[6][16];
120 __u8 reserved[16];
121};
122
123int aml_mkl_run(struct amlkl_params *param);
124#endif
125