]>
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> | |
3eedf5cc | 18 | #include "crypto/cipher.h" |
f0d92b56 LM |
19 | |
20 | #define SALG_TYPE_LEN_MAX 14 | |
21 | #define SALG_NAME_LEN_MAX 64 | |
22 | ||
25c60df3 LM |
23 | #ifndef SOL_ALG |
24 | #define SOL_ALG 279 | |
25 | #endif | |
26 | ||
27 | #define AFALG_TYPE_CIPHER "skcipher" | |
9a059773 | 28 | #define AFALG_TYPE_HASH "hash" |
25c60df3 LM |
29 | |
30 | #define ALG_OPTYPE_LEN 4 | |
31 | #define ALG_MSGIV_LEN(len) (sizeof(struct af_alg_iv) + (len)) | |
32 | ||
f0d92b56 LM |
33 | typedef struct QCryptoAFAlg QCryptoAFAlg; |
34 | ||
35 | struct QCryptoAFAlg { | |
3eedf5cc RH |
36 | QCryptoCipher base; |
37 | ||
f0d92b56 LM |
38 | int tfmfd; |
39 | int opfd; | |
40 | struct msghdr *msg; | |
41 | struct cmsghdr *cmsg; | |
42 | }; | |
43 | ||
44 | /** | |
45 | * qcrypto_afalg_comm_alloc: | |
46 | * @type: the type of crypto operation | |
47 | * @name: the name of crypto operation | |
48 | * | |
49 | * Allocate a QCryptoAFAlg object and bind itself to | |
50 | * a AF_ALG socket. | |
51 | * | |
52 | * Returns: | |
53 | * a new QCryptoAFAlg object, or NULL in error. | |
54 | */ | |
55 | QCryptoAFAlg * | |
56 | qcrypto_afalg_comm_alloc(const char *type, const char *name, | |
57 | Error **errp); | |
58 | ||
59 | /** | |
60 | * afalg_comm_free: | |
61 | * @afalg: the QCryptoAFAlg object | |
62 | * | |
63 | * Free the @afalg. | |
64 | */ | |
65 | void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg); | |
66 | ||
67 | #endif |