Browse Source

Merge remote-tracking branch 'origin/pr/47'

Closes: 47
Rusty Russell 9 years ago
parent
commit
e05d1ff2e0

+ 1 - 0
ccan/crypto/sha256/_info

@@ -40,6 +40,7 @@ int main(int argc, char *argv[])
 		return 1;
 
 	if (strcmp(argv[1], "depends") == 0) {
+		printf("ccan/compiler\n");
 		printf("ccan/endian\n");
 		return 0;
 	}

+ 7 - 6
ccan/crypto/sha256/sha256.c

@@ -8,6 +8,7 @@
  */
 #include <ccan/crypto/sha256/sha256.h>
 #include <ccan/endian/endian.h>
+#include <ccan/compiler/compiler.h>
 #include <stdbool.h>
 #include <assert.h>
 #include <string.h>
@@ -17,16 +18,16 @@ static void invalidate_sha256(struct sha256_ctx *ctx)
 #ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL
 	ctx->c.md_len = 0;
 #else
-	ctx->bytes = -1ULL;
+	ctx->bytes = (size_t)-1;
 #endif
 }
 
-static void check_sha256(struct sha256_ctx *ctx)
+static void check_sha256(struct sha256_ctx *ctx UNUSED)
 {
 #ifdef CCAN_CRYPTO_SHA256_USE_OPENSSL
 	assert(ctx->c.md_len != 0);
 #else
-	assert(ctx->bytes != -1ULL);
+	assert(ctx->bytes != (size_t)-1);
 #endif
 }
 
@@ -166,7 +167,7 @@ static void Transform(uint32_t *s, const uint32_t *chunk)
 	s[7] += h;
 }
 
-static bool alignment_ok(const void *p, size_t n)
+static bool alignment_ok(const void *p UNUSED, size_t n UNUSED)
 {
 #if HAVE_UNALIGNED_ACCESS
 	return true;
@@ -228,9 +229,9 @@ void sha256_done(struct sha256_ctx *ctx, struct sha256 *res)
 	uint64_t sizedesc;
 	size_t i;
 
-	sizedesc = cpu_to_be64(ctx->bytes << 3);
+	sizedesc = cpu_to_be64((uint64_t)ctx->bytes << 3);
 	/* Add '1' bit to terminate, then all 0 bits, up to next block - 8. */
-	add(ctx, pad, 1 + ((119 - (ctx->bytes % 64)) % 64));
+	add(ctx, pad, 1 + ((128 - 8 - (ctx->bytes % 64) - 1) % 64));
 	/* Add number of bits of data (big endian) */
 	add(ctx, &sizedesc, 8);
 	for (i = 0; i < sizeof(ctx->s) / sizeof(ctx->s[0]); i++)

+ 5 - 6
ccan/crypto/sha256/sha256.h

@@ -21,10 +21,8 @@
  */
 struct sha256 {
 	union {
-		/* Array of chars */
-		unsigned char u8[32];
-		/* Array of uint32_t */
 		uint32_t u32[8];
+		unsigned char u8[32];
 	} u;
 };
 
@@ -47,11 +45,11 @@ struct sha256_ctx {
 	SHA256_CTX c;
 #else
 	uint32_t s[8];
-	uint64_t bytes;
 	union {
-		uint32_t u32[8];
+		uint32_t u32[16];
 		unsigned char u8[64];
 	} buf;
+	size_t bytes;
 #endif
 };
 
@@ -106,7 +104,8 @@ void sha256_init(struct sha256_ctx *ctx);
 #else
 #define SHA256_INIT							\
 	{ { 0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul,	\
-	    0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul }, 0 }
+	    0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul },	\
+	  { { 0 } }, 0 }
 #endif
 
 /**

+ 2 - 2
ccan/crypto/sha256/test/run-33-bit-test.c

@@ -30,9 +30,9 @@ static const struct sha256_ctx after_16M_by_64 = {
 	  LE32_TO_CPU(0xd407a8fc), LE32_TO_CPU(0x1fad409b),
 	  LE32_TO_CPU(0x51fa46cc), LE32_TO_CPU(0xea528ae5),
 	  LE32_TO_CPU(0x5fa58ebb), LE32_TO_CPU(0x8be97931) },
-	1073741824,
 	{ .u32 = { 0x64636261, 0x68676665, 0x65646362, 0x69686766,
-		   0x66656463, 0x6a696867, 0x67666564, 0x6b6a6968 } }
+		   0x66656463, 0x6a696867, 0x67666564, 0x6b6a6968 } },
+	1073741824
 #endif
 };