diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2011-04-18 11:28:41 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2011-04-18 11:28:41 +0000 |
commit | 3b4a855778462b17c6bcfa1a8552731a808125c6 (patch) | |
tree | a09f285d5357088ba59798e4ef97feb91bfe5020 /crypto/evp/e_aes.c | |
parent | ca8630ba81d91203dfa00e1efe700827cb37fb73 (diff) | |
download | openssl-3b4a855778462b17c6bcfa1a8552731a808125c6.tar.gz |
Don't need separate tag buffer for GCM mode: use EVP_CIPHER_CTX buf
field which is not unused for custom ciphers.
Diffstat (limited to 'crypto/evp/e_aes.c')
-rw-r--r-- | crypto/evp/e_aes.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/crypto/evp/e_aes.c b/crypto/evp/e_aes.c index 3b21ab9ccf..0a980fe82e 100644 --- a/crypto/evp/e_aes.c +++ b/crypto/evp/e_aes.c @@ -201,8 +201,6 @@ typedef struct unsigned char *iv; /* IV length */ int ivlen; - /* Tag to verify */ - unsigned char tag[16]; int taglen; /* It is OK to generate IVs */ int iv_gen; @@ -268,14 +266,14 @@ static int aes_gcm_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr) case EVP_CTRL_GCM_SET_TAG: if (arg <= 0 || arg > 16 || c->encrypt) return 0; - memcpy(gctx->tag, ptr, arg); + memcpy(c->buf, ptr, arg); gctx->taglen = arg; return 1; case EVP_CTRL_GCM_GET_TAG: if (arg <= 0 || arg > 16 || !c->encrypt || gctx->taglen < 0) return 0; - memcpy(ptr, gctx->tag, arg); + memcpy(ptr, c->buf, arg); return 1; case EVP_CTRL_GCM_SET_IV_FIXED: @@ -385,12 +383,12 @@ static int aes_gcm(EVP_CIPHER_CTX *ctx, unsigned char *out, if (!ctx->encrypt) { if (CRYPTO_gcm128_finish(&gctx->gcm, - gctx->tag, gctx->taglen) != 0) + ctx->buf, gctx->taglen) != 0) return -1; gctx->iv_set = 0; return 0; } - CRYPTO_gcm128_tag(&gctx->gcm, gctx->tag, 16); + CRYPTO_gcm128_tag(&gctx->gcm, ctx->buf, 16); gctx->taglen = 16; /* Don't reuse the IV */ gctx->iv_set = 0; |