VeraCrypt
aboutsummaryrefslogtreecommitdiff
path: root/src/Crypto/Sha1.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Crypto/Sha1.h')
-rw-r--r--src/Crypto/Sha1.h80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/Crypto/Sha1.h b/src/Crypto/Sha1.h
new file mode 100644
index 00000000..130a1a41
--- /dev/null
+++ b/src/Crypto/Sha1.h
@@ -0,0 +1,80 @@
+/*
+ ---------------------------------------------------------------------------
+ Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved.
+
+ LICENSE TERMS
+
+ The free distribution and use of this software is allowed (with or without
+ changes) provided that:
+
+ 1. source code distributions include the above copyright notice, this
+ list of conditions and the following disclaimer;
+
+ 2. binary distributions include the above copyright notice, this list
+ of conditions and the following disclaimer in their documentation;
+
+ 3. the name of the copyright holder is not used to endorse products
+ built using this software without specific written permission.
+
+ DISCLAIMER
+
+ This software is provided 'as is' with no explicit or implied warranties
+ in respect of its properties, including, but not limited to, correctness
+ and/or fitness for purpose.
+ ---------------------------------------------------------------------------
+ Issue Date: 26/08/2003
+*/
+
+#ifndef _SHA1_H
+#define _SHA1_H
+
+#include <limits.h>
+#include "Common/Tcdefs.h"
+
+#define SHA1_BLOCK_SIZE 64
+#define SHA1_DIGEST_SIZE 20
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/* define an unsigned 32-bit type */
+
+#if defined(_MSC_VER)
+ typedef unsigned __int32 sha1_32t;
+#elif defined(ULONG_MAX) && ULONG_MAX == 0xfffffffful
+ typedef unsigned __int32 sha1_32t;
+#elif defined(UINT_MAX) && UINT_MAX == 0xffffffff
+ typedef unsigned int sha1_32t;
+#else
+# error Please define sha1_32t as an unsigned 32 bit type in sha1.h
+#endif
+
+/* type to hold the SHA256 context */
+
+typedef struct
+{ sha1_32t count[2];
+ sha1_32t hash[5];
+ sha1_32t wbuf[16];
+} sha1_ctx;
+
+/* Note that these prototypes are the same for both bit and */
+/* byte oriented implementations. However the length fields */
+/* are in bytes or bits as appropriate for the version used */
+/* and bit sequences are input as arrays of bytes in which */
+/* bit sequences run from the most to the least significant */
+/* end of each byte */
+
+void sha1_compile(sha1_ctx ctx[1]);
+
+void sha1_begin(sha1_ctx ctx[1]);
+void sha1_hash(const unsigned char data[], unsigned __int32 len, sha1_ctx ctx[1]);
+void sha1_end(unsigned char hval[], sha1_ctx ctx[1]);
+void sha1(unsigned char hval[], const unsigned char data[], unsigned __int32 len);
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif