ARC4Test.cc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "ARC4Encryptor.h"
  2. #include "ARC4Decryptor.h"
  3. #include "Exception.h"
  4. #include "Util.h"
  5. #include "DHTUtil.h"
  6. #include <cstring>
  7. #include <cppunit/extensions/HelperMacros.h>
  8. namespace aria2 {
  9. class ARC4Test:public CppUnit::TestFixture {
  10. CPPUNIT_TEST_SUITE(ARC4Test);
  11. CPPUNIT_TEST(testEncryptDecrypt);
  12. CPPUNIT_TEST_SUITE_END();
  13. public:
  14. void setUp() {}
  15. void tearDown() {}
  16. void testEncryptDecrypt();
  17. };
  18. CPPUNIT_TEST_SUITE_REGISTRATION(ARC4Test);
  19. void ARC4Test::testEncryptDecrypt()
  20. {
  21. ARC4Encryptor enc;
  22. ARC4Decryptor dec;
  23. const size_t LEN = 20;
  24. unsigned char key[LEN];
  25. memset(key, 0, LEN);
  26. DHTUtil::generateRandomData(key, sizeof(key));
  27. enc.init(key, sizeof(key));
  28. dec.init(key, sizeof(key));
  29. unsigned char encrypted[LEN];
  30. unsigned char decrypted[LEN];
  31. enc.encrypt(encrypted, LEN, key, LEN);
  32. dec.decrypt(decrypted, LEN, encrypted, LEN);
  33. CPPUNIT_ASSERT(memcmp(key, decrypted, LEN) == 0);
  34. // once more
  35. enc.encrypt(encrypted, LEN, key, LEN);
  36. dec.decrypt(decrypted, LEN, encrypted, LEN);
  37. CPPUNIT_ASSERT(memcmp(key, decrypted, LEN) == 0);
  38. }
  39. } // namespace aria2