summaryrefslogtreecommitdiff
path: root/sha.h
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2010-03-22 22:13:04 +0100
committerNiels Möller <nisse@lysator.liu.se>2010-03-22 22:13:04 +0100
commitd8eb745be4282fc9792b63556cec8f725be12de0 (patch)
treee7d69e0d82ed7ef3960afbd0b5943da2b23e8279 /sha.h
parent03bdd346f59d460137c26f2f17dcecb37bd500d4 (diff)
downloadnettle-d8eb745be4282fc9792b63556cec8f725be12de0.tar.gz
* Makefile.in (nettle_SOURCES): Added sha512.c and sha512-meta.c.
* sha.h: Added SHA-512-related declarations. * nettle-meta.h: Likewise. * sha512-meta.c: New file. * sha512.c: New file. Rev: nettle/Makefile.in:1.14 Rev: nettle/nettle-meta.h:1.3 Rev: nettle/sha.h:1.2 Rev: nettle/sha512-meta.c:1.1 Rev: nettle/sha512.c:1.1
Diffstat (limited to 'sha.h')
-rw-r--r--sha.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/sha.h b/sha.h
index 22725d14..5040e705 100644
--- a/sha.h
+++ b/sha.h
@@ -39,6 +39,9 @@ extern "C" {
#define sha256_init nettle_sha256_init
#define sha256_update nettle_sha256_update
#define sha256_digest nettle_sha256_digest
+#define sha512_init nettle_sha512_init
+#define sha512_update nettle_sha512_update
+#define sha512_digest nettle_sha512_digest
/* SHA1 */
@@ -103,6 +106,35 @@ sha256_digest(struct sha256_ctx *ctx,
unsigned length,
uint8_t *digest);
+/* SHA512 */
+
+#define SHA512_DIGEST_SIZE 64
+#define SHA512_DATA_SIZE 128
+
+/* Digest is kept internally as 8 64-bit words. */
+#define _SHA512_DIGEST_LENGTH 8
+
+struct sha512_ctx
+{
+ uint64_t state[_SHA512_DIGEST_LENGTH]; /* State variables */
+ uint64_t count_low, count_high; /* 128-bit block count */
+ uint8_t block[SHA512_DATA_SIZE]; /* SHA512 data buffer */
+ unsigned int index; /* index into buffer */
+};
+
+void
+sha512_init(struct sha512_ctx *ctx);
+
+void
+sha512_update(struct sha512_ctx *ctx,
+ unsigned length,
+ const uint8_t *data);
+
+void
+sha512_digest(struct sha512_ctx *ctx,
+ unsigned length,
+ uint8_t *digest);
+
#ifdef __cplusplus
}
#endif