GNU Linux-libre 6.0.15-gnu
[releases.git] / include / uapi / linux / virtio_crypto.h
1 #ifndef _VIRTIO_CRYPTO_H
2 #define _VIRTIO_CRYPTO_H
3 /* This header is BSD licensed so anyone can use the definitions to implement
4  * compatible drivers/servers.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  * 3. Neither the name of IBM nor the names of its contributors
15  *    may be used to endorse or promote products derived from this software
16  *    without specific prior written permission.
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL IBM OR
21  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
27  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 #include <linux/types.h>
31 #include <linux/virtio_types.h>
32 #include <linux/virtio_ids.h>
33 #include <linux/virtio_config.h>
34
35
36 #define VIRTIO_CRYPTO_SERVICE_CIPHER 0
37 #define VIRTIO_CRYPTO_SERVICE_HASH   1
38 #define VIRTIO_CRYPTO_SERVICE_MAC    2
39 #define VIRTIO_CRYPTO_SERVICE_AEAD   3
40 #define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
41
42 #define VIRTIO_CRYPTO_OPCODE(service, op)   (((service) << 8) | (op))
43
44 struct virtio_crypto_ctrl_header {
45 #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION \
46            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
47 #define VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION \
48            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x03)
49 #define VIRTIO_CRYPTO_HASH_CREATE_SESSION \
50            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x02)
51 #define VIRTIO_CRYPTO_HASH_DESTROY_SESSION \
52            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x03)
53 #define VIRTIO_CRYPTO_MAC_CREATE_SESSION \
54            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x02)
55 #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION \
56            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
57 #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION \
58            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
59 #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION \
60            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
61 #define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION \
62            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
63 #define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION \
64            VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
65         __le32 opcode;
66         __le32 algo;
67         __le32 flag;
68         /* data virtqueue id */
69         __le32 queue_id;
70 };
71
72 struct virtio_crypto_cipher_session_para {
73 #define VIRTIO_CRYPTO_NO_CIPHER                 0
74 #define VIRTIO_CRYPTO_CIPHER_ARC4               1
75 #define VIRTIO_CRYPTO_CIPHER_AES_ECB            2
76 #define VIRTIO_CRYPTO_CIPHER_AES_CBC            3
77 #define VIRTIO_CRYPTO_CIPHER_AES_CTR            4
78 #define VIRTIO_CRYPTO_CIPHER_DES_ECB            5
79 #define VIRTIO_CRYPTO_CIPHER_DES_CBC            6
80 #define VIRTIO_CRYPTO_CIPHER_3DES_ECB           7
81 #define VIRTIO_CRYPTO_CIPHER_3DES_CBC           8
82 #define VIRTIO_CRYPTO_CIPHER_3DES_CTR           9
83 #define VIRTIO_CRYPTO_CIPHER_KASUMI_F8          10
84 #define VIRTIO_CRYPTO_CIPHER_SNOW3G_UEA2        11
85 #define VIRTIO_CRYPTO_CIPHER_AES_F8             12
86 #define VIRTIO_CRYPTO_CIPHER_AES_XTS            13
87 #define VIRTIO_CRYPTO_CIPHER_ZUC_EEA3           14
88         __le32 algo;
89         /* length of key */
90         __le32 keylen;
91
92 #define VIRTIO_CRYPTO_OP_ENCRYPT  1
93 #define VIRTIO_CRYPTO_OP_DECRYPT  2
94         /* encrypt or decrypt */
95         __le32 op;
96         __le32 padding;
97 };
98
99 struct virtio_crypto_session_input {
100         /* Device-writable part */
101         __le64 session_id;
102         __le32 status;
103         __le32 padding;
104 };
105
106 struct virtio_crypto_cipher_session_req {
107         struct virtio_crypto_cipher_session_para para;
108         __u8 padding[32];
109 };
110
111 struct virtio_crypto_hash_session_para {
112 #define VIRTIO_CRYPTO_NO_HASH            0
113 #define VIRTIO_CRYPTO_HASH_MD5           1
114 #define VIRTIO_CRYPTO_HASH_SHA1          2
115 #define VIRTIO_CRYPTO_HASH_SHA_224       3
116 #define VIRTIO_CRYPTO_HASH_SHA_256       4
117 #define VIRTIO_CRYPTO_HASH_SHA_384       5
118 #define VIRTIO_CRYPTO_HASH_SHA_512       6
119 #define VIRTIO_CRYPTO_HASH_SHA3_224      7
120 #define VIRTIO_CRYPTO_HASH_SHA3_256      8
121 #define VIRTIO_CRYPTO_HASH_SHA3_384      9
122 #define VIRTIO_CRYPTO_HASH_SHA3_512      10
123 #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE128      11
124 #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE256      12
125         __le32 algo;
126         /* hash result length */
127         __le32 hash_result_len;
128         __u8 padding[8];
129 };
130
131 struct virtio_crypto_hash_create_session_req {
132         struct virtio_crypto_hash_session_para para;
133         __u8 padding[40];
134 };
135
136 struct virtio_crypto_mac_session_para {
137 #define VIRTIO_CRYPTO_NO_MAC                       0
138 #define VIRTIO_CRYPTO_MAC_HMAC_MD5                 1
139 #define VIRTIO_CRYPTO_MAC_HMAC_SHA1                2
140 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_224             3
141 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_256             4
142 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_384             5
143 #define VIRTIO_CRYPTO_MAC_HMAC_SHA_512             6
144 #define VIRTIO_CRYPTO_MAC_CMAC_3DES                25
145 #define VIRTIO_CRYPTO_MAC_CMAC_AES                 26
146 #define VIRTIO_CRYPTO_MAC_KASUMI_F9                27
147 #define VIRTIO_CRYPTO_MAC_SNOW3G_UIA2              28
148 #define VIRTIO_CRYPTO_MAC_GMAC_AES                 41
149 #define VIRTIO_CRYPTO_MAC_GMAC_TWOFISH             42
150 #define VIRTIO_CRYPTO_MAC_CBCMAC_AES               49
151 #define VIRTIO_CRYPTO_MAC_CBCMAC_KASUMI_F9         50
152 #define VIRTIO_CRYPTO_MAC_XCBC_AES                 53
153         __le32 algo;
154         /* hash result length */
155         __le32 hash_result_len;
156         /* length of authenticated key */
157         __le32 auth_key_len;
158         __le32 padding;
159 };
160
161 struct virtio_crypto_mac_create_session_req {
162         struct virtio_crypto_mac_session_para para;
163         __u8 padding[40];
164 };
165
166 struct virtio_crypto_aead_session_para {
167 #define VIRTIO_CRYPTO_NO_AEAD     0
168 #define VIRTIO_CRYPTO_AEAD_GCM    1
169 #define VIRTIO_CRYPTO_AEAD_CCM    2
170 #define VIRTIO_CRYPTO_AEAD_CHACHA20_POLY1305  3
171         __le32 algo;
172         /* length of key */
173         __le32 key_len;
174         /* hash result length */
175         __le32 hash_result_len;
176         /* length of the additional authenticated data (AAD) in bytes */
177         __le32 aad_len;
178         /* encrypt or decrypt, See above VIRTIO_CRYPTO_OP_* */
179         __le32 op;
180         __le32 padding;
181 };
182
183 struct virtio_crypto_aead_create_session_req {
184         struct virtio_crypto_aead_session_para para;
185         __u8 padding[32];
186 };
187
188 struct virtio_crypto_rsa_session_para {
189 #define VIRTIO_CRYPTO_RSA_RAW_PADDING   0
190 #define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
191         __le32 padding_algo;
192
193 #define VIRTIO_CRYPTO_RSA_NO_HASH   0
194 #define VIRTIO_CRYPTO_RSA_MD2       1
195 #define VIRTIO_CRYPTO_RSA_MD3       2
196 #define VIRTIO_CRYPTO_RSA_MD4       3
197 #define VIRTIO_CRYPTO_RSA_MD5       4
198 #define VIRTIO_CRYPTO_RSA_SHA1      5
199 #define VIRTIO_CRYPTO_RSA_SHA256    6
200 #define VIRTIO_CRYPTO_RSA_SHA384    7
201 #define VIRTIO_CRYPTO_RSA_SHA512    8
202 #define VIRTIO_CRYPTO_RSA_SHA224    9
203         __le32 hash_algo;
204 };
205
206 struct virtio_crypto_ecdsa_session_para {
207 #define VIRTIO_CRYPTO_CURVE_UNKNOWN   0
208 #define VIRTIO_CRYPTO_CURVE_NIST_P192 1
209 #define VIRTIO_CRYPTO_CURVE_NIST_P224 2
210 #define VIRTIO_CRYPTO_CURVE_NIST_P256 3
211 #define VIRTIO_CRYPTO_CURVE_NIST_P384 4
212 #define VIRTIO_CRYPTO_CURVE_NIST_P521 5
213         __le32 curve_id;
214         __le32 padding;
215 };
216
217 struct virtio_crypto_akcipher_session_para {
218 #define VIRTIO_CRYPTO_NO_AKCIPHER    0
219 #define VIRTIO_CRYPTO_AKCIPHER_RSA   1
220 #define VIRTIO_CRYPTO_AKCIPHER_DSA   2
221 #define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
222         __le32 algo;
223
224 #define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC  1
225 #define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
226         __le32 keytype;
227         __le32 keylen;
228
229         union {
230                 struct virtio_crypto_rsa_session_para rsa;
231                 struct virtio_crypto_ecdsa_session_para ecdsa;
232         } u;
233 };
234
235 struct virtio_crypto_akcipher_create_session_req {
236         struct virtio_crypto_akcipher_session_para para;
237         __u8 padding[36];
238 };
239
240 struct virtio_crypto_alg_chain_session_para {
241 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER  1
242 #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH  2
243         __le32 alg_chain_order;
244 /* Plain hash */
245 #define VIRTIO_CRYPTO_SYM_HASH_MODE_PLAIN    1
246 /* Authenticated hash (mac) */
247 #define VIRTIO_CRYPTO_SYM_HASH_MODE_AUTH     2
248 /* Nested hash */
249 #define VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED   3
250         __le32 hash_mode;
251         struct virtio_crypto_cipher_session_para cipher_param;
252         union {
253                 struct virtio_crypto_hash_session_para hash_param;
254                 struct virtio_crypto_mac_session_para mac_param;
255                 __u8 padding[16];
256         } u;
257         /* length of the additional authenticated data (AAD) in bytes */
258         __le32 aad_len;
259         __le32 padding;
260 };
261
262 struct virtio_crypto_alg_chain_session_req {
263         struct virtio_crypto_alg_chain_session_para para;
264 };
265
266 struct virtio_crypto_sym_create_session_req {
267         union {
268                 struct virtio_crypto_cipher_session_req cipher;
269                 struct virtio_crypto_alg_chain_session_req chain;
270                 __u8 padding[48];
271         } u;
272
273         /* Device-readable part */
274
275 /* No operation */
276 #define VIRTIO_CRYPTO_SYM_OP_NONE  0
277 /* Cipher only operation on the data */
278 #define VIRTIO_CRYPTO_SYM_OP_CIPHER  1
279 /*
280  * Chain any cipher with any hash or mac operation. The order
281  * depends on the value of alg_chain_order param
282  */
283 #define VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING  2
284         __le32 op_type;
285         __le32 padding;
286 };
287
288 struct virtio_crypto_destroy_session_req {
289         /* Device-readable part */
290         __le64  session_id;
291         __u8 padding[48];
292 };
293
294 /* The request of the control virtqueue's packet */
295 struct virtio_crypto_op_ctrl_req {
296         struct virtio_crypto_ctrl_header header;
297
298         union {
299                 struct virtio_crypto_sym_create_session_req
300                         sym_create_session;
301                 struct virtio_crypto_hash_create_session_req
302                         hash_create_session;
303                 struct virtio_crypto_mac_create_session_req
304                         mac_create_session;
305                 struct virtio_crypto_aead_create_session_req
306                         aead_create_session;
307                 struct virtio_crypto_akcipher_create_session_req
308                         akcipher_create_session;
309                 struct virtio_crypto_destroy_session_req
310                         destroy_session;
311                 __u8 padding[56];
312         } u;
313 };
314
315 struct virtio_crypto_op_header {
316 #define VIRTIO_CRYPTO_CIPHER_ENCRYPT \
317         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x00)
318 #define VIRTIO_CRYPTO_CIPHER_DECRYPT \
319         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x01)
320 #define VIRTIO_CRYPTO_HASH \
321         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x00)
322 #define VIRTIO_CRYPTO_MAC \
323         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
324 #define VIRTIO_CRYPTO_AEAD_ENCRYPT \
325         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
326 #define VIRTIO_CRYPTO_AEAD_DECRYPT \
327         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
328 #define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT \
329         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
330 #define VIRTIO_CRYPTO_AKCIPHER_DECRYPT \
331         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
332 #define VIRTIO_CRYPTO_AKCIPHER_SIGN \
333         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
334 #define VIRTIO_CRYPTO_AKCIPHER_VERIFY \
335         VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
336         __le32 opcode;
337         /* algo should be service-specific algorithms */
338         __le32 algo;
339         /* session_id should be service-specific algorithms */
340         __le64 session_id;
341         /* control flag to control the request */
342         __le32 flag;
343         __le32 padding;
344 };
345
346 struct virtio_crypto_cipher_para {
347         /*
348          * Byte Length of valid IV/Counter
349          *
350          * For block ciphers in CBC or F8 mode, or for Kasumi in F8 mode, or for
351          *   SNOW3G in UEA2 mode, this is the length of the IV (which
352          *   must be the same as the block length of the cipher).
353          * For block ciphers in CTR mode, this is the length of the counter
354          *   (which must be the same as the block length of the cipher).
355          * For AES-XTS, this is the 128bit tweak, i, from IEEE Std 1619-2007.
356          *
357          * The IV/Counter will be updated after every partial cryptographic
358          * operation.
359          */
360         __le32 iv_len;
361         /* length of source data */
362         __le32 src_data_len;
363         /* length of dst data */
364         __le32 dst_data_len;
365         __le32 padding;
366 };
367
368 struct virtio_crypto_hash_para {
369         /* length of source data */
370         __le32 src_data_len;
371         /* hash result length */
372         __le32 hash_result_len;
373 };
374
375 struct virtio_crypto_mac_para {
376         struct virtio_crypto_hash_para hash;
377 };
378
379 struct virtio_crypto_aead_para {
380         /*
381          * Byte Length of valid IV data pointed to by the below iv_addr
382          * parameter.
383          *
384          * For GCM mode, this is either 12 (for 96-bit IVs) or 16, in which
385          *   case iv_addr points to J0.
386          * For CCM mode, this is the length of the nonce, which can be in the
387          *   range 7 to 13 inclusive.
388          */
389         __le32 iv_len;
390         /* length of additional auth data */
391         __le32 aad_len;
392         /* length of source data */
393         __le32 src_data_len;
394         /* length of dst data */
395         __le32 dst_data_len;
396 };
397
398 struct virtio_crypto_cipher_data_req {
399         /* Device-readable part */
400         struct virtio_crypto_cipher_para para;
401         __u8 padding[24];
402 };
403
404 struct virtio_crypto_hash_data_req {
405         /* Device-readable part */
406         struct virtio_crypto_hash_para para;
407         __u8 padding[40];
408 };
409
410 struct virtio_crypto_mac_data_req {
411         /* Device-readable part */
412         struct virtio_crypto_mac_para para;
413         __u8 padding[40];
414 };
415
416 struct virtio_crypto_alg_chain_data_para {
417         __le32 iv_len;
418         /* Length of source data */
419         __le32 src_data_len;
420         /* Length of destination data */
421         __le32 dst_data_len;
422         /* Starting point for cipher processing in source data */
423         __le32 cipher_start_src_offset;
424         /* Length of the source data that the cipher will be computed on */
425         __le32 len_to_cipher;
426         /* Starting point for hash processing in source data */
427         __le32 hash_start_src_offset;
428         /* Length of the source data that the hash will be computed on */
429         __le32 len_to_hash;
430         /* Length of the additional auth data */
431         __le32 aad_len;
432         /* Length of the hash result */
433         __le32 hash_result_len;
434         __le32 reserved;
435 };
436
437 struct virtio_crypto_alg_chain_data_req {
438         /* Device-readable part */
439         struct virtio_crypto_alg_chain_data_para para;
440 };
441
442 struct virtio_crypto_sym_data_req {
443         union {
444                 struct virtio_crypto_cipher_data_req cipher;
445                 struct virtio_crypto_alg_chain_data_req chain;
446                 __u8 padding[40];
447         } u;
448
449         /* See above VIRTIO_CRYPTO_SYM_OP_* */
450         __le32 op_type;
451         __le32 padding;
452 };
453
454 struct virtio_crypto_aead_data_req {
455         /* Device-readable part */
456         struct virtio_crypto_aead_para para;
457         __u8 padding[32];
458 };
459
460 struct virtio_crypto_akcipher_para {
461         __le32 src_data_len;
462         __le32 dst_data_len;
463 };
464
465 struct virtio_crypto_akcipher_data_req {
466         struct virtio_crypto_akcipher_para para;
467         __u8 padding[40];
468 };
469
470 /* The request of the data virtqueue's packet */
471 struct virtio_crypto_op_data_req {
472         struct virtio_crypto_op_header header;
473
474         union {
475                 struct virtio_crypto_sym_data_req  sym_req;
476                 struct virtio_crypto_hash_data_req hash_req;
477                 struct virtio_crypto_mac_data_req mac_req;
478                 struct virtio_crypto_aead_data_req aead_req;
479                 struct virtio_crypto_akcipher_data_req akcipher_req;
480                 __u8 padding[48];
481         } u;
482 };
483
484 #define VIRTIO_CRYPTO_OK        0
485 #define VIRTIO_CRYPTO_ERR       1
486 #define VIRTIO_CRYPTO_BADMSG    2
487 #define VIRTIO_CRYPTO_NOTSUPP   3
488 #define VIRTIO_CRYPTO_INVSESS   4 /* Invalid session id */
489 #define VIRTIO_CRYPTO_NOSPC     5 /* no free session ID */
490 #define VIRTIO_CRYPTO_KEY_REJECTED 6 /* Signature verification failed */
491
492 /* The accelerator hardware is ready */
493 #define VIRTIO_CRYPTO_S_HW_READY  (1 << 0)
494
495 struct virtio_crypto_config {
496         /* See VIRTIO_CRYPTO_OP_* above */
497         __le32  status;
498
499         /*
500          * Maximum number of data queue
501          */
502         __le32  max_dataqueues;
503
504         /*
505          * Specifies the services mask which the device support,
506          * see VIRTIO_CRYPTO_SERVICE_* above
507          */
508         __le32 crypto_services;
509
510         /* Detailed algorithms mask */
511         __le32 cipher_algo_l;
512         __le32 cipher_algo_h;
513         __le32 hash_algo;
514         __le32 mac_algo_l;
515         __le32 mac_algo_h;
516         __le32 aead_algo;
517         /* Maximum length of cipher key */
518         __le32 max_cipher_key_len;
519         /* Maximum length of authenticated key */
520         __le32 max_auth_key_len;
521         __le32 akcipher_algo;
522         /* Maximum size of each crypto request's content */
523         __le64 max_size;
524 };
525
526 struct virtio_crypto_inhdr {
527         /* See VIRTIO_CRYPTO_* above */
528         __u8 status;
529 };
530 #endif