diff options
| author | Marcin Juszkiewicz <hrw@openembedded.org> | 2007-08-09 08:41:19 +0000 |
|---|---|---|
| committer | Marcin Juszkiewicz <hrw@openembedded.org> | 2007-08-09 08:41:19 +0000 |
| commit | 9d829ed05c295df608b4fc108eb1c628fd06fd39 (patch) | |
| tree | c1b27cfe4498f8abef1a61325922906f3e6a32ff /packages/shasum/files/main.c | |
| parent | 1434b204e16e87b7f59f074f3036d5dcbcf0116f (diff) | |
| parent | 6ccac10beeaaa02a86081bd6179fd57c208ad6b1 (diff) | |
merge of '76e1e69496801009ea0aa69c84f76e858978ab99'
and 'db976a98427dd6a195e2cf167e225de2d0206aea'
Diffstat (limited to 'packages/shasum/files/main.c')
| -rw-r--r-- | packages/shasum/files/main.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/packages/shasum/files/main.c b/packages/shasum/files/main.c new file mode 100644 index 0000000000..0748a94f3a --- /dev/null +++ b/packages/shasum/files/main.c @@ -0,0 +1,60 @@ +#include <stdio.h> +#include <stdlib.h> + +#include "mhash_sha256.h" + +/* + * from driver.c of mhash + */ +static const char hexconvtab[] = "0123456789abcdef"; + +static char * +bin2hex(const unsigned char *old, const size_t oldlen, size_t * newlen) +{ + unsigned char *new = NULL; + int i, j; + + new = (char *) malloc(oldlen * 2 * sizeof(char) + 1); + if (!new) + return (new); + + for (i = j = 0; i < oldlen; i++) { + new[j++] = hexconvtab[old[i] >> 4]; + new[j++] = hexconvtab[old[i] & 15]; + } + new[j] = '\0'; + + if (newlen) + *newlen = oldlen * 2 * sizeof(char); + + return (new); +} + + +int main(int argc, char** argv) +{ + FILE *file; + size_t n; + SHA256_CTX ctx; + unsigned char buf[1024]; + byte output[33]; + + if ( argc <= 1 ) { + return EXIT_FAILURE; + } + + if ( (file=fopen(argv[1], "rb")) == NULL ) { + return EXIT_FAILURE; + } + + sha256_init(&ctx); + + while ( (n=fread( buf, 1, sizeof(buf), file)) > 0 ) + sha256_update(&ctx, buf, n ); + + sha256_final(&ctx); + sha256_digest(&ctx, output); + + printf("%s ?%s\n", bin2hex(output, 32, &n), argv[1]); + return EXIT_SUCCESS; +} |
