Exemplo n.º 1
0
void md2_final(MD2_CTX *ctx, BYTE hash[])
{
  int to_pad;

  to_pad = MD2_BLOCK_SIZE - ctx->len;

  while (ctx->len < MD2_BLOCK_SIZE)
    ctx->data[ctx->len++] = to_pad;

  md2_transform(ctx, ctx->data);
  md2_transform(ctx, ctx->checksum);

  memcpy(hash, ctx->state, MD2_BLOCK_SIZE);
}
Exemplo n.º 2
0
Arquivo: md2.c Projeto: AllardJ/Tomato
void
md2_digest(struct md2_ctx *ctx,
	   unsigned length,
	   uint8_t *digest)
{
  unsigned left;
  
  assert(length <= MD2_DIGEST_SIZE);

  left = MD2_DATA_SIZE - ctx->index;
  memset(ctx->block + ctx->index, left, left);
  md2_transform(ctx, ctx->block);
  
  md2_transform(ctx, ctx->C);
  memcpy(digest, ctx->X, length);
  md2_init(ctx);
}
Exemplo n.º 3
0
void md2_update(MD2_CTX *ctx, const BYTE data[], size_t len)
{
  size_t i;

  for (i = 0; i < len; ++i) {
    ctx->data[ctx->len] = data[i];
    ctx->len++;
    if (ctx->len == MD2_BLOCK_SIZE) {
      md2_transform(ctx, ctx->data);
      ctx->len = 0;
    }
  }
}