mirror of
https://github.com/BLAKE3-team/BLAKE3
synced 2025-01-21 15:50:01 +01:00
38 lines
887 B
C
38 lines
887 B
C
#include "blake3.h"
|
|
#include <errno.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
int main(void) {
|
|
// Initialize the hasher.
|
|
blake3_hasher hasher;
|
|
blake3_hasher_init(&hasher);
|
|
|
|
// Read input bytes from stdin.
|
|
unsigned char buf[65536];
|
|
while (1) {
|
|
ssize_t n = read(STDIN_FILENO, buf, sizeof(buf));
|
|
if (n > 0) {
|
|
blake3_hasher_update(&hasher, buf, n);
|
|
} else if (n == 0) {
|
|
break; // end of file
|
|
} else {
|
|
fprintf(stderr, "read failed: %s\n", strerror(errno));
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
// Finalize the hash. BLAKE3_OUT_LEN is the default output length, 32 bytes.
|
|
uint8_t output[BLAKE3_OUT_LEN];
|
|
blake3_hasher_finalize(&hasher, output, BLAKE3_OUT_LEN);
|
|
|
|
// Print the hash as hexadecimal.
|
|
for (size_t i = 0; i < BLAKE3_OUT_LEN; i++) {
|
|
printf("%02x", output[i]);
|
|
}
|
|
printf("\n");
|
|
return 0;
|
|
}
|