From 61349d3d273aa23935b0c413c5885005db2669db Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Fri, 29 Nov 2013 05:33:12 +0100 Subject: Compile with -std=c99 and restructure some code to ensure there is no invalid aliasing (hopefully) --- src/hkdf_sha256.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'src/hkdf_sha256.c') diff --git a/src/hkdf_sha256.c b/src/hkdf_sha256.c index 8d04ae0..26568f9 100644 --- a/src/hkdf_sha256.c +++ b/src/hkdf_sha256.c @@ -34,20 +34,19 @@ void fastd_hkdf_sha256_expand(fastd_sha256_t *out, size_t blocks, fastd_sha256_t return; size_t len = sizeof(fastd_sha256_t) + infolen + 1; + uint32_t buf[(len+3)/4]; - uint8_t buf[len] __attribute__((aligned(4))); + memset(buf, 0, FASTD_SHA256_HASH_BYTES); + memcpy(buf+FASTD_SHA256_HASH_WORDS, info, infolen); + ((uint8_t*)buf)[len-1] = 0x01; - memset(buf, 0, sizeof(fastd_sha256_t)); - memcpy(buf+sizeof(fastd_sha256_t), info, infolen); - buf[len-1] = 0x01; - - fastd_hmacsha256(out, prk->w, (uint32_t*)(buf+sizeof(fastd_sha256_t)), infolen + 1); + fastd_hmacsha256(out, prk->w, buf+FASTD_SHA256_HASH_WORDS, infolen + 1); while (--blocks) { - memcpy(buf, out, sizeof(fastd_sha256_t)); + memcpy(buf, out, FASTD_SHA256_HASH_BYTES); out++; - buf[len-1]++; + ((uint8_t*)buf)[len-1]++; - fastd_hmacsha256(out, prk->w, (uint32_t*)buf, len); + fastd_hmacsha256(out, prk->w, buf, len); } } -- cgit v1.2.3