diff --git a/ChangeLog b/ChangeLog index fb6e060f8ee0ace815c6f61020bdf8e49b5fb066..6b939b6ef345d6227ab3e87b032382f30b71ec99 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-04-22 Niels Möller <nisse@cuckoo.hack.org> + + * nettle.texinfo (Example): Use @verbatiminclude to include the + example program. + + * sha-example.c: Example program, for inclusion in the manual. + 2003-04-14 Niels Möller <niels@s3.kth.se> * x86/aes-encrypt.asm (nettle_aes_encrypt): Fixed references to diff --git a/nettle.texinfo b/nettle.texinfo index eaca385a9c82dde700eb8f3f3df883bc8c67f974..7bb244d190d53fdeadec106b1ee29977ed249c97 100644 --- a/nettle.texinfo +++ b/nettle.texinfo @@ -251,50 +251,7 @@ A simple example program that reads a file from standard in and writes its SHA1 checksum on standard output should give the flavor of Nettle. @example -/* FIXME: This code is untested. */ -#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]); - @} -@} - -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); - if (done <= 0) - break; - sha1_update(&ctx, done, buf); - @} - if (ferror(stdin)) - return EXIT_FAILURE; - - sha1_digest(&ctx, SHA1_DIGEST_SIZE, digest); - - display_hex(SHA1_DIGEST_SIZE, digest); - return EXIT_SUCCESS; -@} +@verbatiminclude example.c @end example @node Reference, Nettle soup, Example, Top diff --git a/sha-example.c b/sha-example.c new file mode 100644 index 0000000000000000000000000000000000000000..a4818460f01d4a7901cbb5519daee5c1f885def2 --- /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; +}