diff --git a/demos/secretbox.c b/demos/secretbox.c deleted file mode 100644 index 12757a08..00000000 --- a/demos/secretbox.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * GraxRabble - * Demo programs for libsodium. - */ -#include -#include -#include - -#include /* library header */ - -#include "demo_utils.h" /* utility functions shared by demos */ - -/* - * This is a wrapper around stream which does XOR automatically. - * - * Note that the buffer must be padded at the front. The same nonce must - * not be used; it should be safe to use a counter. - * - * Encrypted messages will be 16 bytes longer because a 16 byte - * authentication token will be prepended to the message. - */ -static int -secretbox(void) -{ - unsigned char k[crypto_secretbox_KEYBYTES]; /* secret */ - unsigned char n[crypto_secretbox_NONCEBYTES]; /* nonce */ - unsigned char m[BUFFER_SIZE + crypto_secretbox_ZEROBYTES]; /* plain */ - unsigned char c[BUFFER_SIZE + crypto_secretbox_ZEROBYTES]; /* cipher */ - size_t mlen; /* length */ - int r; - - puts("Example: crypto_secretbox\n"); - - sodium_memzero(k, sizeof k); - prompt_input("Input your key > ", (char*)k, sizeof k); - - /* nonce must be generated per message, safe to send with message */ - puts("Generating nonce..."); - randombytes_buf(n, sizeof n); - fputs("Nonce: ", stdout); - print_hex(n, sizeof n); - putchar('\n'); - putchar('\n'); - - mlen = prompt_input("Input your message > ", - (char*)m + crypto_secretbox_ZEROBYTES, - sizeof m - crypto_secretbox_ZEROBYTES); - - /* must zero at least the padding */ - sodium_memzero(m, crypto_secretbox_ZEROBYTES); - - puts("Notice the 32 bytes of zero"); - print_hex(m, mlen + crypto_box_ZEROBYTES); - putchar('\n'); - - /* encrypting message */ - printf("Encrypting with %s\n", crypto_secretbox_primitive()); - - crypto_secretbox(c, m, mlen + crypto_secretbox_ZEROBYTES, n, k); - putchar('\n'); - - puts("Notice the prepended 16 byte authentication token"); - puts("Sending message..."); - puts("Format: nonce::message"); - fputs("Ciphertext: ", stdout); - print_hex(n, sizeof n); - fputs("::", stdout); - print_hex(c, mlen + crypto_secretbox_ZEROBYTES); - putchar('\n'); - putchar('\n'); - - /* decrypting message */ - puts("Opening message..."); - - /* must zero at least the padding */ - sodium_memzero(c, crypto_secretbox_BOXZEROBYTES); - r = crypto_secretbox_open(m, c, mlen + crypto_secretbox_ZEROBYTES, n, k); - - puts("Notice the 32 bytes of zero"); - print_hex(m, mlen + crypto_box_ZEROBYTES); - putchar('\n'); - putchar('\n'); - - print_verification(r); - if (r == 0) - printf("Plaintext: %s\n\n", m + crypto_secretbox_ZEROBYTES); - - sodium_memzero(k, sizeof k); /* wipe sensitive data */ - sodium_memzero(n, sizeof n); - sodium_memzero(m, sizeof m); - sodium_memzero(c, sizeof c); - return r; -} - -int -main(void) -{ - sodium_init(); - printf("Using LibSodium %s\n", sodium_version_string()); - - return secretbox() != 0; -}