xref: /qemu/crypto/afalgpriv.h (revision f0d92b56d8831de4b7df43ed3e6404cae5d42ed8)
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