xref: /aosp_15_r20/bionic/libc/kernel/uapi/linux/virtio_crypto.h (revision 8d67ca893c1523eb926b9080dbe4e2ffd2a27ba1)
1*8d67ca89SAndroid Build Coastguard Worker /*
2*8d67ca89SAndroid Build Coastguard Worker  * This file is auto-generated. Modifications will be lost.
3*8d67ca89SAndroid Build Coastguard Worker  *
4*8d67ca89SAndroid Build Coastguard Worker  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
5*8d67ca89SAndroid Build Coastguard Worker  * for more information.
6*8d67ca89SAndroid Build Coastguard Worker  */
7*8d67ca89SAndroid Build Coastguard Worker #ifndef _VIRTIO_CRYPTO_H
8*8d67ca89SAndroid Build Coastguard Worker #define _VIRTIO_CRYPTO_H
9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h>
10*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_types.h>
11*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_ids.h>
12*8d67ca89SAndroid Build Coastguard Worker #include <linux/virtio_config.h>
13*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SERVICE_CIPHER 0
14*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SERVICE_HASH 1
15*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SERVICE_MAC 2
16*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SERVICE_AEAD 3
17*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
18*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_OPCODE(service,op) (((service) << 8) | (op))
19*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_ctrl_header {
20*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
21*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x03)
22*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x02)
23*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x03)
24*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x02)
25*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
26*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
27*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
28*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
29*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
30*8d67ca89SAndroid Build Coastguard Worker   __le32 opcode;
31*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
32*8d67ca89SAndroid Build Coastguard Worker   __le32 flag;
33*8d67ca89SAndroid Build Coastguard Worker   __le32 queue_id;
34*8d67ca89SAndroid Build Coastguard Worker };
35*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_cipher_session_para {
36*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NO_CIPHER 0
37*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_ARC4 1
38*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_AES_ECB 2
39*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_AES_CBC 3
40*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_AES_CTR 4
41*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_DES_ECB 5
42*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_DES_CBC 6
43*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_3DES_ECB 7
44*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_3DES_CBC 8
45*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_3DES_CTR 9
46*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_KASUMI_F8 10
47*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_SNOW3G_UEA2 11
48*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_AES_F8 12
49*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_AES_XTS 13
50*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_ZUC_EEA3 14
51*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
52*8d67ca89SAndroid Build Coastguard Worker   __le32 keylen;
53*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_OP_ENCRYPT 1
54*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_OP_DECRYPT 2
55*8d67ca89SAndroid Build Coastguard Worker   __le32 op;
56*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
57*8d67ca89SAndroid Build Coastguard Worker };
58*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_session_input {
59*8d67ca89SAndroid Build Coastguard Worker   __le64 session_id;
60*8d67ca89SAndroid Build Coastguard Worker   __le32 status;
61*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
62*8d67ca89SAndroid Build Coastguard Worker };
63*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_cipher_session_req {
64*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_cipher_session_para para;
65*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[32];
66*8d67ca89SAndroid Build Coastguard Worker };
67*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_hash_session_para {
68*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NO_HASH 0
69*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_MD5 1
70*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA1 2
71*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA_224 3
72*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA_256 4
73*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA_384 5
74*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA_512 6
75*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_224 7
76*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_256 8
77*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_384 9
78*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_512 10
79*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE128 11
80*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH_SHA3_SHAKE256 12
81*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
82*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_result_len;
83*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[8];
84*8d67ca89SAndroid Build Coastguard Worker };
85*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_hash_create_session_req {
86*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_hash_session_para para;
87*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[40];
88*8d67ca89SAndroid Build Coastguard Worker };
89*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_mac_session_para {
90*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NO_MAC 0
91*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_MD5 1
92*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_SHA1 2
93*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_SHA_224 3
94*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_SHA_256 4
95*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_SHA_384 5
96*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_HMAC_SHA_512 6
97*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_CMAC_3DES 25
98*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_CMAC_AES 26
99*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_KASUMI_F9 27
100*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_SNOW3G_UIA2 28
101*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_GMAC_AES 41
102*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_GMAC_TWOFISH 42
103*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_CBCMAC_AES 49
104*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_CBCMAC_KASUMI_F9 50
105*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC_XCBC_AES 53
106*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
107*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_result_len;
108*8d67ca89SAndroid Build Coastguard Worker   __le32 auth_key_len;
109*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
110*8d67ca89SAndroid Build Coastguard Worker };
111*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_mac_create_session_req {
112*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_mac_session_para para;
113*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[40];
114*8d67ca89SAndroid Build Coastguard Worker };
115*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_aead_session_para {
116*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NO_AEAD 0
117*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_GCM 1
118*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_CCM 2
119*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_CHACHA20_POLY1305 3
120*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
121*8d67ca89SAndroid Build Coastguard Worker   __le32 key_len;
122*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_result_len;
123*8d67ca89SAndroid Build Coastguard Worker   __le32 aad_len;
124*8d67ca89SAndroid Build Coastguard Worker   __le32 op;
125*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
126*8d67ca89SAndroid Build Coastguard Worker };
127*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_aead_create_session_req {
128*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_aead_session_para para;
129*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[32];
130*8d67ca89SAndroid Build Coastguard Worker };
131*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_rsa_session_para {
132*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
133*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
134*8d67ca89SAndroid Build Coastguard Worker   __le32 padding_algo;
135*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_NO_HASH 0
136*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_MD2 1
137*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_MD3 2
138*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_MD4 3
139*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_MD5 4
140*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_SHA1 5
141*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_SHA256 6
142*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_SHA384 7
143*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_SHA512 8
144*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_RSA_SHA224 9
145*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_algo;
146*8d67ca89SAndroid Build Coastguard Worker };
147*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_ecdsa_session_para {
148*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
149*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_NIST_P192 1
150*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_NIST_P224 2
151*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_NIST_P256 3
152*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_NIST_P384 4
153*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CURVE_NIST_P521 5
154*8d67ca89SAndroid Build Coastguard Worker   __le32 curve_id;
155*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
156*8d67ca89SAndroid Build Coastguard Worker };
157*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_akcipher_session_para {
158*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NO_AKCIPHER 0
159*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_RSA 1
160*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_DSA 2
161*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
162*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
163*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
164*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
165*8d67ca89SAndroid Build Coastguard Worker   __le32 keytype;
166*8d67ca89SAndroid Build Coastguard Worker   __le32 keylen;
167*8d67ca89SAndroid Build Coastguard Worker   union {
168*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_rsa_session_para rsa;
169*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_ecdsa_session_para ecdsa;
170*8d67ca89SAndroid Build Coastguard Worker   } u;
171*8d67ca89SAndroid Build Coastguard Worker };
172*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_akcipher_create_session_req {
173*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_akcipher_session_para para;
174*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[36];
175*8d67ca89SAndroid Build Coastguard Worker };
176*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_alg_chain_session_para {
177*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
178*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
179*8d67ca89SAndroid Build Coastguard Worker   __le32 alg_chain_order;
180*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_HASH_MODE_PLAIN 1
181*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_HASH_MODE_AUTH 2
182*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED 3
183*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_mode;
184*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_cipher_session_para cipher_param;
185*8d67ca89SAndroid Build Coastguard Worker   union {
186*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_hash_session_para hash_param;
187*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_mac_session_para mac_param;
188*8d67ca89SAndroid Build Coastguard Worker     __u8 padding[16];
189*8d67ca89SAndroid Build Coastguard Worker   } u;
190*8d67ca89SAndroid Build Coastguard Worker   __le32 aad_len;
191*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
192*8d67ca89SAndroid Build Coastguard Worker };
193*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_alg_chain_session_req {
194*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_alg_chain_session_para para;
195*8d67ca89SAndroid Build Coastguard Worker };
196*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_sym_create_session_req {
197*8d67ca89SAndroid Build Coastguard Worker   union {
198*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_cipher_session_req cipher;
199*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_alg_chain_session_req chain;
200*8d67ca89SAndroid Build Coastguard Worker     __u8 padding[48];
201*8d67ca89SAndroid Build Coastguard Worker   } u;
202*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_OP_NONE 0
203*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_OP_CIPHER 1
204*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING 2
205*8d67ca89SAndroid Build Coastguard Worker   __le32 op_type;
206*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
207*8d67ca89SAndroid Build Coastguard Worker };
208*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_destroy_session_req {
209*8d67ca89SAndroid Build Coastguard Worker   __le64 session_id;
210*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[48];
211*8d67ca89SAndroid Build Coastguard Worker };
212*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_op_ctrl_req {
213*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_ctrl_header header;
214*8d67ca89SAndroid Build Coastguard Worker   union {
215*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_sym_create_session_req sym_create_session;
216*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_hash_create_session_req hash_create_session;
217*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_mac_create_session_req mac_create_session;
218*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_aead_create_session_req aead_create_session;
219*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_akcipher_create_session_req akcipher_create_session;
220*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_destroy_session_req destroy_session;
221*8d67ca89SAndroid Build Coastguard Worker     __u8 padding[56];
222*8d67ca89SAndroid Build Coastguard Worker   } u;
223*8d67ca89SAndroid Build Coastguard Worker };
224*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_op_header {
225*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x00)
226*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_CIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x01)
227*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_HASH VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x00)
228*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_MAC VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
229*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
230*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AEAD_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
231*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
232*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_DECRYPT VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
233*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_SIGN VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
234*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_AKCIPHER_VERIFY VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
235*8d67ca89SAndroid Build Coastguard Worker   __le32 opcode;
236*8d67ca89SAndroid Build Coastguard Worker   __le32 algo;
237*8d67ca89SAndroid Build Coastguard Worker   __le64 session_id;
238*8d67ca89SAndroid Build Coastguard Worker   __le32 flag;
239*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
240*8d67ca89SAndroid Build Coastguard Worker };
241*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_cipher_para {
242*8d67ca89SAndroid Build Coastguard Worker   __le32 iv_len;
243*8d67ca89SAndroid Build Coastguard Worker   __le32 src_data_len;
244*8d67ca89SAndroid Build Coastguard Worker   __le32 dst_data_len;
245*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
246*8d67ca89SAndroid Build Coastguard Worker };
247*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_hash_para {
248*8d67ca89SAndroid Build Coastguard Worker   __le32 src_data_len;
249*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_result_len;
250*8d67ca89SAndroid Build Coastguard Worker };
251*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_mac_para {
252*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_hash_para hash;
253*8d67ca89SAndroid Build Coastguard Worker };
254*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_aead_para {
255*8d67ca89SAndroid Build Coastguard Worker   __le32 iv_len;
256*8d67ca89SAndroid Build Coastguard Worker   __le32 aad_len;
257*8d67ca89SAndroid Build Coastguard Worker   __le32 src_data_len;
258*8d67ca89SAndroid Build Coastguard Worker   __le32 dst_data_len;
259*8d67ca89SAndroid Build Coastguard Worker };
260*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_cipher_data_req {
261*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_cipher_para para;
262*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[24];
263*8d67ca89SAndroid Build Coastguard Worker };
264*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_hash_data_req {
265*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_hash_para para;
266*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[40];
267*8d67ca89SAndroid Build Coastguard Worker };
268*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_mac_data_req {
269*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_mac_para para;
270*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[40];
271*8d67ca89SAndroid Build Coastguard Worker };
272*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_alg_chain_data_para {
273*8d67ca89SAndroid Build Coastguard Worker   __le32 iv_len;
274*8d67ca89SAndroid Build Coastguard Worker   __le32 src_data_len;
275*8d67ca89SAndroid Build Coastguard Worker   __le32 dst_data_len;
276*8d67ca89SAndroid Build Coastguard Worker   __le32 cipher_start_src_offset;
277*8d67ca89SAndroid Build Coastguard Worker   __le32 len_to_cipher;
278*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_start_src_offset;
279*8d67ca89SAndroid Build Coastguard Worker   __le32 len_to_hash;
280*8d67ca89SAndroid Build Coastguard Worker   __le32 aad_len;
281*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_result_len;
282*8d67ca89SAndroid Build Coastguard Worker   __le32 reserved;
283*8d67ca89SAndroid Build Coastguard Worker };
284*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_alg_chain_data_req {
285*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_alg_chain_data_para para;
286*8d67ca89SAndroid Build Coastguard Worker };
287*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_sym_data_req {
288*8d67ca89SAndroid Build Coastguard Worker   union {
289*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_cipher_data_req cipher;
290*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_alg_chain_data_req chain;
291*8d67ca89SAndroid Build Coastguard Worker     __u8 padding[40];
292*8d67ca89SAndroid Build Coastguard Worker   } u;
293*8d67ca89SAndroid Build Coastguard Worker   __le32 op_type;
294*8d67ca89SAndroid Build Coastguard Worker   __le32 padding;
295*8d67ca89SAndroid Build Coastguard Worker };
296*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_aead_data_req {
297*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_aead_para para;
298*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[32];
299*8d67ca89SAndroid Build Coastguard Worker };
300*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_akcipher_para {
301*8d67ca89SAndroid Build Coastguard Worker   __le32 src_data_len;
302*8d67ca89SAndroid Build Coastguard Worker   __le32 dst_data_len;
303*8d67ca89SAndroid Build Coastguard Worker };
304*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_akcipher_data_req {
305*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_akcipher_para para;
306*8d67ca89SAndroid Build Coastguard Worker   __u8 padding[40];
307*8d67ca89SAndroid Build Coastguard Worker };
308*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_op_data_req {
309*8d67ca89SAndroid Build Coastguard Worker   struct virtio_crypto_op_header header;
310*8d67ca89SAndroid Build Coastguard Worker   union {
311*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_sym_data_req sym_req;
312*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_hash_data_req hash_req;
313*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_mac_data_req mac_req;
314*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_aead_data_req aead_req;
315*8d67ca89SAndroid Build Coastguard Worker     struct virtio_crypto_akcipher_data_req akcipher_req;
316*8d67ca89SAndroid Build Coastguard Worker     __u8 padding[48];
317*8d67ca89SAndroid Build Coastguard Worker   } u;
318*8d67ca89SAndroid Build Coastguard Worker };
319*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_OK 0
320*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_ERR 1
321*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_BADMSG 2
322*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NOTSUPP 3
323*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_INVSESS 4
324*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_NOSPC 5
325*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_KEY_REJECTED 6
326*8d67ca89SAndroid Build Coastguard Worker #define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
327*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_config {
328*8d67ca89SAndroid Build Coastguard Worker   __le32 status;
329*8d67ca89SAndroid Build Coastguard Worker   __le32 max_dataqueues;
330*8d67ca89SAndroid Build Coastguard Worker   __le32 crypto_services;
331*8d67ca89SAndroid Build Coastguard Worker   __le32 cipher_algo_l;
332*8d67ca89SAndroid Build Coastguard Worker   __le32 cipher_algo_h;
333*8d67ca89SAndroid Build Coastguard Worker   __le32 hash_algo;
334*8d67ca89SAndroid Build Coastguard Worker   __le32 mac_algo_l;
335*8d67ca89SAndroid Build Coastguard Worker   __le32 mac_algo_h;
336*8d67ca89SAndroid Build Coastguard Worker   __le32 aead_algo;
337*8d67ca89SAndroid Build Coastguard Worker   __le32 max_cipher_key_len;
338*8d67ca89SAndroid Build Coastguard Worker   __le32 max_auth_key_len;
339*8d67ca89SAndroid Build Coastguard Worker   __le32 akcipher_algo;
340*8d67ca89SAndroid Build Coastguard Worker   __le64 max_size;
341*8d67ca89SAndroid Build Coastguard Worker };
342*8d67ca89SAndroid Build Coastguard Worker struct virtio_crypto_inhdr {
343*8d67ca89SAndroid Build Coastguard Worker   __u8 status;
344*8d67ca89SAndroid Build Coastguard Worker };
345*8d67ca89SAndroid Build Coastguard Worker #endif
346