crypto: aead - Remove old AEAD interfaces
Now that the AEAD conversion is complete we can rip out the old AEAD interafce and associated code. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
0a139416ee
commit
b0d955ba46
5 changed files with 28 additions and 818 deletions
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* AEAD: Authenticated Encryption with Associated Data
|
||||
*
|
||||
* Copyright (c) 2007 Herbert Xu <herbert@gondor.apana.org.au>
|
||||
* Copyright (c) 2007-2015 Herbert Xu <herbert@gondor.apana.org.au>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
|
@ -71,14 +71,14 @@
|
|||
* in the first scatter gather list entry pointing to a NULL buffer.
|
||||
*/
|
||||
|
||||
struct crypto_aead;
|
||||
|
||||
/**
|
||||
* struct aead_request - AEAD request
|
||||
* @base: Common attributes for async crypto requests
|
||||
* @old: Boolean whether the old or new AEAD API is used
|
||||
* @assoclen: Length in bytes of associated data for authentication
|
||||
* @cryptlen: Length of data to be encrypted or decrypted
|
||||
* @iv: Initialisation vector
|
||||
* @assoc: Associated data
|
||||
* @src: Source data
|
||||
* @dst: Destination data
|
||||
* @__ctx: Start of private context data
|
||||
|
@ -86,33 +86,17 @@
|
|||
struct aead_request {
|
||||
struct crypto_async_request base;
|
||||
|
||||
bool old;
|
||||
|
||||
unsigned int assoclen;
|
||||
unsigned int cryptlen;
|
||||
|
||||
u8 *iv;
|
||||
|
||||
struct scatterlist *assoc;
|
||||
struct scatterlist *src;
|
||||
struct scatterlist *dst;
|
||||
|
||||
void *__ctx[] CRYPTO_MINALIGN_ATTR;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct aead_givcrypt_request - AEAD request with IV generation
|
||||
* @seq: Sequence number for IV generation
|
||||
* @giv: Space for generated IV
|
||||
* @areq: The AEAD request itself
|
||||
*/
|
||||
struct aead_givcrypt_request {
|
||||
u64 seq;
|
||||
u8 *giv;
|
||||
|
||||
struct aead_request areq;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct aead_alg - AEAD cipher definition
|
||||
* @maxauthsize: Set the maximum authentication tag size supported by the
|
||||
|
@ -165,16 +149,6 @@ struct aead_alg {
|
|||
};
|
||||
|
||||
struct crypto_aead {
|
||||
int (*setkey)(struct crypto_aead *tfm, const u8 *key,
|
||||
unsigned int keylen);
|
||||
int (*setauthsize)(struct crypto_aead *tfm, unsigned int authsize);
|
||||
int (*encrypt)(struct aead_request *req);
|
||||
int (*decrypt)(struct aead_request *req);
|
||||
int (*givencrypt)(struct aead_givcrypt_request *req);
|
||||
int (*givdecrypt)(struct aead_givcrypt_request *req);
|
||||
|
||||
struct crypto_aead *child;
|
||||
|
||||
unsigned int authsize;
|
||||
unsigned int reqsize;
|
||||
|
||||
|
@ -216,16 +190,6 @@ static inline void crypto_free_aead(struct crypto_aead *tfm)
|
|||
crypto_destroy_tfm(tfm, crypto_aead_tfm(tfm));
|
||||
}
|
||||
|
||||
static inline struct crypto_aead *crypto_aead_crt(struct crypto_aead *tfm)
|
||||
{
|
||||
return tfm;
|
||||
}
|
||||
|
||||
static inline struct old_aead_alg *crypto_old_aead_alg(struct crypto_aead *tfm)
|
||||
{
|
||||
return &crypto_aead_tfm(tfm)->__crt_alg->cra_aead;
|
||||
}
|
||||
|
||||
static inline struct aead_alg *crypto_aead_alg(struct crypto_aead *tfm)
|
||||
{
|
||||
return container_of(crypto_aead_tfm(tfm)->__crt_alg,
|
||||
|
@ -234,8 +198,7 @@ static inline struct aead_alg *crypto_aead_alg(struct crypto_aead *tfm)
|
|||
|
||||
static inline unsigned int crypto_aead_alg_ivsize(struct aead_alg *alg)
|
||||
{
|
||||
return alg->base.cra_aead.encrypt ? alg->base.cra_aead.ivsize :
|
||||
alg->ivsize;
|
||||
return alg->ivsize;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -361,7 +324,7 @@ static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req)
|
|||
*/
|
||||
static inline int crypto_aead_encrypt(struct aead_request *req)
|
||||
{
|
||||
return crypto_aead_reqtfm(req)->encrypt(req);
|
||||
return crypto_aead_alg(crypto_aead_reqtfm(req))->encrypt(req);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -388,10 +351,12 @@ static inline int crypto_aead_encrypt(struct aead_request *req)
|
|||
*/
|
||||
static inline int crypto_aead_decrypt(struct aead_request *req)
|
||||
{
|
||||
if (req->cryptlen < crypto_aead_authsize(crypto_aead_reqtfm(req)))
|
||||
struct crypto_aead *aead = crypto_aead_reqtfm(req);
|
||||
|
||||
if (req->cryptlen < crypto_aead_authsize(aead))
|
||||
return -EINVAL;
|
||||
|
||||
return crypto_aead_reqtfm(req)->decrypt(req);
|
||||
return crypto_aead_alg(aead)->decrypt(req);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -411,7 +376,10 @@ static inline int crypto_aead_decrypt(struct aead_request *req)
|
|||
*
|
||||
* Return: number of bytes
|
||||
*/
|
||||
unsigned int crypto_aead_reqsize(struct crypto_aead *tfm);
|
||||
static inline unsigned int crypto_aead_reqsize(struct crypto_aead *tfm)
|
||||
{
|
||||
return tfm->reqsize;
|
||||
}
|
||||
|
||||
/**
|
||||
* aead_request_set_tfm() - update cipher handle reference in request
|
||||
|
@ -424,7 +392,7 @@ unsigned int crypto_aead_reqsize(struct crypto_aead *tfm);
|
|||
static inline void aead_request_set_tfm(struct aead_request *req,
|
||||
struct crypto_aead *tfm)
|
||||
{
|
||||
req->base.tfm = crypto_aead_tfm(tfm->child);
|
||||
req->base.tfm = crypto_aead_tfm(tfm);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -549,23 +517,6 @@ static inline void aead_request_set_crypt(struct aead_request *req,
|
|||
req->iv = iv;
|
||||
}
|
||||
|
||||
/**
|
||||
* aead_request_set_assoc() - set the associated data scatter / gather list
|
||||
* @req: request handle
|
||||
* @assoc: associated data scatter / gather list
|
||||
* @assoclen: number of bytes to process from @assoc
|
||||
*
|
||||
* Obsolete, do not use.
|
||||
*/
|
||||
static inline void aead_request_set_assoc(struct aead_request *req,
|
||||
struct scatterlist *assoc,
|
||||
unsigned int assoclen)
|
||||
{
|
||||
req->assoc = assoc;
|
||||
req->assoclen = assoclen;
|
||||
req->old = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* aead_request_set_ad - set associated data information
|
||||
* @req: request handle
|
||||
|
@ -578,77 +529,6 @@ static inline void aead_request_set_ad(struct aead_request *req,
|
|||
unsigned int assoclen)
|
||||
{
|
||||
req->assoclen = assoclen;
|
||||
req->old = false;
|
||||
}
|
||||
|
||||
static inline struct crypto_aead *aead_givcrypt_reqtfm(
|
||||
struct aead_givcrypt_request *req)
|
||||
{
|
||||
return crypto_aead_reqtfm(&req->areq);
|
||||
}
|
||||
|
||||
static inline int crypto_aead_givencrypt(struct aead_givcrypt_request *req)
|
||||
{
|
||||
return aead_givcrypt_reqtfm(req)->givencrypt(req);
|
||||
};
|
||||
|
||||
static inline int crypto_aead_givdecrypt(struct aead_givcrypt_request *req)
|
||||
{
|
||||
return aead_givcrypt_reqtfm(req)->givdecrypt(req);
|
||||
};
|
||||
|
||||
static inline void aead_givcrypt_set_tfm(struct aead_givcrypt_request *req,
|
||||
struct crypto_aead *tfm)
|
||||
{
|
||||
req->areq.base.tfm = crypto_aead_tfm(tfm);
|
||||
}
|
||||
|
||||
static inline struct aead_givcrypt_request *aead_givcrypt_alloc(
|
||||
struct crypto_aead *tfm, gfp_t gfp)
|
||||
{
|
||||
struct aead_givcrypt_request *req;
|
||||
|
||||
req = kmalloc(sizeof(struct aead_givcrypt_request) +
|
||||
crypto_aead_reqsize(tfm), gfp);
|
||||
|
||||
if (likely(req))
|
||||
aead_givcrypt_set_tfm(req, tfm);
|
||||
|
||||
return req;
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_free(struct aead_givcrypt_request *req)
|
||||
{
|
||||
kfree(req);
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_set_callback(
|
||||
struct aead_givcrypt_request *req, u32 flags,
|
||||
crypto_completion_t compl, void *data)
|
||||
{
|
||||
aead_request_set_callback(&req->areq, flags, compl, data);
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_set_crypt(struct aead_givcrypt_request *req,
|
||||
struct scatterlist *src,
|
||||
struct scatterlist *dst,
|
||||
unsigned int nbytes, void *iv)
|
||||
{
|
||||
aead_request_set_crypt(&req->areq, src, dst, nbytes, iv);
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_set_assoc(struct aead_givcrypt_request *req,
|
||||
struct scatterlist *assoc,
|
||||
unsigned int assoclen)
|
||||
{
|
||||
aead_request_set_assoc(&req->areq, assoc, assoclen);
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_set_giv(struct aead_givcrypt_request *req,
|
||||
u8 *giv, u64 seq)
|
||||
{
|
||||
req->giv = giv;
|
||||
req->seq = seq;
|
||||
}
|
||||
|
||||
#endif /* _CRYPTO_AEAD_H */
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* AEAD: Authenticated Encryption with Associated Data
|
||||
*
|
||||
* Copyright (c) 2007 Herbert Xu <herbert@gondor.apana.org.au>
|
||||
* Copyright (c) 2007-2015 Herbert Xu <herbert@gondor.apana.org.au>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
|
@ -39,20 +39,11 @@ struct aead_queue {
|
|||
struct crypto_queue base;
|
||||
};
|
||||
|
||||
extern const struct crypto_type crypto_aead_type;
|
||||
extern const struct crypto_type crypto_nivaead_type;
|
||||
|
||||
static inline void *crypto_aead_ctx(struct crypto_aead *tfm)
|
||||
{
|
||||
return crypto_tfm_ctx(&tfm->base);
|
||||
}
|
||||
|
||||
static inline struct crypto_instance *crypto_aead_alg_instance(
|
||||
struct crypto_aead *aead)
|
||||
{
|
||||
return crypto_tfm_alg_instance(&aead->base);
|
||||
}
|
||||
|
||||
static inline struct crypto_instance *aead_crypto_instance(
|
||||
struct aead_instance *inst)
|
||||
{
|
||||
|
@ -66,7 +57,7 @@ static inline struct aead_instance *aead_instance(struct crypto_instance *inst)
|
|||
|
||||
static inline struct aead_instance *aead_alg_instance(struct crypto_aead *aead)
|
||||
{
|
||||
return aead_instance(crypto_aead_alg_instance(aead));
|
||||
return aead_instance(crypto_tfm_alg_instance(&aead->base));
|
||||
}
|
||||
|
||||
static inline void *aead_instance_ctx(struct aead_instance *inst)
|
||||
|
@ -95,8 +86,6 @@ static inline void crypto_set_aead_spawn(
|
|||
crypto_set_spawn(&spawn->base, inst);
|
||||
}
|
||||
|
||||
struct crypto_alg *crypto_lookup_aead(const char *name, u32 type, u32 mask);
|
||||
|
||||
int crypto_grab_aead(struct crypto_aead_spawn *spawn, const char *name,
|
||||
u32 type, u32 mask);
|
||||
|
||||
|
@ -105,12 +94,6 @@ static inline void crypto_drop_aead(struct crypto_aead_spawn *spawn)
|
|||
crypto_drop_spawn(&spawn->base);
|
||||
}
|
||||
|
||||
static inline struct crypto_alg *crypto_aead_spawn_alg(
|
||||
struct crypto_aead_spawn *spawn)
|
||||
{
|
||||
return spawn->base.alg;
|
||||
}
|
||||
|
||||
static inline struct aead_alg *crypto_spawn_aead_alg(
|
||||
struct crypto_aead_spawn *spawn)
|
||||
{
|
||||
|
@ -123,32 +106,15 @@ static inline struct crypto_aead *crypto_spawn_aead(
|
|||
return crypto_spawn_tfm2(&spawn->base);
|
||||
}
|
||||
|
||||
static inline struct crypto_aead *aead_geniv_base(struct crypto_aead *geniv)
|
||||
{
|
||||
return geniv->child;
|
||||
}
|
||||
|
||||
static inline void *aead_givcrypt_reqctx(struct aead_givcrypt_request *req)
|
||||
{
|
||||
return aead_request_ctx(&req->areq);
|
||||
}
|
||||
|
||||
static inline void aead_givcrypt_complete(struct aead_givcrypt_request *req,
|
||||
int err)
|
||||
{
|
||||
aead_request_complete(&req->areq, err);
|
||||
}
|
||||
|
||||
static inline void crypto_aead_set_reqsize(struct crypto_aead *aead,
|
||||
unsigned int reqsize)
|
||||
{
|
||||
crypto_aead_crt(aead)->reqsize = reqsize;
|
||||
aead->reqsize = reqsize;
|
||||
}
|
||||
|
||||
static inline unsigned int crypto_aead_alg_maxauthsize(struct aead_alg *alg)
|
||||
{
|
||||
return alg->base.cra_aead.encrypt ? alg->base.cra_aead.maxauthsize :
|
||||
alg->maxauthsize;
|
||||
return alg->maxauthsize;
|
||||
}
|
||||
|
||||
static inline unsigned int crypto_aead_maxauthsize(struct crypto_aead *aead)
|
||||
|
|
|
@ -27,8 +27,6 @@ struct aead_geniv_ctx {
|
|||
struct aead_instance *aead_geniv_alloc(struct crypto_template *tmpl,
|
||||
struct rtattr **tb, u32 type, u32 mask);
|
||||
void aead_geniv_free(struct aead_instance *inst);
|
||||
int aead_geniv_init(struct crypto_tfm *tfm);
|
||||
void aead_geniv_exit(struct crypto_tfm *tfm);
|
||||
int aead_init_geniv(struct crypto_aead *tfm);
|
||||
void aead_exit_geniv(struct crypto_aead *tfm);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue