Clarify confusing conditionals in crypto/gcm/gcm.c.

MSVC was warning about the assignment in the |if| condition. Also, the
formatting of the negative number made it look like a subtraction.
Finally, what was being calculated was unclear.

Change-Id: If56c672302c638aac6a87f715e8dcbb87ecb56ed
Reviewed-on: https://boringssl-review.googlesource.com/6212
Reviewed-by: Adam Langley <alangley@gmail.com>
This commit is contained in:
Brian Smith 2015-10-12 11:46:18 -10:00 committed by Adam Langley
parent 9383eab5e9
commit eca509c8da

View File

@ -86,6 +86,9 @@
} \ } \
} while (0) } while (0)
// kSizeTWithoutLower4Bits is a mask that can be used to zero the lower four
// bits of a |size_t|.
static const size_t kSizeTWithoutLower4Bits = (size_t) -16;
static void gcm_init_4bit(u128 Htable[16], uint64_t H[2]) { static void gcm_init_4bit(u128 Htable[16], uint64_t H[2]) {
u128 V; u128 V;
@ -963,7 +966,6 @@ int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, const uint8_t *in,
char little; char little;
} is_endian = {1}; } is_endian = {1};
unsigned int n, ctr; unsigned int n, ctr;
size_t i;
uint64_t mlen = ctx->len.u[1]; uint64_t mlen = ctx->len.u[1];
void *key = ctx->key; void *key = ctx->key;
#ifdef GCM_FUNCREF_4BIT #ifdef GCM_FUNCREF_4BIT
@ -1022,7 +1024,8 @@ int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, const uint8_t *in,
len -= GHASH_CHUNK; len -= GHASH_CHUNK;
} }
#endif #endif
if ((i = (len & (size_t) - 16))) { size_t i = len & kSizeTWithoutLower4Bits;
if (i != 0) {
size_t j = i / 16; size_t j = i / 16;
(*stream)(in, out, j, key, ctx->Yi.c); (*stream)(in, out, j, key, ctx->Yi.c);
@ -1073,7 +1076,6 @@ int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, const uint8_t *in,
char little; char little;
} is_endian = {1}; } is_endian = {1};
unsigned int n, ctr; unsigned int n, ctr;
size_t i;
uint64_t mlen = ctx->len.u[1]; uint64_t mlen = ctx->len.u[1];
void *key = ctx->key; void *key = ctx->key;
#ifdef GCM_FUNCREF_4BIT #ifdef GCM_FUNCREF_4BIT
@ -1134,7 +1136,8 @@ int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, const uint8_t *in,
len -= GHASH_CHUNK; len -= GHASH_CHUNK;
} }
#endif #endif
if ((i = (len & (size_t) - 16))) { size_t i = len & kSizeTWithoutLower4Bits;
if (i != 0) {
size_t j = i / 16; size_t j = i / 16;
#if defined(GHASH) #if defined(GHASH)