12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * 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
|