Lines Matching refs:ctx
57 static void SHA256_Transform(SHA256_CTX* ctx) {
60 uint8_t* p = ctx->buf;
77 A = ctx->state[0];
78 B = ctx->state[1];
79 C = ctx->state[2];
80 D = ctx->state[3];
81 E = ctx->state[4];
82 F = ctx->state[5];
83 G = ctx->state[6];
84 H = ctx->state[7];
104 ctx->state[0] += A;
105 ctx->state[1] += B;
106 ctx->state[2] += C;
107 ctx->state[3] += D;
108 ctx->state[4] += E;
109 ctx->state[5] += F;
110 ctx->state[6] += G;
111 ctx->state[7] += H;
122 void SHA256_init(SHA256_CTX* ctx) {
123 ctx->f = &SHA256_VTAB;
124 ctx->state[0] = 0x6a09e667;
125 ctx->state[1] = 0xbb67ae85;
126 ctx->state[2] = 0x3c6ef372;
127 ctx->state[3] = 0xa54ff53a;
128 ctx->state[4] = 0x510e527f;
129 ctx->state[5] = 0x9b05688c;
130 ctx->state[6] = 0x1f83d9ab;
131 ctx->state[7] = 0x5be0cd19;
132 ctx->count = 0;
136 void SHA256_update(SHA256_CTX* ctx, const void* data, int len) {
137 int i = (int) (ctx->count & 63);
140 ctx->count += len;
143 ctx->buf[i++] = *p++;
145 SHA256_Transform(ctx);
152 const uint8_t* SHA256_final(SHA256_CTX* ctx) {
153 uint8_t *p = ctx->buf;
154 uint64_t cnt = ctx->count * 8;
157 SHA256_update(ctx, (uint8_t*)"\x80", 1);
158 while ((ctx->count & 63) != 56) {
159 SHA256_update(ctx, (uint8_t*)"\0", 1);
163 SHA256_update(ctx, &tmp, 1);
167 uint32_t tmp = ctx->state[i];
174 return ctx->buf;
179 SHA256_CTX ctx;
180 SHA256_init(&ctx);
181 SHA256_update(&ctx, data, len);
182 memcpy(digest, SHA256_final(&ctx), SHA256_DIGEST_SIZE);