summaryrefslogtreecommitdiffstats
path: root/crypto/blake2
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2016-03-11 01:06:51 +0100
committerRich Salz <rsalz@openssl.org>2016-03-11 10:39:10 -0500
commita57410899af60eff20dfe932283775edc2603c2a (patch)
tree31c008cf4f9ea5d804a00353e82d77fbecb1158e /crypto/blake2
parent208527a75dd9584e2715c0eebcfad8c730d0dfae (diff)
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.h51
-rw-r--r--crypto/blake2/blake2b.c4
-rw-r--r--crypto/blake2/blake2s.c8
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));