summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/e_aes.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp/e_aes.c')
-rw-r--r--src/lib/libcrypto/evp/e_aes.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c
index 1e4af0cb75..c7869b69ef 100644
--- a/src/lib/libcrypto/evp/e_aes.c
+++ b/src/lib/libcrypto/evp/e_aes.c
@@ -842,7 +842,10 @@ static int aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
842 gctx->ctr = NULL; 842 gctx->ctr = NULL;
843 break; 843 break;
844 } 844 }
845 else
845#endif 846#endif
847 (void)0; /* terminate potentially open 'else' */
848
846 AES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks); 849 AES_set_encrypt_key(key, ctx->key_len * 8, &gctx->ks);
847 CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks, (block128_f)AES_encrypt); 850 CRYPTO_gcm128_init(&gctx->gcm, &gctx->ks, (block128_f)AES_encrypt);
848#ifdef AES_CTR_ASM 851#ifdef AES_CTR_ASM
@@ -969,8 +972,6 @@ static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
969 972
970 if (!gctx->iv_set) 973 if (!gctx->iv_set)
971 return -1; 974 return -1;
972 if (!ctx->encrypt && gctx->taglen < 0)
973 return -1;
974 if (in) 975 if (in)
975 { 976 {
976 if (out == NULL) 977 if (out == NULL)
@@ -1012,6 +1013,8 @@ static int aes_gcm_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
1012 { 1013 {
1013 if (!ctx->encrypt) 1014 if (!ctx->encrypt)
1014 { 1015 {
1016 if (gctx->taglen < 0)
1017 return -1;
1015 if (CRYPTO_gcm128_finish(&gctx->gcm, 1018 if (CRYPTO_gcm128_finish(&gctx->gcm,
1016 ctx->buf, gctx->taglen) != 0) 1019 ctx->buf, gctx->taglen) != 0)
1017 return -1; 1020 return -1;
@@ -1083,14 +1086,17 @@ static int aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
1083 xctx->xts.block1 = (block128_f)vpaes_decrypt; 1086 xctx->xts.block1 = (block128_f)vpaes_decrypt;
1084 } 1087 }
1085 1088
1086 vpaes_set_encrypt_key(key + ctx->key_len/2, 1089 vpaes_set_encrypt_key(key + ctx->key_len/2,
1087 ctx->key_len * 4, &xctx->ks2); 1090 ctx->key_len * 4, &xctx->ks2);
1088 xctx->xts.block2 = (block128_f)vpaes_encrypt; 1091 xctx->xts.block2 = (block128_f)vpaes_encrypt;
1089 1092
1090 xctx->xts.key1 = &xctx->ks1; 1093 xctx->xts.key1 = &xctx->ks1;
1091 break; 1094 break;
1092 } 1095 }
1096 else
1093#endif 1097#endif
1098 (void)0; /* terminate potentially open 'else' */
1099
1094 if (enc) 1100 if (enc)
1095 { 1101 {
1096 AES_set_encrypt_key(key, ctx->key_len * 4, &xctx->ks1); 1102 AES_set_encrypt_key(key, ctx->key_len * 4, &xctx->ks1);
@@ -1217,6 +1223,7 @@ static int aes_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
1217 vpaes_set_encrypt_key(key, ctx->key_len*8, &cctx->ks); 1223 vpaes_set_encrypt_key(key, ctx->key_len*8, &cctx->ks);
1218 CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L, 1224 CRYPTO_ccm128_init(&cctx->ccm, cctx->M, cctx->L,
1219 &cctx->ks, (block128_f)vpaes_encrypt); 1225 &cctx->ks, (block128_f)vpaes_encrypt);
1226 cctx->str = NULL;
1220 cctx->key_set = 1; 1227 cctx->key_set = 1;
1221 break; 1228 break;
1222 } 1229 }