]> git.saurik.com Git - apple/xnu.git/blobdiff - libkern/crypto/intel/sha1edp.h
xnu-1699.22.73.tar.gz
[apple/xnu.git] / libkern / crypto / intel / sha1edp.h
diff --git a/libkern/crypto/intel/sha1edp.h b/libkern/crypto/intel/sha1edp.h
new file mode 100644 (file)
index 0000000..ba90122
--- /dev/null
@@ -0,0 +1,51 @@
+#if !defined sha1edp_h
+#define        sha1edp_h
+
+
+/*     This file is included in sha1edpLittleEndian.s and sha1edpBigEndian.s to
+       define the symbols below for use in assembly code.
+
+       It is also included in sha1_locl.h and compiled in C to test that the
+       hard-coded values here match the values used in C.  CC_SHA1_BLOCK_BYTES
+       is defined in another header, so an error will be generated if its
+       definition here conflicts.  The other symbols are tested below, with
+       the CheckAssertion definition.
+*/
+
+
+// Number of bytes in a SHA-1 block.
+#define        CC_SHA1_BLOCK_BYTES     64
+
+// Offset of h0 to h4 members in SHA-1 context structure.
+#define        Contexth0       (0*4)
+#define        Contexth1       (1*4)
+#define        Contexth2       (2*4)
+#define        Contexth3       (3*4)
+#define        Contexth4       (4*4)
+
+
+#if !defined __ASSEMBLER__
+
+       #include <stddef.h>     // Get offsetof macro.
+
+       /*      Declare CheckAssertion so that if any of the declarations below
+               differ from it, the compiler will report an error.
+       */
+       extern char CheckAssertion[1];
+
+       /*      Ensure that Contexth0 through Contexth4 are the byte offsets of the
+               h0 through h4 members of the SHA-1 context structure.
+       */
+       extern char CheckAssertion[Contexth0 == offsetof(SHA_CTX, h0)];
+       extern char CheckAssertion[Contexth1 == offsetof(SHA_CTX, h1)];
+       extern char CheckAssertion[Contexth2 == offsetof(SHA_CTX, h2)];
+       extern char CheckAssertion[Contexth3 == offsetof(SHA_CTX, h3)];
+       extern char CheckAssertion[Contexth4 == offsetof(SHA_CTX, h4)];
+               /*      If these assertions fail, change the definitions of Contexth0 to
+                       Contexth4 to match the offsets of the members.
+               */
+
+#endif // !defined __ASSEMBLER__
+
+
+#endif // !defined sha1edp_h