• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2  ****************************************************************************
3  ***
4  ***   This header was automatically generated from a Linux kernel header
5  ***   of the same name, to make information necessary for userspace to
6  ***   call into the kernel available to libc.  It contains only constants,
7  ***   structures, and macros generated from the original header, and thus,
8  ***   contains no copyrightable information.
9  ***
10  ***   To edit the content of this header, modify the corresponding
11  ***   source file (e.g. under external/kernel-headers/original/) then
12  ***   run bionic/libc/kernel/tools/update_all.py
13  ***
14  ***   Any manual change here will be lost the next time this script will
15  ***   be run. You've been warned!
16  ***
17  ****************************************************************************
18  ****************************************************************************/
19 #ifndef _VIRTIO_CRYPTO_H
20 #define _VIRTIO_CRYPTO_H
21 #include <linux/types.h>
22 #include <linux/virtio_types.h>
23 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24 #include <linux/virtio_ids.h>
25 #include <linux/virtio_config.h>
26 #define VIRTIO_CRYPTO_SERVICE_CIPHER 0
27 #define VIRTIO_CRYPTO_SERVICE_HASH 1
28 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29 #define VIRTIO_CRYPTO_SERVICE_MAC 2
30 #define VIRTIO_CRYPTO_SERVICE_AEAD 3
31 #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
32 struct virtio_crypto_ctrl_header {
33 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
35 #define VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x03)
36 #define VIRTIO_CRYPTO_HASH_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x02)
37 #define VIRTIO_CRYPTO_HASH_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x03)
38 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39 #define VIRTIO_CRYPTO_MAC_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x02)
40 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
41 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
42 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
43 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44   __le32 opcode;
45   __le32 algo;
46   __le32 flag;
47   __le32 queue_id;
48 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49 };
50 struct virtio_crypto_cipher_session_para {
51 #define VIRTIO_CRYPTO_NO_CIPHER 0
52 #define VIRTIO_CRYPTO_CIPHER_ARC4 1
53 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 #define VIRTIO_CRYPTO_CIPHER_AES_ECB 2
55 #define VIRTIO_CRYPTO_CIPHER_AES_CBC 3
56 #define VIRTIO_CRYPTO_CIPHER_AES_CTR 4
57 #define VIRTIO_CRYPTO_CIPHER_DES_ECB 5
58 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59 #define VIRTIO_CRYPTO_CIPHER_DES_CBC 6
60 #define VIRTIO_CRYPTO_CIPHER_3DES_ECB 7
61 #define VIRTIO_CRYPTO_CIPHER_3DES_CBC 8
62 #define VIRTIO_CRYPTO_CIPHER_3DES_CTR 9
63 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64 #define VIRTIO_CRYPTO_CIPHER_KASUMI_F8 10
65 #define VIRTIO_CRYPTO_CIPHER_SNOW3G_UEA2 11
66 #define VIRTIO_CRYPTO_CIPHER_AES_F8 12
67 #define VIRTIO_CRYPTO_CIPHER_AES_XTS 13
68 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69 #define VIRTIO_CRYPTO_CIPHER_ZUC_EEA3 14
70   __le32 algo;
71   __le32 keylen;
72 #define VIRTIO_CRYPTO_OP_ENCRYPT 1
73 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74 #define VIRTIO_CRYPTO_OP_DECRYPT 2
75   __le32 op;
76   __le32 padding;
77 };
78 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79 struct virtio_crypto_session_input {
80   __le64 session_id;
81   __le32 status;
82   __le32 padding;
83 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84 };
85 struct virtio_crypto_cipher_session_req {
86   struct virtio_crypto_cipher_session_para para;
87   __u8 padding[32];
88 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89 };
90 struct virtio_crypto_hash_session_para {
91 #define VIRTIO_CRYPTO_NO_HASH 0
92 #define VIRTIO_CRYPTO_HASH_MD5 1
93 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94 #define VIRTIO_CRYPTO_HASH_SHA1 2
95 #define VIRTIO_CRYPTO_HASH_SHA_224 3
96 #define VIRTIO_CRYPTO_HASH_SHA_256 4
97 #define VIRTIO_CRYPTO_HASH_SHA_384 5
98 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99 #define VIRTIO_CRYPTO_HASH_SHA_512 6
100 #define VIRTIO_CRYPTO_HASH_SHA3_224 7
101 #define VIRTIO_CRYPTO_HASH_SHA3_256 8
102 #define VIRTIO_CRYPTO_HASH_SHA3_384 9
103 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104 #define VIRTIO_CRYPTO_HASH_SHA3_512 10
105 #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE128 11
106 #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE256 12
107   __le32 algo;
108 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109   __le32 hash_result_len;
110   __u8 padding[8];
111 };
112 struct virtio_crypto_hash_create_session_req {
113 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114   struct virtio_crypto_hash_session_para para;
115   __u8 padding[40];
116 };
117 struct virtio_crypto_mac_session_para {
118 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119 #define VIRTIO_CRYPTO_NO_MAC 0
120 #define VIRTIO_CRYPTO_MAC_HMAC_MD5 1
121 #define VIRTIO_CRYPTO_MAC_HMAC_SHA1 2
122 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_224 3
123 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_256 4
125 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_384 5
126 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_512 6
127 #define VIRTIO_CRYPTO_MAC_CMAC_3DES 25
128 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129 #define VIRTIO_CRYPTO_MAC_CMAC_AES 26
130 #define VIRTIO_CRYPTO_MAC_KASUMI_F9 27
131 #define VIRTIO_CRYPTO_MAC_SNOW3G_UIA2 28
132 #define VIRTIO_CRYPTO_MAC_GMAC_AES 41
133 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134 #define VIRTIO_CRYPTO_MAC_GMAC_TWOFISH 42
135 #define VIRTIO_CRYPTO_MAC_CBCMAC_AES 49
136 #define VIRTIO_CRYPTO_MAC_CBCMAC_KASUMI_F9 50
137 #define VIRTIO_CRYPTO_MAC_XCBC_AES 53
138 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139   __le32 algo;
140   __le32 hash_result_len;
141   __le32 auth_key_len;
142   __le32 padding;
143 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144 };
145 struct virtio_crypto_mac_create_session_req {
146   struct virtio_crypto_mac_session_para para;
147   __u8 padding[40];
148 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149 };
150 struct virtio_crypto_aead_session_para {
151 #define VIRTIO_CRYPTO_NO_AEAD 0
152 #define VIRTIO_CRYPTO_AEAD_GCM 1
153 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154 #define VIRTIO_CRYPTO_AEAD_CCM 2
155 #define VIRTIO_CRYPTO_AEAD_CHACHA20_POLY1305 3
156   __le32 algo;
157   __le32 key_len;
158 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159   __le32 hash_result_len;
160   __le32 aad_len;
161   __le32 op;
162   __le32 padding;
163 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164 };
165 struct virtio_crypto_aead_create_session_req {
166   struct virtio_crypto_aead_session_para para;
167   __u8 padding[32];
168 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169 };
170 struct virtio_crypto_alg_chain_session_para {
171 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
172 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
173 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174   __le32 alg_chain_order;
175 #define VIRTIO_CRYPTO_SYM_HASH_MODE_PLAIN 1
176 #define VIRTIO_CRYPTO_SYM_HASH_MODE_AUTH 2
177 #define VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED 3
178 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179   __le32 hash_mode;
180   struct virtio_crypto_cipher_session_para cipher_param;
181   union {
182     struct virtio_crypto_hash_session_para hash_param;
183 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184     struct virtio_crypto_mac_session_para mac_param;
185     __u8 padding[16];
186   } u;
187   __le32 aad_len;
188 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189   __le32 padding;
190 };
191 struct virtio_crypto_alg_chain_session_req {
192   struct virtio_crypto_alg_chain_session_para para;
193 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194 };
195 struct virtio_crypto_sym_create_session_req {
196   union {
197     struct virtio_crypto_cipher_session_req cipher;
198 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199     struct virtio_crypto_alg_chain_session_req chain;
200     __u8 padding[48];
201   } u;
202 #define VIRTIO_CRYPTO_SYM_OP_NONE 0
203 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204 #define VIRTIO_CRYPTO_SYM_OP_CIPHER 1
205 #define VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING 2
206   __le32 op_type;
207   __le32 padding;
208 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209 };
210 struct virtio_crypto_destroy_session_req {
211   __le64 session_id;
212   __u8 padding[48];
213 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214 };
215 struct virtio_crypto_op_ctrl_req {
216   struct virtio_crypto_ctrl_header header;
217   union {
218 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219     struct virtio_crypto_sym_create_session_req sym_create_session;
220     struct virtio_crypto_hash_create_session_req hash_create_session;
221     struct virtio_crypto_mac_create_session_req mac_create_session;
222     struct virtio_crypto_aead_create_session_req aead_create_session;
223 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224     struct virtio_crypto_destroy_session_req destroy_session;
225     __u8 padding[56];
226   } u;
227 };
228 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
229 struct virtio_crypto_op_header {
230 #define VIRTIO_CRYPTO_CIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x00)
231 #define VIRTIO_CRYPTO_CIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x01)
232 #define VIRTIO_CRYPTO_HASH VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x00)
233 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
234 #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
235 #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
236 #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
237   __le32 opcode;
238 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
239   __le32 algo;
240   __le64 session_id;
241   __le32 flag;
242   __le32 padding;
243 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
244 };
245 struct virtio_crypto_cipher_para {
246   __le32 iv_len;
247   __le32 src_data_len;
248 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
249   __le32 dst_data_len;
250   __le32 padding;
251 };
252 struct virtio_crypto_hash_para {
253 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
254   __le32 src_data_len;
255   __le32 hash_result_len;
256 };
257 struct virtio_crypto_mac_para {
258 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259   struct virtio_crypto_hash_para hash;
260 };
261 struct virtio_crypto_aead_para {
262   __le32 iv_len;
263 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
264   __le32 aad_len;
265   __le32 src_data_len;
266   __le32 dst_data_len;
267 };
268 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
269 struct virtio_crypto_cipher_data_req {
270   struct virtio_crypto_cipher_para para;
271   __u8 padding[24];
272 };
273 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
274 struct virtio_crypto_hash_data_req {
275   struct virtio_crypto_hash_para para;
276   __u8 padding[40];
277 };
278 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
279 struct virtio_crypto_mac_data_req {
280   struct virtio_crypto_mac_para para;
281   __u8 padding[40];
282 };
283 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
284 struct virtio_crypto_alg_chain_data_para {
285   __le32 iv_len;
286   __le32 src_data_len;
287   __le32 dst_data_len;
288 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
289   __le32 cipher_start_src_offset;
290   __le32 len_to_cipher;
291   __le32 hash_start_src_offset;
292   __le32 len_to_hash;
293 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
294   __le32 aad_len;
295   __le32 hash_result_len;
296   __le32 reserved;
297 };
298 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
299 struct virtio_crypto_alg_chain_data_req {
300   struct virtio_crypto_alg_chain_data_para para;
301 };
302 struct virtio_crypto_sym_data_req {
303 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
304   union {
305     struct virtio_crypto_cipher_data_req cipher;
306     struct virtio_crypto_alg_chain_data_req chain;
307     __u8 padding[40];
308 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
309   } u;
310   __le32 op_type;
311   __le32 padding;
312 };
313 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
314 struct virtio_crypto_aead_data_req {
315   struct virtio_crypto_aead_para para;
316   __u8 padding[32];
317 };
318 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
319 struct virtio_crypto_op_data_req {
320   struct virtio_crypto_op_header header;
321   union {
322     struct virtio_crypto_sym_data_req sym_req;
323 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
324     struct virtio_crypto_hash_data_req hash_req;
325     struct virtio_crypto_mac_data_req mac_req;
326     struct virtio_crypto_aead_data_req aead_req;
327     __u8 padding[48];
328 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
329   } u;
330 };
331 #define VIRTIO_CRYPTO_OK 0
332 #define VIRTIO_CRYPTO_ERR 1
333 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
334 #define VIRTIO_CRYPTO_BADMSG 2
335 #define VIRTIO_CRYPTO_NOTSUPP 3
336 #define VIRTIO_CRYPTO_INVSESS 4
337 #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
338 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
339 struct virtio_crypto_config {
340   __u32 status;
341   __u32 max_dataqueues;
342   __u32 crypto_services;
343 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
344   __u32 cipher_algo_l;
345   __u32 cipher_algo_h;
346   __u32 hash_algo;
347   __u32 mac_algo_l;
348 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
349   __u32 mac_algo_h;
350   __u32 aead_algo;
351   __u32 max_cipher_key_len;
352   __u32 max_auth_key_len;
353 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
354   __u32 reserve;
355   __u64 max_size;
356 };
357 struct virtio_crypto_inhdr {
358 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
359   __u8 status;
360 };
361 #endif
362