comparison src/lib/sha1.c @ 8572:9ec2882243a6 HEAD

Try to use (Apple) gcc's __BIG_ENDIAN__ and __LITTLE_ENDIAN__ macros if possible. Based on a patch by Apple.
author Timo Sirainen <tss@iki.fi>
date Fri, 19 Dec 2008 08:50:14 +0200
parents a8b515e1a26f
children
comparison
equal deleted inserted replaced
8571:563e61fa7726 8572:9ec2882243a6
78 { 78 {
79 uint32_t a, b, c, d, e; 79 uint32_t a, b, c, d, e;
80 size_t t, s; 80 size_t t, s;
81 uint32_t tmp; 81 uint32_t tmp;
82 82
83 #ifndef WORDS_BIGENDIAN 83 #if !WORDS_BIGENDIAN
84 struct sha1_ctxt tctxt; 84 struct sha1_ctxt tctxt;
85 memmove(&tctxt.m.b8[0], &ctxt->m.b8[0], 64); 85 memmove(&tctxt.m.b8[0], &ctxt->m.b8[0], 64);
86 ctxt->m.b8[0] = tctxt.m.b8[3]; ctxt->m.b8[1] = tctxt.m.b8[2]; 86 ctxt->m.b8[0] = tctxt.m.b8[3]; ctxt->m.b8[1] = tctxt.m.b8[2];
87 ctxt->m.b8[2] = tctxt.m.b8[1]; ctxt->m.b8[3] = tctxt.m.b8[0]; 87 ctxt->m.b8[2] = tctxt.m.b8[1]; ctxt->m.b8[3] = tctxt.m.b8[0];
88 ctxt->m.b8[4] = tctxt.m.b8[7]; ctxt->m.b8[5] = tctxt.m.b8[6]; 88 ctxt->m.b8[4] = tctxt.m.b8[7]; ctxt->m.b8[5] = tctxt.m.b8[6];
187 padlen = 64 - padstart; /* should be 64 */ 187 padlen = 64 - padstart; /* should be 64 */
188 } 188 }
189 memset(&ctxt->m.b8[padstart], 0, padlen - 8); 189 memset(&ctxt->m.b8[padstart], 0, padlen - 8);
190 COUNT += (padlen - 8); 190 COUNT += (padlen - 8);
191 COUNT %= 64; 191 COUNT %= 64;
192 #ifdef WORDS_BIGENDIAN 192 #if WORDS_BIGENDIAN
193 PUTPAD(ctxt->c.b8[0]); PUTPAD(ctxt->c.b8[1]); 193 PUTPAD(ctxt->c.b8[0]); PUTPAD(ctxt->c.b8[1]);
194 PUTPAD(ctxt->c.b8[2]); PUTPAD(ctxt->c.b8[3]); 194 PUTPAD(ctxt->c.b8[2]); PUTPAD(ctxt->c.b8[3]);
195 PUTPAD(ctxt->c.b8[4]); PUTPAD(ctxt->c.b8[5]); 195 PUTPAD(ctxt->c.b8[4]); PUTPAD(ctxt->c.b8[5]);
196 PUTPAD(ctxt->c.b8[6]); PUTPAD(ctxt->c.b8[7]); 196 PUTPAD(ctxt->c.b8[6]); PUTPAD(ctxt->c.b8[7]);
197 #else 197 #else
233 { 233 {
234 uint8_t *digest; 234 uint8_t *digest;
235 235
236 digest = (uint8_t *)digest0; 236 digest = (uint8_t *)digest0;
237 sha1_pad(ctxt); 237 sha1_pad(ctxt);
238 #ifdef WORDS_BIGENDIAN 238 #if WORDS_BIGENDIAN
239 memmove(digest, &ctxt->h.b8[0], 20); 239 memmove(digest, &ctxt->h.b8[0], 20);
240 #else 240 #else
241 digest[0] = ctxt->h.b8[3]; digest[1] = ctxt->h.b8[2]; 241 digest[0] = ctxt->h.b8[3]; digest[1] = ctxt->h.b8[2];
242 digest[2] = ctxt->h.b8[1]; digest[3] = ctxt->h.b8[0]; 242 digest[2] = ctxt->h.b8[1]; digest[3] = ctxt->h.b8[0];
243 digest[4] = ctxt->h.b8[7]; digest[5] = ctxt->h.b8[6]; 243 digest[4] = ctxt->h.b8[7]; digest[5] = ctxt->h.b8[6];