Skip to content
This repository was archived by the owner on Mar 5, 2024. It is now read-only.

Commit d89a484

Browse files
author
Constanza Heath
committed
Fix bug in conversion from macro to inline
Signed-off-by: Constanza Heath <[email protected]>
1 parent 4808968 commit d89a484

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

lib/sha256.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
#include "sha256.h"
3838
#include "utils.h"
39+
#include <stdio.h>
3940

4041
static void compress (uint32_t *iv, const uint8_t *data);
4142

@@ -162,11 +163,14 @@ static inline uint32_t ROTR (uint32_t a, uint32_t n) {
162163
#define Ch(a,b,c) (((a) & (b)) ^ ((~(a)) & (c)))
163164
#define Maj(a,b,c) (((a) & (b)) ^ ((a) & (c)) ^ ((b) & (c)))
164165

165-
#define BigEndian(n,c) (n = (((uint32_t)(*((c)++))) << 24), \
166-
n |= ((uint32_t)(*((c)++)) << 16), \
167-
n |= ((uint32_t)(*((c)++)) << 8), \
168-
n |= ((uint32_t)(*((c)++))), \
169-
n)
166+
static inline uint32_t BigEndian (uint32_t c) {
167+
uint32_t n = 0;
168+
n |= ((c & 0x000000FF) << 24);
169+
n |= ((c & 0x0000FF00) << 8);
170+
n |= ((c & 0x00FF0000) >> 8);
171+
n |= ((c & 0xFF000000) >> 24);
172+
return n;
173+
}
170174

171175
static void compress (uint32_t *iv, const uint8_t *data) {
172176
uint32_t a, b, c, d, e, f, g, h;
@@ -180,7 +184,8 @@ static void compress (uint32_t *iv, const uint8_t *data) {
180184
e = iv[4]; f = iv[5]; g = iv[6]; h = iv[7];
181185

182186
for (i = 0; i < 16; ++i) {
183-
BigEndian(n,data);
187+
n = BigEndian(*(const uint32_t *)data);
188+
data += sizeof(uint32_t);
184189
t1 = work_space[i] = n;
185190
t1 += h + Sigma1(e) + Ch(e,f,g) + k256[i];
186191
t2 = Sigma0(a) + Maj(a,b,c);

0 commit comments

Comments
 (0)