generic_hash.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include <rtthread.h>
  2. #include <assert.h>
  3. #include <errno.h>
  4. #include <limits.h>
  5. #include <stdio.h>
  6. #include <stdint.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9. #include "sodium.h"
  10. static char in[] = "testing";
  11. unsigned char out[crypto_generichash_BYTES];
  12. unsigned char key[crypto_generichash_KEYBYTES];
  13. int generic_hash(int argc, char* argv[])
  14. {
  15. size_t i;
  16. // Set Hash Key
  17. for (i = 0; i < crypto_generichash_KEYBYTES_MAX; ++i) {
  18. key[i] = (unsigned char) i;
  19. }
  20. // Hash function
  21. if (argc == 2) {
  22. crypto_generichash(out, sizeof out, (const unsigned char *) argv[1], (size_t) strlen(argv[1]), key, sizeof key);
  23. printf("generic_hash(\"%s\") = ", argv[1]);
  24. }
  25. else {
  26. printf("Usage: %s testing\n", argv[0]);
  27. crypto_generichash(out, sizeof out, (const unsigned char *) in, (size_t) strlen(in), key, sizeof key);
  28. printf("generic_hash(\"%s\") = ", in);
  29. }
  30. for (i = 0; i < crypto_generichash_BYTES; ++i) {
  31. printf("%02x", (unsigned int) out[i]);
  32. }
  33. printf("\n");
  34. return 0;
  35. }
  36. MSH_CMD_EXPORT(generic_hash, libsodium generic hash)