1*f0d92b56SLongpeng(Mike) /* 2*f0d92b56SLongpeng(Mike) * QEMU Crypto af_alg support 3*f0d92b56SLongpeng(Mike) * 4*f0d92b56SLongpeng(Mike) * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD. 5*f0d92b56SLongpeng(Mike) * 6*f0d92b56SLongpeng(Mike) * Authors: 7*f0d92b56SLongpeng(Mike) * Longpeng(Mike) <longpeng2@huawei.com> 8*f0d92b56SLongpeng(Mike) * 9*f0d92b56SLongpeng(Mike) * This work is licensed under the terms of the GNU GPL, version 2 or 10*f0d92b56SLongpeng(Mike) * (at your option) any later version. See the COPYING file in the 11*f0d92b56SLongpeng(Mike) * top-level directory. 12*f0d92b56SLongpeng(Mike) */ 13*f0d92b56SLongpeng(Mike) 14*f0d92b56SLongpeng(Mike) #ifndef QCRYPTO_AFALGPRIV_H 15*f0d92b56SLongpeng(Mike) #define QCRYPTO_AFALGPRIV_H 16*f0d92b56SLongpeng(Mike) 17*f0d92b56SLongpeng(Mike) #include <linux/if_alg.h> 18*f0d92b56SLongpeng(Mike) 19*f0d92b56SLongpeng(Mike) #define SALG_TYPE_LEN_MAX 14 20*f0d92b56SLongpeng(Mike) #define SALG_NAME_LEN_MAX 64 21*f0d92b56SLongpeng(Mike) 22*f0d92b56SLongpeng(Mike) typedef struct QCryptoAFAlg QCryptoAFAlg; 23*f0d92b56SLongpeng(Mike) 24*f0d92b56SLongpeng(Mike) struct QCryptoAFAlg { 25*f0d92b56SLongpeng(Mike) int tfmfd; 26*f0d92b56SLongpeng(Mike) int opfd; 27*f0d92b56SLongpeng(Mike) struct msghdr *msg; 28*f0d92b56SLongpeng(Mike) struct cmsghdr *cmsg; 29*f0d92b56SLongpeng(Mike) }; 30*f0d92b56SLongpeng(Mike) 31*f0d92b56SLongpeng(Mike) /** 32*f0d92b56SLongpeng(Mike) * qcrypto_afalg_comm_alloc: 33*f0d92b56SLongpeng(Mike) * @type: the type of crypto operation 34*f0d92b56SLongpeng(Mike) * @name: the name of crypto operation 35*f0d92b56SLongpeng(Mike) * 36*f0d92b56SLongpeng(Mike) * Allocate a QCryptoAFAlg object and bind itself to 37*f0d92b56SLongpeng(Mike) * a AF_ALG socket. 38*f0d92b56SLongpeng(Mike) * 39*f0d92b56SLongpeng(Mike) * Returns: 40*f0d92b56SLongpeng(Mike) * a new QCryptoAFAlg object, or NULL in error. 41*f0d92b56SLongpeng(Mike) */ 42*f0d92b56SLongpeng(Mike) QCryptoAFAlg * 43*f0d92b56SLongpeng(Mike) qcrypto_afalg_comm_alloc(const char *type, const char *name, 44*f0d92b56SLongpeng(Mike) Error **errp); 45*f0d92b56SLongpeng(Mike) 46*f0d92b56SLongpeng(Mike) /** 47*f0d92b56SLongpeng(Mike) * afalg_comm_free: 48*f0d92b56SLongpeng(Mike) * @afalg: the QCryptoAFAlg object 49*f0d92b56SLongpeng(Mike) * 50*f0d92b56SLongpeng(Mike) * Free the @afalg. 51*f0d92b56SLongpeng(Mike) */ 52*f0d92b56SLongpeng(Mike) void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg); 53*f0d92b56SLongpeng(Mike) 54*f0d92b56SLongpeng(Mike) #endif 55