blob: c99d968b3ee9332af76baed3a61b9a7250641803 [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_KT_H_
7#define _AML_KT_H_
8
9#include <linux/types.h>
10
11/* key user */
12#define AML_KT_USER_M2M_0 (0)
13#define AML_KT_USER_M2M_1 (1)
14#define AML_KT_USER_M2M_2 (2)
15#define AML_KT_USER_M2M_3 (3)
16#define AML_KT_USER_M2M_4 (4)
17#define AML_KT_USER_M2M_5 (5)
18#define AML_KT_USER_M2M_ANY (7)
19#define AML_KT_USER_TSD (8)
20#define AML_KT_USER_TSN (9)
21#define AML_KT_USER_TSE (10)
22
23/* key algorithm */
24#define AML_KT_ALGO_AES (0)
25#define AML_KT_ALGO_TDES (1)
26#define AML_KT_ALGO_DES (2)
27#define AML_KT_ALGO_S17 (3)
28#define AML_KT_ALGO_SM4 (4)
29#define AML_KT_ALGO_NDL (7)
30#define AML_KT_ALGO_ND (8)
31#define AML_KT_ALGO_CSA3 (9)
32#define AML_KT_ALGO_CSA2 (10)
33#define AML_KT_ALGO_HMAC (13)
34
35/* key flag */
36#define AML_KT_FLAG_NONE (0)
37#define AML_KT_FLAG_ENC_ONLY (1)
38#define AML_KT_FLAG_DEC_ONLY (2)
39#define AML_KT_FLAG_ENC_DEC (3)
40
41/* key source */
42#define AML_KT_SRC_REE_CERT (15)
43#define AML_KT_SRC_NSK (14)
44#define AML_KT_SRC_MSR3 (13)
45#define AML_KT_SRC_VO (12)
46#define AML_KT_SRC_SPKL (11)
47#define AML_KT_SRC_SPHOST (10)
48#define AML_KT_SRC_REEKL_MSR2 (4)
49#define AML_KT_SRC_REEKL_ETSI (3)
50#define AML_KT_SRC_REEKL_NAGRA (2)
51#define AML_KT_SRC_REEKL_AML (1)
52#define AML_KT_SRC_REE_HOST (0)
53
54#define AML_KT_ALLOC_FLAG_IV (1)
55#define AML_KT_ALLOC_FLAG_HOST (2)
56#define AML_KT_ALLOC_FLAG_NSK_M2M (3)
57
58struct amlkt_alloc_param {
59 __u32 flag;
60 __u32 handle;
61};
62
63struct amlkt_cfg_param {
64 __u32 handle;
65 __u32 key_userid;
66 __u32 key_algo;
67 __u32 key_flag;
68 __u32 key_source;
69 __u32 ext_value;
70};
71
72struct amlkt_set_key_param {
73 __u32 handle;
74 __u8 key[32];
75 __u32 key_len;
76};
77
78#define IOCTL_MAGIC 'a'
79#define AML_KT_ALLOC _IOWR(IOCTL_MAGIC, 0, struct amlkt_alloc_param)
80#define AML_KT_CONFIG _IOW(IOCTL_MAGIC, 1, struct amlkt_cfg_param)
81#define AML_KT_SET _IOWR(IOCTL_MAGIC, 2, struct amlkt_set_key_param)
82#define AML_KT_HW_SET _IOWR(IOCTL_MAGIC, 3, __u32)
83#define AML_KT_FREE _IOW(IOCTL_MAGIC, 4, __u32)
84#define AML_KT_INVALIDATE _IOW(IOCTL_MAGIC, 5, __u32)
85
86#endif
87