1#if !defined sha1edp_h 2#define sha1edp_h 3 4 5/* This file is included in sha1edpLittleEndian.s and sha1edpBigEndian.s to 6 define the symbols below for use in assembly code. 7 8 It is also included in sha1_locl.h and compiled in C to test that the 9 hard-coded values here match the values used in C. CC_SHA1_BLOCK_BYTES 10 is defined in another header, so an error will be generated if its 11 definition here conflicts. The other symbols are tested below, with 12 the CheckAssertion definition. 13*/ 14 15 16// Number of bytes in a SHA-1 block. 17#define CC_SHA1_BLOCK_BYTES 64 18 19// Offset of h0 to h4 members in SHA-1 context structure. 20#define Contexth0 (0*4) 21#define Contexth1 (1*4) 22#define Contexth2 (2*4) 23#define Contexth3 (3*4) 24#define Contexth4 (4*4) 25 26 27#if !defined __ASSEMBLER__ 28 29 #include <stddef.h> // Get offsetof macro. 30 31 /* Declare CheckAssertion so that if any of the declarations below 32 differ from it, the compiler will report an error. 33 */ 34 extern char CheckAssertion[1]; 35 36 /* Ensure that Contexth0 through Contexth4 are the byte offsets of the 37 h0 through h4 members of the SHA-1 context structure. 38 */ 39 extern char CheckAssertion[Contexth0 == offsetof(SHA_CTX, h0)]; 40 extern char CheckAssertion[Contexth1 == offsetof(SHA_CTX, h1)]; 41 extern char CheckAssertion[Contexth2 == offsetof(SHA_CTX, h2)]; 42 extern char CheckAssertion[Contexth3 == offsetof(SHA_CTX, h3)]; 43 extern char CheckAssertion[Contexth4 == offsetof(SHA_CTX, h4)]; 44 /* If these assertions fail, change the definitions of Contexth0 to 45 Contexth4 to match the offsets of the members. 46 */ 47 48#endif // !defined __ASSEMBLER__ 49 50 51#endif // !defined sha1edp_h 52