Пример #1
0
unsigned char *blake384_file(unsigned char *out, FILE *fp) {
	state384 context;
	size_t ret = 0;
	int errsv = 0;
	unsigned char buf[8192], *digest = NULL;

	blake384_init(&context);

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

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

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

		if (feof(fp))
			break;
	}

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

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

	return digest;
}
Пример #2
0
void blake384(void *dest, const void *msg, uint32_t length_b){
	blake_large_ctx_t ctx;
	blake384_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);
	blake384_ctx2hash(dest, &ctx);
}
Пример #3
0
/* BLAKE-384 Generic Interface */
unsigned char *blake384_buffer(
	unsigned char *out,
	const unsigned char *in,
	size_t in_len)
{
	state384 context;
	unsigned char *digest = NULL;

	blake384_init(&context);

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

	blake384_update(&context, (const uint8_t *) in, in_len);
	blake384_final(&context, (uint8_t *) digest);

	return digest;
}