Lines Matching refs:ctx

34 static void SHA1PadMessage(SHA1_CTX *ctx);
35 static void SHA1ProcessMessageBlock(SHA1_CTX *ctx);
40 void SHA1Init(SHA1_CTX *ctx)
42 ctx->Length_Low = 0;
43 ctx->Length_High = 0;
44 ctx->Message_Block_Index = 0;
45 ctx->Intermediate_Hash[0] = 0x67452301;
46 ctx->Intermediate_Hash[1] = 0xEFCDAB89;
47 ctx->Intermediate_Hash[2] = 0x98BADCFE;
48 ctx->Intermediate_Hash[3] = 0x10325476;
49 ctx->Intermediate_Hash[4] = 0xC3D2E1F0;
55 void SHA1Update(SHA1_CTX *ctx, const uint8_t *msg, int len)
59 ctx->Message_Block[ctx->Message_Block_Index++] = (*msg & 0xFF);
61 ctx->Length_Low += 8;
62 if (ctx->Length_Low == 0)
64 ctx->Length_High++;
67 if (ctx->Message_Block_Index == 64)
69 SHA1ProcessMessageBlock(ctx);
79 void SHA1Final(SHA1_CTX *ctx, uint8_t *digest)
83 SHA1PadMessage(ctx);
84 memset(ctx->Message_Block, 0, 64);
85 ctx->Length_Low = 0; /* and clear length */
86 ctx->Length_High = 0;
90 digest[i] = ctx->Intermediate_Hash[i>>2] >> 8 * ( 3 - ( i & 0x03 ) );
97 static void SHA1ProcessMessageBlock(SHA1_CTX *ctx)
115 W[t] = ctx->Message_Block[t * 4] << 24;
116 W[t] |= ctx->Message_Block[t * 4 + 1] << 16;
117 W[t] |= ctx->Message_Block[t * 4 + 2] << 8;
118 W[t] |= ctx->Message_Block[t * 4 + 3];
126 A = ctx->Intermediate_Hash[0];
127 B = ctx->Intermediate_Hash[1];
128 C = ctx->Intermediate_Hash[2];
129 D = ctx->Intermediate_Hash[3];
130 E = ctx->Intermediate_Hash[4];
175 ctx->Intermediate_Hash[0] += A;
176 ctx->Intermediate_Hash[1] += B;
177 ctx->Intermediate_Hash[2] += C;
178 ctx->Intermediate_Hash[3] += D;
179 ctx->Intermediate_Hash[4] += E;
180 ctx->Message_Block_Index = 0;
193 * @param ctx [in, out] The SHA1 context
195 static void SHA1PadMessage(SHA1_CTX *ctx)
203 if (ctx->Message_Block_Index > 55)
205 ctx->Message_Block[ctx->Message_Block_Index++] = 0x80;
206 while(ctx->Message_Block_Index < 64)
208 ctx->Message_Block[ctx->Message_Block_Index++] = 0;
211 SHA1ProcessMessageBlock(ctx);
213 while (ctx->Message_Block_Index < 56)
215 ctx->Message_Block[ctx->Message_Block_Index++] = 0;
220 ctx->Message_Block[ctx->Message_Block_Index++] = 0x80;
221 while(ctx->Message_Block_Index < 56)
224 ctx->Message_Block[ctx->Message_Block_Index++] = 0;
231 ctx->Message_Block[56] = ctx->Length_High >> 24;
232 ctx->Message_Block[57] = ctx->Length_High >> 16;
233 ctx->Message_Block[58] = ctx->Length_High >> 8;
234 ctx->Message_Block[59] = ctx->Length_High;
235 ctx->Message_Block[60] = ctx->Length_Low >> 24;
236 ctx->Message_Block[61] = ctx->Length_Low >> 16;
237 ctx->Message_Block[62] = ctx->Length_Low >> 8;
238 ctx->Message_Block[63] = ctx->Length_Low;
239 SHA1ProcessMessageBlock(ctx);