summaryrefslogtreecommitdiff
path: root/sha-example.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2003-04-22 21:44:24 +0200
committerNiels Möller <nisse@lysator.liu.se>2003-04-22 21:44:24 +0200
commit8dfc66bf0a1d1a2f6f9ebbbfe2dd4eef81e8f612 (patch)
tree3fe51273519d38a48b44c62c38370e3f3b000be0 /sha-example.c
parentee6635bd848b98afc7d91c2d0b1ed8bdb57bafed (diff)
downloadnettle-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.c44
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;
+}