summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2014-03-04 13:28:39 +0800
committerMark Brown <broonie@linaro.org>2014-07-21 18:55:35 +0100
commitfcb7731e17b879d661325cae77129582caa5bfe7 (patch)
treee80a6319a3469966a7e216e732fce647b864b7d5 /crypto
parentde6cb58fcd8244c5a370d6307e06e0066be77e05 (diff)
crypto: allow blkcipher walks over AEAD data
This adds the function blkcipher_aead_walk_virt_block, which allows the caller to use the blkcipher walk API to handle the input and output scatterlists. Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> (cherry picked from commit 4f7f1d7cff8f2c170ce0319eb4c01a82c328d34f) Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/blkcipher.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/crypto/blkcipher.c b/crypto/blkcipher.c
index a79e7e9ab86e..c3a9e82eff0a 100644
--- a/crypto/blkcipher.c
+++ b/crypto/blkcipher.c
@@ -358,6 +358,20 @@ int blkcipher_walk_virt_block(struct blkcipher_desc *desc,
}
EXPORT_SYMBOL_GPL(blkcipher_walk_virt_block);
+int blkcipher_aead_walk_virt_block(struct blkcipher_desc *desc,
+ struct blkcipher_walk *walk,
+ struct crypto_aead *tfm,
+ unsigned int blocksize)
+{
+ walk->flags &= ~BLKCIPHER_WALK_PHYS;
+ walk->walk_blocksize = blocksize;
+ walk->cipher_blocksize = crypto_aead_blocksize(tfm);
+ walk->ivsize = crypto_aead_ivsize(tfm);
+ walk->alignmask = crypto_aead_alignmask(tfm);
+ return blkcipher_walk_first(desc, walk);
+}
+EXPORT_SYMBOL_GPL(blkcipher_aead_walk_virt_block);
+
static int setkey_unaligned(struct crypto_tfm *tfm, const u8 *key,
unsigned int keylen)
{