Beispiel #1
0
unsigned char *blake512_file(unsigned char *out, FILE *fp) {
	state512 context;
	size_t ret = 0;
	int errsv = 0;
	unsigned char buf[8192], *digest = NULL;

	blake512_init(&context);

	for (;;) {
		ret = fread(buf, 1, 8192, fp);
		errsv = errno;

		if ((ret != 8192) && ferror(fp)) {
			errno = errsv;
			return NULL;
		}

		blake512_update(&context, (const uint8_t *) buf, ret);

		if (feof(fp))
			break;
	}

	if (!out) {
		if (!(digest = malloc(64)))
			return NULL;
	} else {
		digest = out;
	}

	blake512_final(&context, (uint8_t *) digest);

	return digest;
}
Beispiel #2
0
void blake512(void *dest, const void *msg, uint32_t length_b){
	blake_large_ctx_t ctx;
	blake512_init(&ctx);
	while(length_b>=BLAKE_LARGE_BLOCKSIZE){
		blake_large_nextBlock(&ctx, msg);
		msg = (uint8_t*)msg + BLAKE_LARGE_BLOCKSIZE_B;
		length_b -= BLAKE_LARGE_BLOCKSIZE;
	}
	blake_large_lastBlock(&ctx, msg, length_b);
	blake512_ctx2hash(dest, &ctx);
}
Beispiel #3
0
/* BLAKE-512 Generic Interface */
unsigned char *blake512_buffer(
	unsigned char *out,
	const unsigned char *in,
	size_t in_len)
{
	state512 context;
	unsigned char *digest = NULL;

	blake512_init(&context);

	if (!out) {
		if (!(digest = malloc(64)))
			return NULL;
	} else {
		digest = out;
	}

	blake512_update(&context, (const uint8_t *) in, in_len);
	blake512_final(&context, (uint8_t *) digest);

	return digest;
}