box5.cpp 782 B

123456789101112131415161718192021222324252627282930
  1. #include <string>
  2. using std::string;
  3. #include <stdio.h>
  4. #include "crypto_box.h"
  5. #include "randombytes.h"
  6. main()
  7. {
  8. int mlen;
  9. for (mlen = 0;mlen < 1000;++mlen) {
  10. string alicesk;
  11. string alicepk = crypto_box_keypair(&alicesk);
  12. string bobsk;
  13. string bobpk = crypto_box_keypair(&bobsk);
  14. unsigned char nbytes[crypto_box_NONCEBYTES];
  15. randombytes(nbytes,crypto_box_NONCEBYTES);
  16. string n((char *) nbytes,crypto_box_NONCEBYTES);
  17. unsigned char mbytes[mlen];
  18. randombytes(mbytes,mlen);
  19. string m((char *) mbytes,mlen);
  20. string c = crypto_box(m,n,bobpk,alicesk);
  21. try {
  22. string m2 = crypto_box_open(c,n,alicepk,bobsk);
  23. if (m != m2) printf("bad decryption\n");
  24. } catch(const char *s) {
  25. printf("%s\n",s);
  26. }
  27. }
  28. return 0;
  29. }