Skip to content

Commit 4af2138

Browse files
committed
Merge branch 'bc/nettle-sha256'
Support for libnettle as SHA256 implementation has been added. * bc/nettle-sha256: sha256: add support for Nettle
2 parents ba69ae8 + e555735 commit 4af2138

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,8 @@ include shared.mak
182182
#
183183
# Define BLK_SHA256 to use the built-in SHA-256 routines.
184184
#
185+
# Define NETTLE_SHA256 to use the SHA-256 routines in libnettle.
186+
#
185187
# Define GCRYPT_SHA256 to use the SHA-256 routines in libgcrypt.
186188
#
187189
# Define OPENSSL_SHA256 to use the SHA-256 routines in OpenSSL.
@@ -1848,6 +1850,10 @@ ifdef OPENSSL_SHA256
18481850
EXTLIBS += $(LIB_4_CRYPTO)
18491851
BASIC_CFLAGS += -DSHA256_OPENSSL
18501852
else
1853+
ifdef NETTLE_SHA256
1854+
BASIC_CFLAGS += -DSHA256_NETTLE
1855+
EXTLIBS += -lnettle
1856+
else
18511857
ifdef GCRYPT_SHA256
18521858
BASIC_CFLAGS += -DSHA256_GCRYPT
18531859
EXTLIBS += -lgcrypt
@@ -1856,6 +1862,7 @@ else
18561862
BASIC_CFLAGS += -DSHA256_BLK
18571863
endif
18581864
endif
1865+
endif
18591866

18601867
ifdef SHA1_MAX_BLOCK_SIZE
18611868
LIB_OBJS += compat/sha1-chunked.o
@@ -3094,6 +3101,9 @@ $(SP_OBJ): %.sp: %.c %.o
30943101
sparse: $(SP_OBJ)
30953102

30963103
EXCEPT_HDRS := $(GENERATED_H) unicode-width.h compat/% xdiff/%
3104+
ifndef NETTLE_SHA256
3105+
EXCEPT_HDRS += sha256/nettle.h
3106+
endif
30973107
ifndef GCRYPT_SHA256
30983108
EXCEPT_HDRS += sha256/gcrypt.h
30993109
endif

hash.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
#include "block-sha1/sha1.h"
1717
#endif
1818

19-
#if defined(SHA256_GCRYPT)
19+
#if defined(SHA256_NETTLE)
20+
#include "sha256/nettle.h"
21+
#elif defined(SHA256_GCRYPT)
2022
#define SHA256_NEEDS_CLONE_HELPER
2123
#include "sha256/gcrypt.h"
2224
#elif defined(SHA256_OPENSSL)

sha256/nettle.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#ifndef SHA256_NETTLE_H
2+
#define SHA256_NETTLE_H
3+
4+
#include <nettle/sha2.h>
5+
6+
typedef struct sha256_ctx nettle_SHA256_CTX;
7+
8+
static inline void nettle_SHA256_Init(nettle_SHA256_CTX *ctx)
9+
{
10+
sha256_init(ctx);
11+
}
12+
13+
static inline void nettle_SHA256_Update(nettle_SHA256_CTX *ctx,
14+
const void *data,
15+
size_t len)
16+
{
17+
sha256_update(ctx, len, data);
18+
}
19+
20+
static inline void nettle_SHA256_Final(unsigned char *digest,
21+
nettle_SHA256_CTX *ctx)
22+
{
23+
sha256_digest(ctx, SHA256_DIGEST_SIZE, digest);
24+
}
25+
26+
#define platform_SHA256_CTX nettle_SHA256_CTX
27+
#define platform_SHA256_Init nettle_SHA256_Init
28+
#define platform_SHA256_Update nettle_SHA256_Update
29+
#define platform_SHA256_Final nettle_SHA256_Final
30+
31+
#endif

0 commit comments

Comments
 (0)