X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/060df5ea7c632b1ac8cc8aac1fb59758165c2084..6d2010ae8f7a6078e10b361c6962983bab233e0f:/libkern/crypto/intel/sha1edp.h?ds=inline diff --git a/libkern/crypto/intel/sha1edp.h b/libkern/crypto/intel/sha1edp.h new file mode 100644 index 000000000..ba90122fd --- /dev/null +++ b/libkern/crypto/intel/sha1edp.h @@ -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 // 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