コード例 #1
0
ファイル: rmd160.c プロジェクト: 2asoft/freebsd
void
RMD160Final(u_char digest[20], RMD160_CTX *ctx)
{
	int i;
	u_char size[8];
	u_int32_t padlen;

	PUT_64BIT_LE(size, ctx->count);

	/*
	 * pad to 64 byte blocks, at least one byte from PADDING plus 8 bytes
	 * for the size
	 */
	padlen = 64 - ((ctx->count/8) % 64);
	if (padlen < 1 + 8)
		padlen += 64;
	RMD160Update(ctx, PADDING, padlen - 8);		/* padlen - 8 <= 64 */
	RMD160Update(ctx, size, 8);

	if (digest != NULL)
		for (i = 0; i < 5; i++)
			PUT_32BIT_LE(digest + i*4, ctx->state[i]);

	memset(ctx, 0, sizeof (*ctx));
}
コード例 #2
0
ファイル: rmd160.c プロジェクト: appleorange1/bitrig
void
RMD160Final(u_int8_t digest[RMD160_DIGEST_LENGTH], RMD160_CTX *ctx)
{
	int i;

	RMD160Pad(ctx);
	for (i = 0; i < 5; i++)
		PUT_32BIT_LE(digest + i*4, ctx->state[i]);
	memset(ctx, 0, sizeof (*ctx));
}
コード例 #3
0
ファイル: ripemd160.c プロジェクト: veox/libbitcoin
void RMD160Final(RMD160CTX* context, uint8_t digest[RMD160_DIGEST_LENGTH])
{
    int i;
    RMD160Pad(context);
    for (i = 0; i < 5; i++)
    {
        PUT_32BIT_LE(digest + i * 4, context->state[i]);
    }

    zeroize(context, sizeof *context);
}
コード例 #4
0
ファイル: md5.c プロジェクト: wbx-github/openadk
/*
 * Final wrapup--call MD5Pad, fill in digest and zero out ctx.
 */
void
MD5Final(unsigned char digest[MD5_DIGEST_LENGTH], MD5_CTX *ctx)
{
	int i;

	MD5Pad(ctx);
	if (digest != NULL) {
		for (i = 0; i < 4; i++)
			PUT_32BIT_LE(digest + i * 4, ctx->state[i]);
		memset(ctx, 0, sizeof(*ctx));
	}
}