summaryrefslogtreecommitdiff
path: root/test/ARC4Test.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-17 15:56:47 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-17 15:56:47 +0000
commitc0d2223c778ae9719fd13d1fde6dc2fbf4faa82b (patch)
tree1d7a2ca2f7d99ebe7aa24cf0be364aa0453afc89 /test/ARC4Test.cc
parent13021233680e3fb3650075e2a71c1f234acb1803 (diff)
2008-02-16 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added Message Stream Encryption(MSE) support. Currently, aria2 accepts incoming connections with Obfuscation Header and legacy BitTorrent Header and establishes connections with Obfuscation Header first and if failed then retry with legacy BitTorrent header. If plain text and ARC4 is provided, aria2 always choose ARC4. The new option to change the default behavior is planned. For tracker extension, "supportcrypto=1" is added statically. * src/PeerInitiateConnectionCommand.{h, cc} * src/PeerConnection.{h, cc} * src/HandleRegistry.h * src/SocketCore.h * src/PeerReceiveHandshakeCommand.{h, cc} * src/BtRegistry.{h, cc} * src/PeerListenCommand.cc * src/InitiatorMSEHandshakeCommand.{h, cc} * src/ReceiverMSEHandshakeCommand.{h, cc} * src/MSEHandshake.{h, cc} * src/ARC4Encryptor.h * src/ARC4Decryptor.h * src/LibgcryptARC4Encryptor.h * src/LibgcryptARC4Decryptor.h * src/LibgcryptARC4Context.h * src/LibsslARC4Encryptor.h * src/LibsslARC4Decryptor.h * src/LibsslARC4Context.h * src/DHKeyExchange.h * src/LibgcryptDHKeyExchange.h * src/LibsslDHKeyExchange.h * src/DefaultBtAnnounce.cc: Just added "supportcrypto=1" parameter. * test/DefaultBtAnnounceTest.cc * test/ARC4Test.cc * test/DHKeyExchangeTest.cc Removed prepareForRetry() because it is not used. * src/PeerAbstractCommand.{h, cc} * src/PeerInteractionCommand.{h, cc} * src/PeerInitiateConnectionCommand.{h, cc}
Diffstat (limited to 'test/ARC4Test.cc')
-rw-r--r--test/ARC4Test.cc51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/ARC4Test.cc b/test/ARC4Test.cc
new file mode 100644
index 00000000..1bab1163
--- /dev/null
+++ b/test/ARC4Test.cc
@@ -0,0 +1,51 @@
+#include "ARC4Encryptor.h"
+#include "ARC4Decryptor.h"
+#include "Exception.h"
+#include "Util.h"
+#include "DHTUtil.h"
+#include <cstring>
+#include <cppunit/extensions/HelperMacros.h>
+
+namespace aria2 {
+
+class ARC4Test:public CppUnit::TestFixture {
+
+ CPPUNIT_TEST_SUITE(ARC4Test);
+ CPPUNIT_TEST(testEncryptDecrypt);
+ CPPUNIT_TEST_SUITE_END();
+public:
+ void setUp() {}
+
+ void tearDown() {}
+
+ void testEncryptDecrypt();
+};
+
+
+CPPUNIT_TEST_SUITE_REGISTRATION(ARC4Test);
+
+void ARC4Test::testEncryptDecrypt()
+{
+ ARC4Encryptor enc;
+ ARC4Decryptor dec;
+ const size_t LEN = 20;
+ unsigned char key[LEN];
+ memset(key, 0, LEN);
+ DHTUtil::generateRandomData(key, sizeof(key));
+ enc.init(key, sizeof(key));
+ dec.init(key, sizeof(key));
+
+ unsigned char encrypted[LEN];
+ unsigned char decrypted[LEN];
+ enc.encrypt(encrypted, LEN, key, LEN);
+ dec.decrypt(decrypted, LEN, encrypted, LEN);
+
+ CPPUNIT_ASSERT(memcmp(key, decrypted, LEN) == 0);
+ // once more
+ enc.encrypt(encrypted, LEN, key, LEN);
+ dec.decrypt(decrypted, LEN, encrypted, LEN);
+
+ CPPUNIT_ASSERT(memcmp(key, decrypted, LEN) == 0);
+}
+
+} // namespace aria2