Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 75947
b: refs/heads/master
c: 7f68137
h: refs/heads/master
i:
  75945: e479096
  75943: ecde7eb
v: v3
  • Loading branch information
Herbert Xu committed Jan 10, 2008
1 parent c3476c8 commit 96c2205
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b2ab4a57b018aafbba35bff088218f5cc3d2142e
refs/heads/master: 7f6813786a6521380e1756ca5b4336bc63c5bf7d
18 changes: 11 additions & 7 deletions trunk/crypto/gcm.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct crypto_gcm_req_priv_ctx {
u8 iauth_tag[16];
u8 counter[16];
struct crypto_gcm_ghash_ctx ghash;
struct ablkcipher_request abreq;
};

static void crypto_gcm_ghash_init(struct crypto_gcm_ghash_ctx *ctx, u32 flags,
Expand Down Expand Up @@ -280,16 +281,17 @@ static void crypto_gcm_encrypt_done(struct crypto_async_request *areq, int err)

static int crypto_gcm_encrypt(struct aead_request *req)
{
struct ablkcipher_request abreq;
struct crypto_gcm_req_priv_ctx *pctx = aead_request_ctx(req);
struct ablkcipher_request *abreq = &pctx->abreq;
int err = 0;

err = crypto_gcm_init_crypt(&abreq, req, req->cryptlen,
err = crypto_gcm_init_crypt(abreq, req, req->cryptlen,
crypto_gcm_encrypt_done);
if (err)
return err;

if (req->cryptlen) {
err = crypto_ablkcipher_encrypt(&abreq);
err = crypto_ablkcipher_encrypt(abreq);
if (err)
return err;
}
Expand All @@ -304,9 +306,9 @@ static void crypto_gcm_decrypt_done(struct crypto_async_request *areq, int err)

static int crypto_gcm_decrypt(struct aead_request *req)
{
struct ablkcipher_request abreq;
struct crypto_aead *aead = crypto_aead_reqtfm(req);
struct crypto_gcm_req_priv_ctx *pctx = aead_request_ctx(req);
struct ablkcipher_request *abreq = &pctx->abreq;
u8 *auth_tag = pctx->auth_tag;
u8 *iauth_tag = pctx->iauth_tag;
struct crypto_gcm_ghash_ctx *ghash = &pctx->ghash;
Expand All @@ -318,7 +320,7 @@ static int crypto_gcm_decrypt(struct aead_request *req)
return -EINVAL;
cryptlen -= authsize;

err = crypto_gcm_init_crypt(&abreq, req, cryptlen,
err = crypto_gcm_init_crypt(abreq, req, cryptlen,
crypto_gcm_decrypt_done);
if (err)
return err;
Expand All @@ -330,7 +332,7 @@ static int crypto_gcm_decrypt(struct aead_request *req)
if (memcmp(iauth_tag, auth_tag, authsize))
return -EBADMSG;

return crypto_ablkcipher_decrypt(&abreq);
return crypto_ablkcipher_decrypt(abreq);
}

static int crypto_gcm_init_tfm(struct crypto_tfm *tfm)
Expand All @@ -353,7 +355,9 @@ static int crypto_gcm_init_tfm(struct crypto_tfm *tfm)
align = max_t(unsigned long, crypto_ablkcipher_alignmask(ctr),
__alignof__(u32) - 1);
align &= ~(crypto_tfm_ctx_alignment() - 1);
tfm->crt_aead.reqsize = align + sizeof(struct crypto_gcm_req_priv_ctx);
tfm->crt_aead.reqsize = align +
sizeof(struct crypto_gcm_req_priv_ctx) +
crypto_ablkcipher_reqsize(ctr);

return 0;
}
Expand Down

0 comments on commit 96c2205

Please sign in to comment.