blob: d0556a49e37f5dc7ff2b7fc6891ac37683f6f982 [file] [log] [blame]
chuangcheng peng021cfea2023-09-12 18:37:42 +08001/* 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 <linux/types.h>
10
11/**
12 * Key-Ladder parameters
13 */
14
15/* key ladder level */
16#define AML_KL_LEVEL_3 (3)
17#define AML_KL_LEVEL_4 (4)
18#define AML_KL_LEVEL_5 (5)
19#define AML_KL_LEVEL_6 (6)
20
21#define MSR_KL_LEVEL_1 (1)
22#define MSR_KL_LEVEL_2 (2)
23#define MSR_KL_LEVEL_3 (3)
24
25/* key ladder algo */
26#define AML_KL_ALGO_TDES (0)
27#define AML_KL_ALGO_AES (1)
28
29/* key ladder mode */
30#define AML_KL_MODE_AML (0)
31#define AML_KL_MODE_ETSI (2)
32#define AML_KL_MODE_MSR (3)
33
34/* ETSI key ladder mrk_cfg_index */
35#define AML_KL_MRK_ETSI_0 (0)
36#define AML_KL_MRK_ETSI_1 (1)
37#define AML_KL_MRK_ETSI_2 (2)
38#define AML_KL_MRK_ETSI_3 (3)
39
40/* AML key ladder mrk_cfg_index */
41#define AML_KL_MRK_ACGK (0)
42#define AML_KL_MRK_ACUK (1)
43#define AML_KL_MRK_DVGK (2)
44#define AML_KL_MRK_DVUK (3)
45#define AML_KL_MRK_DGPK1 (4)
46#define AML_KL_MRK_DGPK2 (5)
47#define AML_KL_MRK_ACRK (6)
48
49/* T5W ETSI key ladder kl_num */
50#define AML_KL_NUM_0 (0)
51#define AML_KL_NUM_1 (1)
52#define AML_KL_NUM_2 (2)
53#define AML_KL_NUM_3 (3)
54#define AML_KL_NUM_4 (4)
55#define AML_KL_NUM_5 (5)
56#define AML_KL_NUM_6 (6)
57#define AML_KL_NUM_7 (7)
58#define AML_KL_NUM_8 (8)
59#define AML_KL_NUM_9 (9)
60#define AML_KL_NUM_10 (10)
61
62/* ETSI key ladder func_id */
63#define AML_KL_FUNC_ID_0 (0)
64#define AML_KL_FUNC_ID_6 (6)
65#define AML_KL_FUNC_ID_7 (7)
66#define AML_KL_FUNC_ID_8 (8)
67#define AML_KL_FUNC_ID_9 (9)
68
69/* MSR key ladder func_id */
70#define MSR_KL_FUNC_ID_CWUK (1)
71#define MSR_KL_FUNC_ID_CPUK (2)
72#define MSR_KL_FUNC_ID_SSUK (3)
73#define MSR_KL_FUNC_ID_CAUK (4)
74#define MSR_KL_FUNC_ID_CCCK (6)
75#define MSR_KL_FUNC_ID_TAUK (7)
76
77/* AML key ladder func_id */
78#define AML_KL_FUNC_AES_0 (0)
79#define AML_KL_FUNC_AES_1 (1)
80#define AML_KL_FUNC_AES_2 (2)
81#define AML_KL_FUNC_AES_3 (3)
82#define AML_KL_FUNC_TDES2_0 (4)
83#define AML_KL_FUNC_TDES2_1 (5)
84#define AML_KL_FUNC_HMAC_L (6)
85#define AML_KL_FUNC_HMAC_H (7)
86#define AML_KL_FUNC_AES256_L (8)
87#define AML_KL_FUNC_AES256_H (9)
88
89struct amlkl_usage {
90 __u32 crypto;
91 __u32 algo;
92 __u32 uid;
93};
94
95struct amlkl_params {
96 __u32 kt_handle;
97 __u8 levels;
98 __u8 module_id;
99 __u8 kl_algo;
100 __u8 kl_mode;
101 struct amlkl_usage usage;
102 __u8 mrk_cfg_index;
103 __u8 kl_num;
104 __u8 func_id;
105 __u8 reserved1;
106 __u8 eks[6][16];
107 __u8 reserved[16];
108};
109
110#define AML_MKL_IOCTL_RUN _IOW('L', 1, struct amlkl_params)
111
112#endif