2121#include "hashlib.h"
2222
2323
24- /* Endianness testing and definitions */
25- #define TestEndianness (variable ) {int i=1; variable=PCT_BIG_ENDIAN;\
26- if (*((char*)&i)==1) variable=PCT_LITTLE_ENDIAN;}
27-
28- #define PCT_LITTLE_ENDIAN 1
29- #define PCT_BIG_ENDIAN 0
30-
3124/* Some useful types */
3225
3326typedef unsigned char SHA_BYTE ;
@@ -50,21 +43,18 @@ typedef struct {
5043 SHA_INT32 digest [8 ]; /* Message digest */
5144 SHA_INT32 count_lo , count_hi ; /* 64-bit bit count */
5245 SHA_BYTE data [SHA_BLOCKSIZE ]; /* SHA data buffer */
53- int Endianness ;
5446 int local ; /* unprocessed amount in data */
5547 int digestsize ;
5648} SHAobject ;
5749
5850/* When run on a little-endian CPU we need to perform byte reversal on an
5951 array of longwords. */
6052
61- static void longReverse (SHA_INT32 * buffer , int byteCount , int Endianness )
53+ #if PY_LITTLE_ENDIAN
54+ static void longReverse (SHA_INT32 * buffer , int byteCount )
6255{
6356 SHA_INT32 value ;
6457
65- if ( Endianness == PCT_BIG_ENDIAN )
66- return ;
67-
6858 byteCount /= sizeof (* buffer );
6959 while (byteCount -- ) {
7060 value = * buffer ;
@@ -73,10 +63,10 @@ static void longReverse(SHA_INT32 *buffer, int byteCount, int Endianness)
7363 * buffer ++ = ( value << 16 ) | ( value >> 16 );
7464 }
7565}
66+ #endif
7667
7768static void SHAcopy (SHAobject * src , SHAobject * dest )
7869{
79- dest -> Endianness = src -> Endianness ;
8070 dest -> local = src -> local ;
8171 dest -> digestsize = src -> digestsize ;
8272 dest -> count_lo = src -> count_lo ;
@@ -131,7 +121,9 @@ sha_transform(SHAobject *sha_info)
131121 SHA_INT32 S [8 ], W [64 ], t0 , t1 ;
132122
133123 memcpy (W , sha_info -> data , sizeof (sha_info -> data ));
134- longReverse (W , (int )sizeof (sha_info -> data ), sha_info -> Endianness );
124+ #if PY_LITTLE_ENDIAN
125+ longReverse (W , (int )sizeof (sha_info -> data ));
126+ #endif
135127
136128 for (i = 16 ; i < 64 ; ++ i ) {
137129 W [i ] = Gamma1 (W [i - 2 ]) + W [i - 7 ] + Gamma0 (W [i - 15 ]) + W [i - 16 ];
@@ -228,7 +220,6 @@ sha_transform(SHAobject *sha_info)
228220static void
229221sha_init (SHAobject * sha_info )
230222{
231- TestEndianness (sha_info -> Endianness )
232223 sha_info -> digest [0 ] = 0x6A09E667L ;
233224 sha_info -> digest [1 ] = 0xBB67AE85L ;
234225 sha_info -> digest [2 ] = 0x3C6EF372L ;
@@ -246,7 +237,6 @@ sha_init(SHAobject *sha_info)
246237static void
247238sha224_init (SHAobject * sha_info )
248239{
249- TestEndianness (sha_info -> Endianness )
250240 sha_info -> digest [0 ] = 0xc1059ed8L ;
251241 sha_info -> digest [1 ] = 0x367cd507L ;
252242 sha_info -> digest [2 ] = 0x3070dd17L ;
0 commit comments