| /* |
| * QEMU Crypto af_alg support |
| * |
| * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD. |
| * |
| * Authors: |
| * Longpeng(Mike) <longpeng2@huawei.com> |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2 or |
| * (at your option) any later version. See the COPYING file in the |
| * top-level directory. |
| */ |
| |
| #ifndef QCRYPTO_AFALGPRIV_H |
| #define QCRYPTO_AFALGPRIV_H |
| |
| #include <linux/if_alg.h> |
| #include "crypto/cipher.h" |
| |
| #define SALG_TYPE_LEN_MAX 14 |
| #define SALG_NAME_LEN_MAX 64 |
| |
| #ifndef SOL_ALG |
| #define SOL_ALG 279 |
| #endif |
| |
| #define AFALG_TYPE_CIPHER "skcipher" |
| #define AFALG_TYPE_HASH "hash" |
| |
| #define ALG_OPTYPE_LEN 4 |
| #define ALG_MSGIV_LEN(len) (sizeof(struct af_alg_iv) + (len)) |
| |
| typedef struct QCryptoAFAlg QCryptoAFAlg; |
| |
| struct QCryptoAFAlg { |
| QCryptoCipher base; |
| |
| int tfmfd; |
| int opfd; |
| struct msghdr *msg; |
| struct cmsghdr *cmsg; |
| }; |
| |
| /** |
| * qcrypto_afalg_comm_alloc: |
| * @type: the type of crypto operation |
| * @name: the name of crypto operation |
| * |
| * Allocate a QCryptoAFAlg object and bind itself to |
| * a AF_ALG socket. |
| * |
| * Returns: |
| * a new QCryptoAFAlg object, or NULL in error. |
| */ |
| QCryptoAFAlg * |
| qcrypto_afalg_comm_alloc(const char *type, const char *name, |
| Error **errp); |
| |
| /** |
| * afalg_comm_free: |
| * @afalg: the QCryptoAFAlg object |
| * |
| * Free the @afalg. |
| */ |
| void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg); |
| |
| #endif |