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