예제 #1
0
파일: blake256.c 프로젝트: EmuxEvans/retter
void blake256_hash( uint8_t *out, const uint8_t *in, uint64_t inlen )
{
  state256 S;
  blake256_init( &S );
  blake256_update( &S, in, inlen );
  blake256_final( &S, out );
}
예제 #2
0
파일: generic.c 프로젝트: ucodev/libpsec
unsigned char *blake256_file(unsigned char *out, FILE *fp) {
	state256 context;
	size_t ret = 0;
	int errsv = 0;
	unsigned char buf[8192], *digest = NULL;

	blake256_init(&context);

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

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

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

		if (feof(fp))
			break;
	}

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

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

	return digest;
}
예제 #3
0
파일: blake256.c 프로젝트: EmuxEvans/retter
int main( int argc, char **argv )
{
#define BLOCK256 64
  FILE *fp;
  int i, j, bytesread;
  uint8_t in[BLOCK256], out[32];
  state256 S;
  blake256_test();

  for( i = 1; i < argc; ++i )
  {
    fp = fopen( *( argv + i ), "r" );

    if ( fp == NULL )
    {
      printf( "Error: unable to open %s\n", *( argv + i ) );
      return 1;
    }

    blake256_init( &S );

    while( 1 )
    {
      bytesread = fread( in, 1, BLOCK256, fp );

      if ( bytesread )
        blake256_update( &S, in, bytesread );
      else
        break;
    }

    blake256_final( &S, out );

    for( j = 0; j < 32; ++j )
      printf( "%02x", out[j] );

    printf( " %s\n", *( argv + i ) );
    fclose( fp );
  }

  return 0;
}
예제 #4
0
파일: generic.c 프로젝트: ucodev/libpsec
/* BLAKE-256 Generic Interface */
unsigned char *blake256_buffer(
	unsigned char *out,
	const unsigned char *in,
	size_t in_len)
{
	state256 context;
	unsigned char *digest = NULL;

	blake256_init(&context);

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

	blake256_update(&context, (const uint8_t *) in, in_len);
	blake256_final(&context, (uint8_t *) digest);

	return digest;
}