diff options
author | Niels Möller <nisse@lysator.liu.se> | 2003-04-22 21:44:24 +0200 |
---|---|---|
committer | Niels Möller <nisse@lysator.liu.se> | 2003-04-22 21:44:24 +0200 |
commit | 8dfc66bf0a1d1a2f6f9ebbbfe2dd4eef81e8f612 (patch) | |
tree | 3fe51273519d38a48b44c62c38370e3f3b000be0 /sha-example.c | |
parent | ee6635bd848b98afc7d91c2d0b1ed8bdb57bafed (diff) | |
download | nettle-8dfc66bf0a1d1a2f6f9ebbbfe2dd4eef81e8f612.tar.gz |
* nettle.texinfo (Example): Use @verbatiminclude to include the
example program.
* sha-example.c: Example program, for inclusion in the manual.
Rev: src/nettle/ChangeLog:1.190
Rev: src/nettle/nettle.texinfo:1.22
Rev: src/nettle/sha-example.c:1.1
Diffstat (limited to 'sha-example.c')
-rw-r--r-- | sha-example.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/sha-example.c b/sha-example.c new file mode 100644 index 00000000..a4818460 --- /dev/null +++ b/sha-example.c @@ -0,0 +1,44 @@ +#include <stdio.h> +#include <stdlib.h> + +#include <nettle/sha.h> + +#define BUF_SIZE 1000 + +static void +display_hex(unsigned length, uint8_t *data) +{ + static const char digits[16] = "0123456789abcdef"; + unsigned i; + + for (i = 0; i<length; i++) + { + uint8_t byte = data[i]; + printf("%c%c ", digits[(byte / 16) & 0xf], digits[byte & 0xf]); + } + printf("\n"); +} + +int +main(int argc, char **argv) +{ + struct sha1_ctx ctx; + uint8_t buffer[BUF_SIZE]; + uint8_t digest[SHA1_DIGEST_SIZE]; + + sha1_init(&ctx); + for (;;) + { + int done = fread(buffer, 1, sizeof(buffer), stdin); + sha1_update(&ctx, done, buffer); + if (done < sizeof(buffer)) + break; + } + if (ferror(stdin)) + return EXIT_FAILURE; + + sha1_digest(&ctx, SHA1_DIGEST_SIZE, digest); + + display_hex(SHA1_DIGEST_SIZE, digest); + return EXIT_SUCCESS; +} |