42#if PPP_SUPPORT && LWIP_INCLUDED_POLARSSL_SHA1
52#define GET_ULONG_BE(n,b,i) \
54 (n) = ( (unsigned long) (b)[(i) ] << 24 ) \
55 | ( (unsigned long) (b)[(i) + 1] << 16 ) \
56 | ( (unsigned long) (b)[(i) + 2] << 8 ) \
57 | ( (unsigned long) (b)[(i) + 3] ); \
62#define PUT_ULONG_BE(n,b,i) \
64 (b)[(i) ] = (unsigned char) ( (n) >> 24 ); \
65 (b)[(i) + 1] = (unsigned char) ( (n) >> 16 ); \
66 (b)[(i) + 2] = (unsigned char) ( (n) >> 8 ); \
67 (b)[(i) + 3] = (unsigned char) ( (n) ); \
79 ctx->state[0] = 0x67452301;
80 ctx->state[1] = 0xEFCDAB89;
81 ctx->state[2] = 0x98BADCFE;
82 ctx->state[3] = 0x10325476;
83 ctx->state[4] = 0xC3D2E1F0;
90 GET_ULONG_BE(
W[ 0],
data, 0 );
91 GET_ULONG_BE(
W[ 1],
data, 4 );
92 GET_ULONG_BE(
W[ 2],
data, 8 );
93 GET_ULONG_BE(
W[ 3],
data, 12 );
94 GET_ULONG_BE(
W[ 4],
data, 16 );
95 GET_ULONG_BE(
W[ 5],
data, 20 );
96 GET_ULONG_BE(
W[ 6],
data, 24 );
97 GET_ULONG_BE(
W[ 7],
data, 28 );
98 GET_ULONG_BE(
W[ 8],
data, 32 );
99 GET_ULONG_BE(
W[ 9],
data, 36 );
100 GET_ULONG_BE(
W[10],
data, 40 );
101 GET_ULONG_BE(
W[11],
data, 44 );
102 GET_ULONG_BE(
W[12],
data, 48 );
103 GET_ULONG_BE(
W[13],
data, 52 );
104 GET_ULONG_BE(
W[14],
data, 56 );
105 GET_ULONG_BE(
W[15],
data, 60 );
107#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
111 temp = W[(t - 3) & 0x0F] ^ W[(t - 8) & 0x0F] ^ \
112 W[(t - 14) & 0x0F] ^ W[ t & 0x0F], \
113 ( W[t & 0x0F] = S(temp,1) ) \
116#define P(a,b,c,d,e,x) \
118 e += S(a,5) + F(b,c,d) + K + x; b = S(b,30); \
127#define F(x,y,z) (z ^ (x & (y ^ z)))
154#define F(x,y,z) (x ^ y ^ z)
181#define F(x,y,z) ((x & y) | (z & (x | y)))
208#define F(x,y,z) (x ^ y ^ z)
256 ctx->total[0] += ilen;
257 ctx->total[0] &= 0xFFFFFFFF;
259 if(
ctx->total[0] < (
unsigned long) ilen )
286static const unsigned char sha1_padding[64] =
288 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
299 unsigned long last, padn;
300 unsigned long high, low;
301 unsigned char msglen[8];
303 high = (
ctx->total[0] >> 29 )
304 | (
ctx->total[1] << 3 );
305 low = (
ctx->total[0] << 3 );
307 PUT_ULONG_BE( high, msglen, 0 );
308 PUT_ULONG_BE( low, msglen, 4 );
316 PUT_ULONG_BE(
ctx->state[0], output, 0 );
317 PUT_ULONG_BE(
ctx->state[1], output, 4 );
318 PUT_ULONG_BE(
ctx->state[2], output, 8 );
319 PUT_ULONG_BE(
ctx->state[3], output, 12 );
320 PUT_ULONG_BE(
ctx->state[4], output, 16 );
326void sha1(
unsigned char *
input,
int ilen,
unsigned char output[20] )
_STLP_MOVE_TO_STD_NAMESPACE void fill(_ForwardIter __first, _ForwardIter __last, const _Tp &__val)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLenum GLenum input
#define MEMCPY(DST, SRC, BYTES)