From d5b2b177280c9a343de1f2890ad745bdd198da5d Mon Sep 17 00:00:00 2001 From: Adam Langley Date: Fri, 23 Oct 2020 12:48:18 -0700 Subject: [PATCH] Define a constant for the standard GCM nonce length. We use this constant a lot in e_aes.c, but we write it out every time. Change-Id: Iaa92efb391def6640349940c682d9f70ddaa23d5 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/43685 Reviewed-by: David Benjamin --- crypto/fipsmodule/cipher/e_aes.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/crypto/fipsmodule/cipher/e_aes.c b/crypto/fipsmodule/cipher/e_aes.c index 8f4907f3a..6d9b40db9 100644 --- a/crypto/fipsmodule/cipher/e_aes.c +++ b/crypto/fipsmodule/cipher/e_aes.c @@ -68,6 +68,8 @@ OPENSSL_MSVC_PRAGMA(warning(push)) OPENSSL_MSVC_PRAGMA(warning(disable: 4702)) // Unreachable code. +#define AES_GCM_NONCE_LENGTH 12 + #if defined(BSAES) static void vpaes_ctr32_encrypt_blocks_with_bsaes(const uint8_t *in, uint8_t *out, size_t blocks, @@ -630,7 +632,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_128_gcm_generic) { out->nid = NID_aes_128_gcm; out->block_size = 1; out->key_len = 16; - out->iv_len = 12; + out->iv_len = AES_GCM_NONCE_LENGTH; out->ctx_size = sizeof(EVP_AES_GCM_CTX) + EVP_AES_GCM_CTX_PADDING; out->flags = EVP_CIPH_GCM_MODE | EVP_CIPH_CUSTOM_IV | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | @@ -698,7 +700,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_192_gcm_generic) { out->nid = NID_aes_192_gcm; out->block_size = 1; out->key_len = 24; - out->iv_len = 12; + out->iv_len = AES_GCM_NONCE_LENGTH; out->ctx_size = sizeof(EVP_AES_GCM_CTX) + EVP_AES_GCM_CTX_PADDING; out->flags = EVP_CIPH_GCM_MODE | EVP_CIPH_CUSTOM_IV | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | @@ -766,7 +768,7 @@ DEFINE_LOCAL_DATA(EVP_CIPHER, aes_256_gcm_generic) { out->nid = NID_aes_256_gcm; out->block_size = 1; out->key_len = 32; - out->iv_len = 12; + out->iv_len = AES_GCM_NONCE_LENGTH; out->ctx_size = sizeof(EVP_AES_GCM_CTX) + EVP_AES_GCM_CTX_PADDING; out->flags = EVP_CIPH_GCM_MODE | EVP_CIPH_CUSTOM_IV | EVP_CIPH_CUSTOM_COPY | EVP_CIPH_FLAG_CUSTOM_CIPHER | EVP_CIPH_ALWAYS_CALL_INIT | @@ -1048,7 +1050,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 16; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1063,7 +1065,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_192_gcm) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 24; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1078,7 +1080,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 32; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1128,7 +1130,7 @@ static int aead_aes_gcm_tls12_seal_scatter( struct aead_aes_gcm_tls12_ctx *gcm_ctx = (struct aead_aes_gcm_tls12_ctx *) &ctx->state; - if (nonce_len != 12) { + if (nonce_len != AES_GCM_NONCE_LENGTH) { OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE); return 0; } @@ -1155,7 +1157,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm_tls12) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 16; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1170,7 +1172,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls12) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 32; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1223,7 +1225,7 @@ static int aead_aes_gcm_tls13_seal_scatter( struct aead_aes_gcm_tls13_ctx *gcm_ctx = (struct aead_aes_gcm_tls13_ctx *) &ctx->state; - if (nonce_len != 12) { + if (nonce_len != AES_GCM_NONCE_LENGTH) { OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_UNSUPPORTED_NONCE_SIZE); return 0; } @@ -1261,7 +1263,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_128_gcm_tls13) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 16; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1; @@ -1276,7 +1278,7 @@ DEFINE_METHOD_FUNCTION(EVP_AEAD, EVP_aead_aes_256_gcm_tls13) { memset(out, 0, sizeof(EVP_AEAD)); out->key_len = 32; - out->nonce_len = 12; + out->nonce_len = AES_GCM_NONCE_LENGTH; out->overhead = EVP_AEAD_AES_GCM_TAG_LEN; out->max_tag_len = EVP_AEAD_AES_GCM_TAG_LEN; out->seal_scatter_supports_extra_in = 1;