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