box_seal.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #define TEST_NAME "box_seal"
  2. #include "cmptest.h"
  3. int
  4. main(void)
  5. {
  6. unsigned char pk[crypto_box_PUBLICKEYBYTES];
  7. unsigned char sk[crypto_box_SECRETKEYBYTES];
  8. unsigned char *c;
  9. unsigned char *m;
  10. unsigned char *m2;
  11. size_t m_len;
  12. size_t c_len;
  13. crypto_box_keypair(pk, sk);
  14. m_len = (size_t) randombytes_uniform(1000);
  15. c_len = crypto_box_SEALBYTES + m_len;
  16. m = (unsigned char *) sodium_malloc(m_len);
  17. m2 = (unsigned char *) sodium_malloc(m_len);
  18. c = (unsigned char *) sodium_malloc(c_len);
  19. randombytes_buf(m, m_len);
  20. if (crypto_box_seal(c, m, m_len, pk) != 0) {
  21. printf("crypto_box_seal() failure\n");
  22. return 1;
  23. }
  24. if (crypto_box_seal_open(m2, c, c_len, pk, sk) != 0) {
  25. printf("crypto_box_seal_open() failure\n");
  26. return 1;
  27. }
  28. printf("%d\n", memcmp(m, m2, m_len));
  29. printf("%d\n", crypto_box_seal_open(m, c, 0U, pk, sk));
  30. printf("%d\n", crypto_box_seal_open(m, c, c_len - 1U, pk, sk));
  31. printf("%d\n", crypto_box_seal_open(m, c, c_len, sk, pk));
  32. sodium_free(c);
  33. sodium_free(m);
  34. sodium_free(m2);
  35. assert(crypto_box_sealbytes() == crypto_box_SEALBYTES);
  36. return 0;
  37. }