5 #warning OpenSSL functions for sha1 not available 41 ctx->
H[0] = 0x67452301L;
42 ctx->
H[1] = 0xefcdab89L;
43 ctx->
H[2] = 0x98badcfeL;
44 ctx->
H[3] = 0x10325476L;
45 ctx->
H[4] = 0xc3d2e1f0L;
47 for (i = 0; i < 80; i++)
57 for (i = 0; i < len; i++) {
58 ctx->
W[ctx->
lenW / 4] <<= 8;
59 ctx->
W[ctx->
lenW / 4] |= (uint32_t)dataIn[i];
60 if ((++ctx->
lenW) % 64 == 0) {
71 unsigned char pad0x80 = 0x80;
72 unsigned char pad0x00 = 0x00;
73 unsigned char padlen[8];
78 padlen[0] = (
unsigned char)((ctx->
sizeHi >> 24) & 255);
79 padlen[1] = (
unsigned char)((ctx->
sizeHi >> 16) & 255);
80 padlen[2] = (
unsigned char)((ctx->
sizeHi >> 8) & 255);
81 padlen[3] = (
unsigned char)((ctx->
sizeHi >> 0) & 255);
82 padlen[4] = (
unsigned char)((ctx->
sizeLo >> 24) & 255);
83 padlen[5] = (
unsigned char)((ctx->
sizeLo >> 16) & 255);
84 padlen[6] = (
unsigned char)((ctx->
sizeLo >> 8) & 255);
85 padlen[7] = (
unsigned char)((ctx->
sizeLo >> 0) & 255);
87 while (ctx->
lenW != 56)
93 for (i = 0; i < 20; i++) {
94 hashout[i] = (
unsigned char)(ctx->
H[i / 4] >> 24);
105 void sha1_hash(
const unsigned char *dataIn,
int len,
unsigned char hashout[20]) {
114 #define SHA_ROTL(X,n) ((((X) << (n)) | ((X) >> (32-(n)))) & 0xffffffffL) 118 uint32_t A,B,C,D,E,TEMP;
120 for (t = 16; t <= 79; t++)
122 SHA_ROTL(ctx->
W[t-3] ^ ctx->
W[t-8] ^ ctx->
W[t-14] ^ ctx->
W[t-16], 1);
130 for (t = 0; t <= 19; t++) {
131 TEMP = (
SHA_ROTL(A,5) + (((C^D)&B)^D) + E + ctx->
W[t] + 0x5a827999L) & 0xffffffffL;
132 E = D; D = C; C =
SHA_ROTL(B, 30); B = A; A = TEMP;
134 for (t = 20; t <= 39; t++) {
135 TEMP = (
SHA_ROTL(A,5) + (B^C^D) + E + ctx->
W[t] + 0x6ed9eba1L) & 0xffffffffL;
136 E = D; D = C; C =
SHA_ROTL(B, 30); B = A; A = TEMP;
138 for (t = 40; t <= 59; t++) {
139 TEMP = (
SHA_ROTL(A,5) + ((B&C)|(D&(B|C))) + E + ctx->
W[t] + 0x8f1bbcdcL) & 0xffffffffL;
140 E = D; D = C; C =
SHA_ROTL(B, 30); B = A; A = TEMP;
142 for (t = 60; t <= 79; t++) {
143 TEMP = (
SHA_ROTL(A,5) + (B^C^D) + E + ctx->
W[t] + 0xca62c1d6L) & 0xffffffffL;
144 E = D; D = C; C =
SHA_ROTL(B, 30); B = A; A = TEMP;
void sha1_init(sha1_state_t *ctx)
void sha1_finish(sha1_state_t *ctx, unsigned char hashout[20])
void sha1_hash(const unsigned char *dataIn, int len, unsigned char hashout[20])
void sha1_append(sha1_state_t *ctx, const unsigned char *dataIn, int len)
static void sha1_hashblock(sha1_state_t *ctx)