diff options
author | Kurt Roeckx <kurt@roeckx.be> | 2016-03-11 01:06:51 +0100 |
---|---|---|
committer | Rich Salz <rsalz@openssl.org> | 2016-03-11 16:39:10 +0100 |
commit | a57410899af60eff20dfe932283775edc2603c2a (patch) | |
tree | 31c008cf4f9ea5d804a00353e82d77fbecb1158e /crypto/blake2 | |
parent | Review comments (diff) | |
download | openssl-a57410899af60eff20dfe932283775edc2603c2a.tar.xz openssl-a57410899af60eff20dfe932283775edc2603c2a.zip |
Save leaf_node and node_offset as character array
They are not numbers in the machine byte order.
Reviewed-by: Andy Polyakov <appro@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Diffstat (limited to 'crypto/blake2')
-rw-r--r-- | crypto/blake2/blake2_impl.h | 51 | ||||
-rw-r--r-- | crypto/blake2/blake2b.c | 4 | ||||
-rw-r--r-- | crypto/blake2/blake2s.c | 8 |
3 files changed, 30 insertions, 33 deletions
diff --git a/crypto/blake2/blake2_impl.h b/crypto/blake2/blake2_impl.h index bd02de9ad2..694f9bb434 100644 --- a/crypto/blake2/blake2_impl.h +++ b/crypto/blake2/blake2_impl.h @@ -18,7 +18,7 @@ #include <string.h> #include "e_os.h" -static ossl_inline uint32_t load32(const void *src) +static ossl_inline uint32_t load32(const uint8_t *src) { const union { long one; @@ -30,16 +30,15 @@ static ossl_inline uint32_t load32(const void *src) memcpy(&w, src, sizeof(w)); return w; } else { - const uint8_t *p = (const uint8_t *)src; - uint32_t w = *p++; - w |= (uint32_t)(*p++) << 8; - w |= (uint32_t)(*p++) << 16; - w |= (uint32_t)(*p++) << 24; + uint32_t w = *src++; + w |= (uint32_t)(*src++) << 8; + w |= (uint32_t)(*src++) << 16; + w |= (uint32_t)(*src++) << 24; return w; } } -static ossl_inline uint64_t load64(const void *src) +static ossl_inline uint64_t load64(const uint8_t *src) { const union { long one; @@ -51,20 +50,19 @@ static ossl_inline uint64_t load64(const void *src) memcpy(&w, src, sizeof(w)); return w; } else { - const uint8_t *p = (const uint8_t *)src; - uint64_t w = *p++; - w |= (uint64_t)(*p++) << 8; - w |= (uint64_t)(*p++) << 16; - w |= (uint64_t)(*p++) << 24; - w |= (uint64_t)(*p++) << 32; - w |= (uint64_t)(*p++) << 40; - w |= (uint64_t)(*p++) << 48; - w |= (uint64_t)(*p++) << 56; + uint64_t w = *src++; + w |= (uint64_t)(*src++) << 8; + w |= (uint64_t)(*src++) << 16; + w |= (uint64_t)(*src++) << 24; + w |= (uint64_t)(*src++) << 32; + w |= (uint64_t)(*src++) << 40; + w |= (uint64_t)(*src++) << 48; + w |= (uint64_t)(*src++) << 56; return w; } } -static ossl_inline void store32(void *dst, uint32_t w) +static ossl_inline void store32(uint8_t *dst, uint32_t w) { const union { long one; @@ -82,7 +80,7 @@ static ossl_inline void store32(void *dst, uint32_t w) } } -static ossl_inline void store64(void *dst, uint64_t w) +static ossl_inline void store64(uint8_t *dst, uint64_t w) { const union { long one; @@ -100,19 +98,18 @@ static ossl_inline void store64(void *dst, uint64_t w) } } -static ossl_inline uint64_t load48(const void *src) +static ossl_inline uint64_t load48(const uint8_t *src) { - const uint8_t *p = (const uint8_t *)src; - uint64_t w = *p++; - w |= (uint64_t)(*p++) << 8; - w |= (uint64_t)(*p++) << 16; - w |= (uint64_t)(*p++) << 24; - w |= (uint64_t)(*p++) << 32; - w |= (uint64_t)(*p++) << 40; + uint64_t w = *src++; + w |= (uint64_t)(*src++) << 8; + w |= (uint64_t)(*src++) << 16; + w |= (uint64_t)(*src++) << 24; + w |= (uint64_t)(*src++) << 32; + w |= (uint64_t)(*src++) << 40; return w; } -static ossl_inline void store48(void *dst, uint64_t w) +static ossl_inline void store48(uint8_t *dst, uint64_t w) { uint8_t *p = (uint8_t *)dst; *p++ = (uint8_t)w; diff --git a/crypto/blake2/blake2b.c b/crypto/blake2/blake2b.c index d187e6bd21..621949013a 100644 --- a/crypto/blake2/blake2b.c +++ b/crypto/blake2/blake2b.c @@ -95,8 +95,8 @@ int BLAKE2b_Init(BLAKE2B_CTX *c) P->key_length = 0; P->fanout = 1; P->depth = 1; - store32(&P->leaf_length, 0); - store64(&P->node_offset, 0); + store32(P->leaf_length, 0); + store64(P->node_offset, 0); P->node_depth = 0; P->inner_length = 0; memset(P->reserved, 0, sizeof(P->reserved)); diff --git a/crypto/blake2/blake2s.c b/crypto/blake2/blake2s.c index eee615d944..75be06a79e 100644 --- a/crypto/blake2/blake2s.c +++ b/crypto/blake2/blake2s.c @@ -70,7 +70,7 @@ static ossl_inline void blake2s_init0(BLAKE2S_CTX *S) /* init2 xors IV with input parameter block */ static void blake2s_init_param(BLAKE2S_CTX *S, const BLAKE2S_PARAM *P) { - const uint32_t *p = (const uint32_t *)(P); + const uint8_t *p = (const uint8_t *)(P); size_t i; /* The param struct is carefully hand packed, and should be 32 bytes on @@ -79,7 +79,7 @@ static void blake2s_init_param(BLAKE2S_CTX *S, const BLAKE2S_PARAM *P) blake2s_init0(S); /* IV XOR ParamBlock */ for(i = 0; i < 8; ++i) { - S->h[i] ^= load32(&p[i]); + S->h[i] ^= load32(&p[i*4]); } } @@ -92,8 +92,8 @@ int BLAKE2s_Init(BLAKE2S_CTX *c) P->key_length = 0; P->fanout = 1; P->depth = 1; - store32(&P->leaf_length, 0); - store48(&P->node_offset, 0); + store32(P->leaf_length, 0); + store48(P->node_offset, 0); P->node_depth = 0; P->inner_length = 0; memset(P->salt, 0, sizeof(P->salt)); |