blob: 26066e61cf8b3ad04e4b3f1e8cde114c568ed43e [file] [log] [blame]
Christopher Ferris48af7cb2017-02-21 12:35:09 -08001/****************************************************************************
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))
32struct 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};
50struct 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 */
79struct 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};
85struct 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};
90struct 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};
112struct 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};
117struct 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};
145struct 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};
150struct 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};
165struct 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};
170struct 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};
191struct 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};
195struct 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};
210struct 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};
215struct 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 */
229struct 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};
245struct 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};
252struct 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};
257struct virtio_crypto_mac_para {
258/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
259 struct virtio_crypto_hash_para hash;
260};
261struct 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 */
269struct 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 */
274struct 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 */
279struct 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 */
284struct 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 */
299struct virtio_crypto_alg_chain_data_req {
300 struct virtio_crypto_alg_chain_data_para para;
301};
302struct 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 */
314struct 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 */
319struct 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 */
339struct 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};
357struct virtio_crypto_inhdr {
358/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
359 __u8 status;
360};
361#endif