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