Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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);
}
Esempio n. 5
0
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);
}
Esempio n. 6
0
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);
}