void sha256_update(hash_ctx *ctx, const void *buf, size_t len) { const uint8_t *p = buf; unsigned r = ctx->len % 64; ctx->len += len; if (r) { if (len < 64 - r) { memcpy(ctx->buf + r, p, len); return; } memcpy(ctx->buf + r, p, 64 - r); len -= 64 - r; p += 64 - r; processblock(ctx, ctx->buf); } for (; len >= 64; len -= 64, p += 64) processblock(ctx, p); memcpy(ctx->buf, p, len); }
static void pad(hash_ctx *ctx) { unsigned r = ctx->len % 64; ctx->buf[r++] = 0x80; if (r > 56) { memset(ctx->buf + r, 0, 64 - r); r = 0; processblock(ctx, ctx->buf); } memset(ctx->buf + r, 0, 56 - r); ctx->len *= 8; ctx->buf[56] = ctx->len >> 56; ctx->buf[57] = ctx->len >> 48; ctx->buf[58] = ctx->len >> 40; ctx->buf[59] = ctx->len >> 32; ctx->buf[60] = ctx->len >> 24; ctx->buf[61] = ctx->len >> 16; ctx->buf[62] = ctx->len >> 8; ctx->buf[63] = ctx->len; processblock(ctx, ctx->buf); }
void sha512_update(void *ctx, const void *m, unsigned long len) { struct sha512 *s = ctx; const uint8_t *p = m; unsigned r = s->len % 128; s->len += len; if (r) { if (len < 128 - r) { memcpy(s->buf + r, p, len); return; } memcpy(s->buf + r, p, 128 - r); len -= 128 - r; p += 128 - r; processblock(s, s->buf); } for (; len >= 128; len -= 128, p += 128) processblock(s, p); memcpy(s->buf, p, len); }
void sha256_update(void *ctx, const void *m, unsigned long len) { struct sha256 *s = ctx; const uint8_t *p = m; unsigned r = s->len % 64; s->len += len; if (r) { if (len < 64 - r) { memcpy(s->buf + r, p, len); return; } memcpy(s->buf + r, p, 64 - r); len -= 64 - r; p += 64 - r; processblock(s, s->buf); } for (; len >= 64; len -= 64, p += 64) processblock(s, p); memcpy(s->buf, p, len); }
static void pad(struct sha512 *s) { unsigned r = s->len % 128; s->buf[r++] = 0x80; if (r > 112) { memset(s->buf + r, 0, 128 - r); r = 0; processblock(s, s->buf); } memset(s->buf + r, 0, 120 - r); s->len *= 8; s->buf[120] = s->len >> 56; s->buf[121] = s->len >> 48; s->buf[122] = s->len >> 40; s->buf[123] = s->len >> 32; s->buf[124] = s->len >> 24; s->buf[125] = s->len >> 16; s->buf[126] = s->len >> 8; s->buf[127] = s->len; processblock(s, s->buf); }
static void pad(struct sha256 *s) { unsigned r = s->len % 64; s->buf[r++] = 0x80; if (r > 56) { memset(s->buf + r, 0, 64 - r); r = 0; processblock(s, s->buf); } memset(s->buf + r, 0, 56 - r); s->len *= 8; s->buf[56] = s->len >> 56; s->buf[57] = s->len >> 48; s->buf[58] = s->len >> 40; s->buf[59] = s->len >> 32; s->buf[60] = s->len >> 24; s->buf[61] = s->len >> 16; s->buf[62] = s->len >> 8; s->buf[63] = s->len; processblock(s, s->buf); }