linux/include/crypto/internal/aead.h
<<
>>
Prefs
   1/*
   2 * AEAD: Authenticated Encryption with Associated Data
   3 * 
   4 * Copyright (c) 2007 Herbert Xu <herbert@gondor.apana.org.au>
   5 *
   6 * This program is free software; you can redistribute it and/or modify it
   7 * under the terms of the GNU General Public License as published by the Free
   8 * Software Foundation; either version 2 of the License, or (at your option) 
   9 * any later version.
  10 *
  11 */
  12
  13#ifndef _CRYPTO_INTERNAL_AEAD_H
  14#define _CRYPTO_INTERNAL_AEAD_H
  15
  16#include <crypto/aead.h>
  17#include <crypto/algapi.h>
  18#include <linux/types.h>
  19
  20struct rtattr;
  21
  22struct crypto_aead_spawn {
  23        struct crypto_spawn base;
  24};
  25
  26extern const struct crypto_type crypto_nivaead_type;
  27
  28static inline void crypto_set_aead_spawn(
  29        struct crypto_aead_spawn *spawn, struct crypto_instance *inst)
  30{
  31        crypto_set_spawn(&spawn->base, inst);
  32}
  33
  34int crypto_grab_aead(struct crypto_aead_spawn *spawn, const char *name,
  35                     u32 type, u32 mask);
  36
  37static inline void crypto_drop_aead(struct crypto_aead_spawn *spawn)
  38{
  39        crypto_drop_spawn(&spawn->base);
  40}
  41
  42static inline struct crypto_alg *crypto_aead_spawn_alg(
  43        struct crypto_aead_spawn *spawn)
  44{
  45        return spawn->base.alg;
  46}
  47
  48static inline struct crypto_aead *crypto_spawn_aead(
  49        struct crypto_aead_spawn *spawn)
  50{
  51        return __crypto_aead_cast(
  52                crypto_spawn_tfm(&spawn->base, CRYPTO_ALG_TYPE_AEAD,
  53                                 CRYPTO_ALG_TYPE_MASK));
  54}
  55
  56struct crypto_instance *aead_geniv_alloc(struct crypto_template *tmpl,
  57                                         struct rtattr **tb, u32 type,
  58                                         u32 mask);
  59void aead_geniv_free(struct crypto_instance *inst);
  60int aead_geniv_init(struct crypto_tfm *tfm);
  61void aead_geniv_exit(struct crypto_tfm *tfm);
  62
  63static inline struct crypto_aead *aead_geniv_base(struct crypto_aead *geniv)
  64{
  65        return crypto_aead_crt(geniv)->base;
  66}
  67
  68static inline void *aead_givcrypt_reqctx(struct aead_givcrypt_request *req)
  69{
  70        return aead_request_ctx(&req->areq);
  71}
  72
  73static inline void aead_givcrypt_complete(struct aead_givcrypt_request *req,
  74                                          int err)
  75{
  76        aead_request_complete(&req->areq, err);
  77}
  78
  79#endif  /* _CRYPTO_INTERNAL_AEAD_H */
  80
  81