Don't require tag before ciphertext in AESGCM mode
[openssl.git] / crypto / evp / e_aes.c
index 46ffd99e2a3b985f30738e62d1c3654d8f80784f..783ef2f7d56ee700d7df8dd044940856562422fd 100644 (file)
@@ -1343,8 +1343,6 @@ static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
 
        if (!gctx->iv_set)
                return -1;
-       if (!ctx->encrypt && gctx->taglen < 0)
-               return -1;
        if (in)
                {
                if (out == NULL)
@@ -1386,6 +1384,8 @@ static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
                {
                if (!ctx->encrypt)
                        {
+                       if (gctx->taglen < 0)
+                               return -1;
                        if (CRYPTO_gcm128_finish(&gctx->gcm,
                                        ctx->buf, gctx->taglen) != 0)
                                return -1;