1 /* SPDX-License-Identifier: BSD-2-Clause */
2 /*
3  * Copyright (c) 2015, Linaro Limited
4  */
5 
6 #ifndef TA_CRYPTO_PERF_H
7 #define TA_CRYPTO_PERF_H
8 
9 #define TA_CRYPTO_PERF_UUID { 0x02a42f43, 0xd8b7, 0x4a57, \
10 	{ 0xaa, 0x4d, 0x87, 0xbd, 0x9b, 0x55, 0x87, 0xcb } }
11 
12 /*
13  * Commands implemented by the TA
14  */
15 
16 #define TA_CRYPTO_PERF_CMD_CIPHER_PREPARE_KEY			0
17 #define TA_CRYPTO_PERF_CMD_CIPHER_PROCESS			1
18 #define TA_CRYPTO_PERF_CMD_CIPHER_PROCESS_SDP			2
19 #define TA_CRYPTO_PERF_CMD_HASH_PREPARE_OP			3
20 #define TA_CRYPTO_PERF_CMD_HASH_PROCESS				4
21 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_OBJ			5
22 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_HASH			6
23 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_KEYPAIR			7
24 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_ENC_SIGN		8
25 #define TA_CRYPTO_PERF_CMD_ASYM_PREPARE_ATTRS			9
26 #define TA_CRYPTO_PERF_CMD_ASYM_PROCESS_GEN_KEYPAIR		10
27 #define TA_CRYPTO_PERF_CMD_ASYM_PROCESS				11
28 #define TA_CRYPTO_PERF_CMD_ASYM_FREE_ATTRS			12
29 
30 /*
31  * Supported AES modes of operation
32  */
33 
34 #define TA_AES_ECB	0
35 #define TA_AES_CBC	1
36 #define TA_AES_CTR	2
37 #define TA_AES_XTS	3
38 #define TA_AES_GCM	4
39 #define TA_SM4_ECB	5
40 #define TA_SM4_CBC	6
41 #define TA_SM4_CTR	7
42 #define TA_SM4_XTS	8
43 
44 /*
45  * AES key sizes
46  */
47 #define AES_128	128
48 #define AES_192	192
49 #define AES_256	256
50 
51 /*
52  * Supported hash algorithms
53  */
54 
55 #define TA_SHA_SHA1	0
56 #define TA_SHA_SHA224	1
57 #define TA_SHA_SHA256	2
58 #define TA_SHA_SHA384	3
59 #define TA_SHA_SHA512	4
60 #define TA_SM3		5
61 #define TA_HMAC_SHA1	6
62 #define TA_HMAC_SHA224	7
63 #define TA_HMAC_SHA256	8
64 #define TA_HMAC_SHA384	9
65 #define TA_HMAC_SHA512	10
66 #define TA_HMAC_SM3	11
67 
68 /*
69  * Asymmetric cryptographic algorithms
70  */
71 #define PKCS_V1_5_MIN		11
72 #define BITS_TO_BYTES(len)	(((len) + 7) / 8)
73 #define OAEP_HASH_LEN(hsz)	((hsz) * 2)
74 #define OAEP_OTHER_LEN		2
75 #define PSS_OTHER_LEN		2
76 
77 #define DERCODE_SHA1_LEN 15
78 #define DERCODE_SHA_LEN 19
79 #define SHA1_LEN 20
80 #define SHA224_LEN 28
81 #define SHA256_LEN 32
82 #define SHA384_LEN 48
83 #define SHA512_LEN 64
84 
85 #define WIDTH_BITS_25519 256
86 
87 #define ECC_CURVE_192 192
88 #define ECC_CURVE_224 224
89 #define ECC_CURVE_256 256
90 #define ECC_CURVE_384 384
91 #define ECC_CURVE_521 521
92 
93 #define TEE_MAX_OUT_SIZE 4096
94 
95 #define DH_MAX_SIZE 4096
96 #define DH_G_SIZE 1
97 
98 enum symm_cipher {
99 	AES = 0,
100 	SM4 = 1,
101 };
102 
103 enum symm_mode {
104 	ECB = 0,
105 	CBC = 1,
106 	CTR = 2,
107 	XTS = 3,
108 	GCM = 4,
109 };
110 
111 enum asym_algorithm {
112 	ALGO_DH = 1,
113 	ALGO_RSA = 2,
114 	ALGO_ECDSA = 3,
115 	ALGO_ECDH = 4,
116 	ALGO_X25519 = 5,
117 	ALGO_SM2 = 6,
118 };
119 
120 enum asym_cipher_mode {
121 	MODE_ENCRYPT = 0,
122 	MODE_DECRYPT = 1,
123 	MODE_SIGN = 2,
124 	MODE_VERIFY = 3,
125 	MODE_GENKEYPAIR = 4,
126 };
127 
128 enum rsa_mode {
129 	RSA_NOPAD = 0,
130 	RSAES_PKCS1_V1_5 = 1,
131 	RSAES_PKCS1_OAEP_SHA1 = 2,
132 	RSAES_PKCS1_OAEP_SHA224 = 3,
133 	RSAES_PKCS1_OAEP_SHA256 = 4,
134 	RSAES_PKCS1_OAEP_SHA384 = 5,
135 	RSAES_PKCS1_OAEP_SHA512 = 6,
136 	RSASSA_PKCS1_V1_5_SHA1 = 7,
137 	RSASSA_PKCS1_V1_5_SHA224 = 8,
138 	RSASSA_PKCS1_V1_5_SHA256 = 9,
139 	RSASSA_PKCS1_V1_5_SHA384 = 10,
140 	RSASSA_PKCS1_V1_5_SHA512 = 11,
141 	RSASSA_PKCS1_PSS_MGF1_SHA1 = 12,
142 	RSASSA_PKCS1_PSS_MGF1_SHA224 = 13,
143 	RSASSA_PKCS1_PSS_MGF1_SHA256 = 14,
144 	RSASSA_PKCS1_PSS_MGF1_SHA384 = 15,
145 	RSASSA_PKCS1_PSS_MGF1_SHA512 = 16,
146 };
147 
148 #endif /* TA_CRYPTO_PERF_H */
149