virtio_crypto.h revision 48af7cb2e205dcc2f09a1a1b8a1a37c93e1943f0
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))
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
362