diff options
Diffstat (limited to 'meta/packages/shasum/files/main.c')
| -rw-r--r-- | meta/packages/shasum/files/main.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta/packages/shasum/files/main.c b/meta/packages/shasum/files/main.c new file mode 100644 index 0000000000..0748a94f3a --- /dev/null +++ b/meta/packages/shasum/files/main.c | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | #include <stdio.h> | ||
| 2 | #include <stdlib.h> | ||
| 3 | |||
| 4 | #include "mhash_sha256.h" | ||
| 5 | |||
| 6 | /* | ||
| 7 | * from driver.c of mhash | ||
| 8 | */ | ||
| 9 | static const char hexconvtab[] = "0123456789abcdef"; | ||
| 10 | |||
| 11 | static char * | ||
| 12 | bin2hex(const unsigned char *old, const size_t oldlen, size_t * newlen) | ||
| 13 | { | ||
| 14 | unsigned char *new = NULL; | ||
| 15 | int i, j; | ||
| 16 | |||
| 17 | new = (char *) malloc(oldlen * 2 * sizeof(char) + 1); | ||
| 18 | if (!new) | ||
| 19 | return (new); | ||
| 20 | |||
| 21 | for (i = j = 0; i < oldlen; i++) { | ||
| 22 | new[j++] = hexconvtab[old[i] >> 4]; | ||
| 23 | new[j++] = hexconvtab[old[i] & 15]; | ||
| 24 | } | ||
| 25 | new[j] = '\0'; | ||
| 26 | |||
| 27 | if (newlen) | ||
| 28 | *newlen = oldlen * 2 * sizeof(char); | ||
| 29 | |||
| 30 | return (new); | ||
| 31 | } | ||
| 32 | |||
| 33 | |||
| 34 | int main(int argc, char** argv) | ||
| 35 | { | ||
| 36 | FILE *file; | ||
| 37 | size_t n; | ||
| 38 | SHA256_CTX ctx; | ||
| 39 | unsigned char buf[1024]; | ||
| 40 | byte output[33]; | ||
| 41 | |||
| 42 | if ( argc <= 1 ) { | ||
| 43 | return EXIT_FAILURE; | ||
| 44 | } | ||
| 45 | |||
| 46 | if ( (file=fopen(argv[1], "rb")) == NULL ) { | ||
| 47 | return EXIT_FAILURE; | ||
| 48 | } | ||
| 49 | |||
| 50 | sha256_init(&ctx); | ||
| 51 | |||
| 52 | while ( (n=fread( buf, 1, sizeof(buf), file)) > 0 ) | ||
| 53 | sha256_update(&ctx, buf, n ); | ||
| 54 | |||
| 55 | sha256_final(&ctx); | ||
| 56 | sha256_digest(&ctx, output); | ||
| 57 | |||
| 58 | printf("%s ?%s\n", bin2hex(output, 32, &n), argv[1]); | ||
| 59 | return EXIT_SUCCESS; | ||
| 60 | } | ||
