Merge remote-tracking branch 'remotes/dgilbert-gitlab/tags/pull-migration-20210726a...
[qemu/armbru.git] / crypto / afalgpriv.h
blob5a2393f1b7ee2c4a4986eb576e2085a84b023af5
1 /*
2 * QEMU Crypto af_alg support
4 * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD.
6 * Authors:
7 * Longpeng(Mike) <longpeng2@huawei.com>
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.
14 #ifndef QCRYPTO_AFALGPRIV_H
15 #define QCRYPTO_AFALGPRIV_H
17 #include <linux/if_alg.h>
18 #include "crypto/cipher.h"
20 #define SALG_TYPE_LEN_MAX 14
21 #define SALG_NAME_LEN_MAX 64
23 #ifndef SOL_ALG
24 #define SOL_ALG 279
25 #endif
27 #define AFALG_TYPE_CIPHER "skcipher"
28 #define AFALG_TYPE_HASH "hash"
30 #define ALG_OPTYPE_LEN 4
31 #define ALG_MSGIV_LEN(len) (sizeof(struct af_alg_iv) + (len))
33 typedef struct QCryptoAFAlg QCryptoAFAlg;
35 struct QCryptoAFAlg {
36 QCryptoCipher base;
38 int tfmfd;
39 int opfd;
40 struct msghdr *msg;
41 struct cmsghdr *cmsg;
44 /**
45 * qcrypto_afalg_comm_alloc:
46 * @type: the type of crypto operation
47 * @name: the name of crypto operation
49 * Allocate a QCryptoAFAlg object and bind itself to
50 * a AF_ALG socket.
52 * Returns:
53 * a new QCryptoAFAlg object, or NULL in error.
55 QCryptoAFAlg *
56 qcrypto_afalg_comm_alloc(const char *type, const char *name,
57 Error **errp);
59 /**
60 * afalg_comm_free:
61 * @afalg: the QCryptoAFAlg object
63 * Free the @afalg.
65 void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg);
67 #endif