qemu/crypto/afalgpriv.h
<<
>>
Prefs
   1/*
   2 * QEMU Crypto af_alg support
   3 *
   4 * Copyright (c) 2017 HUAWEI TECHNOLOGIES CO., LTD.
   5 *
   6 * Authors:
   7 *    Longpeng(Mike) <longpeng2@huawei.com>
   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#include "crypto/cipher.h"
  19
  20#define SALG_TYPE_LEN_MAX 14
  21#define SALG_NAME_LEN_MAX 64
  22
  23#ifndef SOL_ALG
  24#define SOL_ALG 279
  25#endif
  26
  27#define AFALG_TYPE_CIPHER "skcipher"
  28#define AFALG_TYPE_HASH "hash"
  29
  30#define ALG_OPTYPE_LEN 4
  31#define ALG_MSGIV_LEN(len) (sizeof(struct af_alg_iv) + (len))
  32
  33typedef struct QCryptoAFAlg QCryptoAFAlg;
  34
  35struct QCryptoAFAlg {
  36    QCryptoCipher base;
  37
  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 */
  55QCryptoAFAlg *
  56qcrypto_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 */
  65void qcrypto_afalg_comm_free(QCryptoAFAlg *afalg);
  66
  67#endif
  68