summaryrefslogtreecommitdiffstats
path: root/common/sha-private.h
diff options
context:
space:
mode:
authorChristian Beier <dontmind@freeshell.org>2015-02-01 18:13:52 +0100
committerChristian Beier <dontmind@freeshell.org>2015-02-01 18:13:52 +0100
commit99bd5d7ca48dec0a4c1aca4cdbe7b5fb2bea2bbf (patch)
tree25fce6a4b0310cd2dcfe5cc189885b1235e449c4 /common/sha-private.h
parentcf03f71780ace5db61f194bbe6c832f32fbc10f8 (diff)
downloadlibtdevnc-99bd5d7ca48dec0a4c1aca4cdbe7b5fb2bea2bbf.tar.gz
libtdevnc-99bd5d7ca48dec0a4c1aca4cdbe7b5fb2bea2bbf.zip
Replace SHA1 implementation with the one from RFC 6234.
Diffstat (limited to 'common/sha-private.h')
-rw-r--r--common/sha-private.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/common/sha-private.h b/common/sha-private.h
new file mode 100644
index 0000000..9ccc8dd
--- /dev/null
+++ b/common/sha-private.h
@@ -0,0 +1,29 @@
+/************************ sha-private.h ************************/
+/***************** See RFC 6234 for details. *******************/
+#ifndef _SHA_PRIVATE__H
+#define _SHA_PRIVATE__H
+/*
+ * These definitions are defined in FIPS 180-3, section 4.1.
+ * Ch() and Maj() are defined identically in sections 4.1.1,
+ * 4.1.2, and 4.1.3.
+ *
+ * The definitions used in FIPS 180-3 are as follows:
+ */
+
+#ifndef USE_MODIFIED_MACROS
+#define SHA_Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z)))
+#define SHA_Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
+#else /* USE_MODIFIED_MACROS */
+/*
+ * The following definitions are equivalent and potentially faster.
+ */
+
+#define SHA_Ch(x, y, z) (((x) & ((y) ^ (z))) ^ (z))
+#define SHA_Maj(x, y, z) (((x) & ((y) | (z))) | ((y) & (z)))
+
+#endif /* USE_MODIFIED_MACROS */
+
+#define SHA_Parity(x, y, z) ((x) ^ (y) ^ (z))
+
+#endif /* _SHA_PRIVATE__H */
+