Skip to content

Commit

Permalink
crypto: seqiv - Copy AD along with plain/cipher text
Browse files Browse the repository at this point in the history
As the AD does not necessarily exist in the destination buffer
it must be copied along with the plain/cipher text.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
Herbert Xu committed May 28, 2015
1 parent 9d03aee commit d0ad1b2
Showing 1 changed file with 6 additions and 27 deletions.
33 changes: 6 additions & 27 deletions crypto/seqiv.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,19 +315,12 @@ static int seqiv_aead_encrypt_compat(struct aead_request *req)
data = req;

if (req->src != req->dst) {
struct scatterlist srcbuf[2];
struct scatterlist dstbuf[2];
struct blkcipher_desc desc = {
.tfm = ctx->null,
};

err = crypto_blkcipher_encrypt(
&desc,
scatterwalk_ffwd(dstbuf, req->dst,
req->assoclen + ivsize),
scatterwalk_ffwd(srcbuf, req->src,
req->assoclen + ivsize),
req->cryptlen - ivsize);
err = crypto_blkcipher_encrypt(&desc, req->dst, req->src,
req->assoclen + req->cryptlen);
if (err)
return err;
}
Expand Down Expand Up @@ -373,19 +366,12 @@ static int seqiv_aead_encrypt(struct aead_request *req)
info = req->iv;

if (req->src != req->dst) {
struct scatterlist src[2];
struct scatterlist dst[2];
struct blkcipher_desc desc = {
.tfm = ctx->null,
};

err = crypto_blkcipher_encrypt(
&desc,
scatterwalk_ffwd(dst, req->dst,
req->assoclen + ivsize),
scatterwalk_ffwd(src, req->src,
req->assoclen + ivsize),
req->cryptlen - ivsize);
err = crypto_blkcipher_encrypt(&desc, req->dst, req->src,
req->assoclen + req->cryptlen);
if (err)
return err;
}
Expand Down Expand Up @@ -446,19 +432,12 @@ static int seqiv_aead_decrypt_compat(struct aead_request *req)
}

if (req->src != req->dst) {
struct scatterlist srcbuf[2];
struct scatterlist dstbuf[2];
struct blkcipher_desc desc = {
.tfm = ctx->null,
};

err = crypto_blkcipher_encrypt(
&desc,
scatterwalk_ffwd(dstbuf, req->dst,
req->assoclen + ivsize),
scatterwalk_ffwd(srcbuf, req->src,
req->assoclen + ivsize),
req->cryptlen - ivsize);
err = crypto_blkcipher_encrypt(&desc, req->dst, req->src,
req->assoclen + req->cryptlen);
if (err)
return err;
}
Expand Down

0 comments on commit d0ad1b2

Please sign in to comment.