summaryrefslogtreecommitdiffstats
path: root/sha1.h
diff options
context:
space:
mode:
authorGravatar Linus Torvalds <torvalds@linux-foundation.org>2013-02-15 17:03:42 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-02-15 19:26:39 -0800
commita0558a87b484347a994c9fbaaa91fbbef270953c (patch)
treef96640fc83700b8e9a69b2d1cb0890a0ab61920a /sha1.h
parent306d503528fa116020cbfa57d24cb11bb5df9c14 (diff)
downloadsubsurface-a0558a87b484347a994c9fbaaa91fbbef270953c.tar.gz
Get the SHA1 routines from git instead of openssl
..they are of a higher quality anyway, and this way we have one less library to worry about. And this way there is nobody who can claim that openssl is not a system library and thus not compatible with the GPL. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'sha1.h')
-rw-r--r--sha1.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/sha1.h b/sha1.h
new file mode 100644
index 000000000..b77454aca
--- /dev/null
+++ b/sha1.h
@@ -0,0 +1,33 @@
+/*
+ * SHA1 routine optimized to do word accesses rather than byte accesses,
+ * and to avoid unnecessary copies into the context array.
+ *
+ * This was initially based on the Mozilla SHA1 implementation, although
+ * none of the original Mozilla code remains.
+ */
+
+typedef struct {
+ unsigned long long size;
+ unsigned int H[5];
+ unsigned int W[16];
+} blk_SHA_CTX;
+
+void blk_SHA1_Init(blk_SHA_CTX *ctx);
+void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *dataIn, unsigned long len);
+void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx);
+
+/* Make us use the standard names */
+#define SHA_CTX blk_SHA_CTX
+#define SHA1_Init blk_SHA1_Init
+#define SHA1_Update blk_SHA1_Update
+#define SHA1_Final blk_SHA1_Final
+
+/* Trivial helper function */
+static inline void SHA1(const void *dataIn, unsigned long len, unsigned char hashout[20])
+{
+ SHA_CTX ctx;
+
+ SHA1_Init(&ctx);
+ SHA1_Update(&ctx, dataIn, len);
+ SHA1_Final(hashout, &ctx);
+}