64static const uint32 _K[] = {0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6};
66#define K(t) _K[(t) / 20]
68#define F0(b, c, d) (((b) & (c)) | ((~(b)) & (d)))
69#define F1(b, c, d) (((b) ^ (c)) ^ (d))
70#define F2(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
71#define F3(b, c, d) (((b) ^ (c)) ^ (d))
73#define S(n, x) (((x) << (n)) | ((x) >> (32 - (n))))
75#define H(n) (ctx->h.b32[(n)])
76#define COUNT (ctx->count)
77#define BCOUNT (ctx->c.b64[0] / 8)
78#define W(n) (ctx->m.b32[(n)])
82 ctx->m.b8[(COUNT % 64)] = (x); \
85 if (COUNT % 64 == 0) \
101#ifndef WORDS_BIGENDIAN
177 for (t = 0; t < 20; t++)
181 W(s) =
S(1,
W((s + 13) & 0x0f) ^
W((s + 8) & 0x0f) ^
W((s + 2) & 0x0f) ^
W(s));
182 tmp =
S(5,
a) +
F0(
b,
c, d) +
e +
W(s) +
K(t);
189 for (t = 20; t < 40; t++)
192 W(s) =
S(1,
W((s + 13) & 0x0f) ^
W((s + 8) & 0x0f) ^
W((s + 2) & 0x0f) ^
W(s));
193 tmp =
S(5,
a) +
F1(
b,
c, d) +
e +
W(s) +
K(t);
200 for (t = 40; t < 60; t++)
203 W(s) =
S(1,
W((s + 13) & 0x0f) ^
W((s + 8) & 0x0f) ^
W((s + 2) & 0x0f) ^
W(s));
204 tmp =
S(5,
a) +
F2(
b,
c, d) +
e +
W(s) +
K(t);
211 for (t = 60; t < 80; t++)
214 W(s) =
S(1,
W((s + 13) & 0x0f) ^
W((s + 8) & 0x0f) ^
W((s + 2) & 0x0f) ^
W(s));
215 tmp =
S(5,
a) +
F3(
b,
c, d) +
e +
W(s) +
K(t);
254#ifdef WORDS_BIGENDIAN
282#ifdef WORDS_BIGENDIAN
void pg_sha1_update(pg_sha1_ctx *ctx, const uint8 *data, size_t len)
void pg_sha1_init(pg_sha1_ctx *ctx)
static void sha1_result(uint8 *digest0, pg_sha1_ctx *ctx)
static void sha1_step(pg_sha1_ctx *ctx)
void pg_sha1_final(pg_sha1_ctx *ctx, uint8 *dest)
static void sha1_pad(pg_sha1_ctx *ctx)