Browse Source

2009-10-22 Tatsuhiro Tsujikawa <[email protected]>

	Moved generateRandomData to Util.cc Moved flipBit to bitfield.cc.
	Moved generateRandomKey to bittorrent_helper.cc.
	* src/DHTBucket.cc
	* src/DHTGetPeersMessage.cc
	* src/DHTGetPeersReplyMessage.cc
	* src/DHTMessage.cc
	* src/DHTNode.cc
	* src/DHTTokenTracker.cc
	* src/DHTUtil.cc: Removed.
	* src/DHTUtil.h: Removed.
	* src/Makefile.am
	* src/Util.cc
	* src/Util.h
	* src/bitfield.h
	* src/bittorrent_helper.cc
	* src/bittorrent_helper.h
	* test/ARC4Test.cc
	* test/BNodeTest.cc
	* test/DHTAnnouncePeerMessageTest.cc
	* test/DHTAnnouncePeerReplyMessageTest.cc
	* test/DHTFindNodeMessageTest.cc
	* test/DHTFindNodeReplyMessageTest.cc
	* test/DHTGetPeersMessageTest.cc
	* test/DHTGetPeersReplyMessageTest.cc
	* test/DHTPingMessageTest.cc
	* test/DHTPingReplyMessageTest.cc
	* test/DHTTokenTrackerTest.cc
	* test/DHTUtilTest.cc: Removed.
	* test/Makefile.am
	* test/UtilTest.cc
Tatsuhiro Tsujikawa 16 years ago
parent
commit
3349fe0811

+ 33 - 0
ChangeLog

@@ -1,3 +1,36 @@
+2009-10-22  Tatsuhiro Tsujikawa  <[email protected]>
+
+	Moved generateRandomData to Util.cc Moved flipBit to bitfield.cc.
+	Moved generateRandomKey to bittorrent_helper.cc.
+	* src/DHTBucket.cc
+	* src/DHTGetPeersMessage.cc
+	* src/DHTGetPeersReplyMessage.cc
+	* src/DHTMessage.cc
+	* src/DHTNode.cc
+	* src/DHTTokenTracker.cc
+	* src/DHTUtil.cc: Removed.
+	* src/DHTUtil.h: Removed.
+	* src/Makefile.am
+	* src/Util.cc
+	* src/Util.h
+	* src/bitfield.h
+	* src/bittorrent_helper.cc
+	* src/bittorrent_helper.h
+	* test/ARC4Test.cc
+	* test/BNodeTest.cc
+	* test/DHTAnnouncePeerMessageTest.cc
+	* test/DHTAnnouncePeerReplyMessageTest.cc
+	* test/DHTFindNodeMessageTest.cc
+	* test/DHTFindNodeReplyMessageTest.cc
+	* test/DHTGetPeersMessageTest.cc
+	* test/DHTGetPeersReplyMessageTest.cc
+	* test/DHTPingMessageTest.cc
+	* test/DHTPingReplyMessageTest.cc
+	* test/DHTTokenTrackerTest.cc
+	* test/DHTUtilTest.cc: Removed.
+	* test/Makefile.am
+	* test/UtilTest.cc
+
 2009-10-18  Tatsuhiro Tsujikawa  <[email protected]>
 
 	Removed the call to trim() because trim() is called for each

+ 6 - 5
src/DHTBucket.cc

@@ -38,13 +38,14 @@
 #include <cassert>
 #include <algorithm>
 
-#include "DHTUtil.h"
 #include "DHTNode.h"
 #include "LogFactory.h"
 #include "Logger.h"
 #include "Util.h"
 #include "DHTConstants.h"
 #include "a2functional.h"
+#include "bittorrent_helper.h"
+#include "bitfield.h"
 
 namespace aria2 {
 
@@ -73,10 +74,10 @@ DHTBucket::~DHTBucket() {}
 void DHTBucket::getRandomNodeID(unsigned char* nodeID) const
 {
   if(_prefixLength == 0) {
-    DHTUtil::generateRandomKey(nodeID);
+    bittorrent::generateRandomKey(nodeID);
   } else {
     size_t lastByteIndex = (_prefixLength-1)/8;
-    DHTUtil::generateRandomKey(nodeID);
+    bittorrent::generateRandomKey(nodeID);
     memcpy(nodeID, _min, lastByteIndex+1);
   }
 }
@@ -179,11 +180,11 @@ SharedHandle<DHTBucket> DHTBucket::split()
 
   unsigned char rMax[DHT_ID_LENGTH];
   memcpy(rMax, _max, DHT_ID_LENGTH);
-  DHTUtil::flipBit(rMax, DHT_ID_LENGTH, _prefixLength);
+  bitfield::flipBit(rMax, DHT_ID_LENGTH, _prefixLength);
   unsigned char rMin[DHT_ID_LENGTH];
   memcpy(rMin, _min, DHT_ID_LENGTH);
 
-  DHTUtil::flipBit(_min, DHT_ID_LENGTH, _prefixLength);
+  bitfield::flipBit(_min, DHT_ID_LENGTH, _prefixLength);
 
   ++_prefixLength;
   SharedHandle<DHTBucket> rBucket(new DHTBucket(_prefixLength,

+ 0 - 1
src/DHTGetPeersMessage.cc

@@ -42,7 +42,6 @@
 #include "DHTMessageDispatcher.h"
 #include "DHTMessageCallback.h"
 #include "DHTPeerAnnounceStorage.h"
-#include "DHTUtil.h"
 #include "Peer.h"
 #include "DHTTokenTracker.h"
 #include "Util.h"

+ 0 - 1
src/DHTGetPeersReplyMessage.cc

@@ -44,7 +44,6 @@
 #include "DHTMessageCallback.h"
 #include "bittorrent_helper.h"
 #include "Peer.h"
-#include "DHTUtil.h"
 #include "Util.h"
 #include "bencode.h"
 #include "a2functional.h"

+ 2 - 2
src/DHTMessage.cc

@@ -34,7 +34,7 @@
 /* copyright --> */
 #include "DHTMessage.h"
 #include "DHTNode.h"
-#include "DHTUtil.h"
+#include "Util.h"
 
 namespace aria2 {
 
@@ -59,7 +59,7 @@ DHTMessage::~DHTMessage() {}
 void DHTMessage::generateTransactionID()
 {
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   _transactionID = std::string(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 }
 

+ 2 - 2
src/DHTNode.cc

@@ -36,9 +36,9 @@
 
 #include <cstring>
 
-#include "DHTUtil.h"
 #include "Util.h"
 #include "a2functional.h"
+#include "bittorrent_helper.h"
 
 namespace aria2 {
 
@@ -54,7 +54,7 @@ DHTNode::DHTNode(const unsigned char* id):_port(0), _rtt(0), _condition(1), _las
 
 void DHTNode::generateID()
 {
-  DHTUtil::generateRandomKey(_id);
+  bittorrent::generateRandomKey(_id);
 }
 
 bool DHTNode::operator==(const DHTNode& node) const

+ 3 - 3
src/DHTTokenTracker.cc

@@ -36,7 +36,7 @@
 
 #include <cstring>
 
-#include "DHTUtil.h"
+#include "Util.h"
 #include "bittorrent_helper.h"
 #include "DlAbortEx.h"
 #include "DHTConstants.h"
@@ -47,7 +47,7 @@ namespace aria2 {
 
 DHTTokenTracker::DHTTokenTracker()
 {
-  DHTUtil::generateRandomData(_secret[0], SECRET_SIZE);
+  util::generateRandomData(_secret[0], SECRET_SIZE);
   memcpy(_secret[1], _secret[0], SECRET_SIZE);
 }
 
@@ -97,7 +97,7 @@ bool DHTTokenTracker::validateToken(const std::string& token,
 void DHTTokenTracker::updateTokenSecret()
 {
   memcpy(_secret[1], _secret[0], SECRET_SIZE);
-  DHTUtil::generateRandomData(_secret[0], SECRET_SIZE);
+  util::generateRandomData(_secret[0], SECRET_SIZE);
 }
 
 } // namespace aria2

+ 0 - 80
src/DHTUtil.cc

@@ -1,80 +0,0 @@
-/* <!-- copyright */
-/*
- * aria2 - The high speed download utility
- *
- * Copyright (C) 2006 Tatsuhiro Tsujikawa
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * In addition, as a special exception, the copyright holders give
- * permission to link the code of portions of this program with the
- * OpenSSL library under certain conditions as described in each
- * individual source file, and distribute linked combinations
- * including the two.
- * You must obey the GNU General Public License in all respects
- * for all of the code used other than OpenSSL.  If you modify
- * file(s) with this exception, you may extend this exception to your
- * version of the file(s), but you are not obligated to do so.  If you
- * do not wish to do so, delete this exception statement from your
- * version.  If you delete this exception statement from all source
- * files in the program, then also delete it here.
- */
-/* copyright --> */
-#include "DHTUtil.h"
-#include "MessageDigestHelper.h"
-#include <cassert>
-#include <fstream>
-#include <iomanip>
-#ifdef HAVE_LIBGCRYPT
-# include <gcrypt.h>
-#elif HAVE_LIBSSL
-# include <openssl/rand.h>
-# include "SimpleRandomizer.h"
-#endif // HAVE_LIBSSL
-
-namespace aria2 {
-
-void DHTUtil::generateRandomKey(unsigned char* key)
-{
-  unsigned char bytes[40];
-  generateRandomData(bytes, sizeof(bytes));
-  MessageDigestHelper::digest(key, 20, MessageDigestContext::SHA1, bytes, sizeof(bytes));
-}
-
-void DHTUtil::generateRandomData(unsigned char* data, size_t length)
-{
-#ifdef HAVE_LIBGCRYPT
-  gcry_randomize(data, length, GCRY_STRONG_RANDOM);
-#elif HAVE_LIBSSL
-  if(RAND_bytes(data, length) != 1) {
-    for(size_t i = 0; i < length; ++i) {
-      data[i] = SimpleRandomizer::getInstance()->getRandomNumber(UINT8_MAX+1);
-    }
-  }
-#else
-  std::ifstream i("/dev/urandom", std::ios::binary);
-  i.read(data, length);
-#endif // HAVE_LIBSSL
-}
-
-void DHTUtil::flipBit(unsigned char* data, size_t length, size_t bitIndex)
-{
-  size_t byteIndex = bitIndex/8;
-  assert(byteIndex <= length);
-  unsigned char mask = 128 >> (bitIndex%8);
-  data[byteIndex] ^= mask;
-}
-
-} // namespace aria2

+ 0 - 56
src/DHTUtil.h

@@ -1,56 +0,0 @@
-/* <!-- copyright */
-/*
- * aria2 - The high speed download utility
- *
- * Copyright (C) 2006 Tatsuhiro Tsujikawa
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * In addition, as a special exception, the copyright holders give
- * permission to link the code of portions of this program with the
- * OpenSSL library under certain conditions as described in each
- * individual source file, and distribute linked combinations
- * including the two.
- * You must obey the GNU General Public License in all respects
- * for all of the code used other than OpenSSL.  If you modify
- * file(s) with this exception, you may extend this exception to your
- * version of the file(s), but you are not obligated to do so.  If you
- * do not wish to do so, delete this exception statement from your
- * version.  If you delete this exception statement from all source
- * files in the program, then also delete it here.
- */
-/* copyright --> */
-#ifndef _D_DHT_UTIL_H_
-#define _D_DHT_UTIL_H_
-
-#include "common.h"
-#include <cstdlib>
-
-namespace aria2 {
-
-class DHTUtil {
-public:
-  
-  static void generateRandomKey(unsigned char* key);
-
-  static void generateRandomData(unsigned char* data, size_t length);
-  
-  static void flipBit(unsigned char* data, size_t length, size_t bitIndex);
-
-};
-
-} // namespace aria2
-
-#endif // _D_DHT_UTIL_H_

+ 1 - 2
src/Makefile.am

@@ -197,7 +197,7 @@ SRCS =  Socket.h\
 	SequentialDispatcherCommand.h\
 	PieceSelector.h\
 	LongestSequencePieceSelector.cc LongestSequencePieceSelector.h\
-	bitfield.h\
+	bitfield.cc bitfield.h\
 	BDE.cc BDE.h\
 	CreateRequestCommand.cc CreateRequestCommand.h\
 	DownloadResultCode.h
@@ -347,7 +347,6 @@ SRCS += PeerAbstractCommand.cc PeerAbstractCommand.h\
 	HandshakeExtensionMessage.cc HandshakeExtensionMessage.h\
 	UTPexExtensionMessage.cc UTPexExtensionMessage.h\
 	DHTNode.cc DHTNode.h\
-	DHTUtil.cc DHTUtil.h\
 	DHTBucket.cc DHTBucket.h\
 	DHTRoutingTable.cc DHTRoutingTable.h\
 	DHTMessageEntry.cc DHTMessageEntry.h\

+ 12 - 14
src/Makefile.in

@@ -146,7 +146,6 @@ bin_PROGRAMS = aria2c$(EXEEXT)
 @ENABLE_BITTORRENT_TRUE@	HandshakeExtensionMessage.cc HandshakeExtensionMessage.h\
 @ENABLE_BITTORRENT_TRUE@	UTPexExtensionMessage.cc UTPexExtensionMessage.h\
 @ENABLE_BITTORRENT_TRUE@	DHTNode.cc DHTNode.h\
-@ENABLE_BITTORRENT_TRUE@	DHTUtil.cc DHTUtil.h\
 @ENABLE_BITTORRENT_TRUE@	DHTBucket.cc DHTBucket.h\
 @ENABLE_BITTORRENT_TRUE@	DHTRoutingTable.cc DHTRoutingTable.h\
 @ENABLE_BITTORRENT_TRUE@	DHTMessageEntry.cc DHTMessageEntry.h\
@@ -410,7 +409,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
 	SelectEventPoll.cc SelectEventPoll.h SequentialPicker.h \
 	SequentialDispatcherCommand.h PieceSelector.h \
 	LongestSequencePieceSelector.cc LongestSequencePieceSelector.h \
-	bitfield.h BDE.cc BDE.h CreateRequestCommand.cc \
+	bitfield.cc bitfield.h BDE.cc BDE.h CreateRequestCommand.cc \
 	CreateRequestCommand.h DownloadResultCode.h \
 	XmlRpcRequestParserController.cc \
 	XmlRpcRequestParserController.h \
@@ -490,12 +489,12 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
 	ExtensionMessageFactory.h DefaultExtensionMessageFactory.cc \
 	DefaultExtensionMessageFactory.h HandshakeExtensionMessage.cc \
 	HandshakeExtensionMessage.h UTPexExtensionMessage.cc \
-	UTPexExtensionMessage.h DHTNode.cc DHTNode.h DHTUtil.cc \
-	DHTUtil.h DHTBucket.cc DHTBucket.h DHTRoutingTable.cc \
-	DHTRoutingTable.h DHTMessageEntry.cc DHTMessageEntry.h \
-	DHTMessageDispatcher.h DHTMessageDispatcherImpl.cc \
-	DHTMessageDispatcherImpl.h DHTMessageReceiver.cc \
-	DHTMessageReceiver.h DHTMessageTracker.cc DHTMessageTracker.h \
+	UTPexExtensionMessage.h DHTNode.cc DHTNode.h DHTBucket.cc \
+	DHTBucket.h DHTRoutingTable.cc DHTRoutingTable.h \
+	DHTMessageEntry.cc DHTMessageEntry.h DHTMessageDispatcher.h \
+	DHTMessageDispatcherImpl.cc DHTMessageDispatcherImpl.h \
+	DHTMessageReceiver.cc DHTMessageReceiver.h \
+	DHTMessageTracker.cc DHTMessageTracker.h \
 	DHTMessageTrackerEntry.cc DHTMessageTrackerEntry.h \
 	DHTMessage.cc DHTMessage.h DHTConnection.h \
 	DHTConnectionImpl.cc DHTConnectionImpl.h DHTAbstractMessage.cc \
@@ -645,8 +644,7 @@ am__objects_6 =
 @ENABLE_BITTORRENT_TRUE@	DefaultExtensionMessageFactory.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	HandshakeExtensionMessage.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	UTPexExtensionMessage.$(OBJEXT) \
-@ENABLE_BITTORRENT_TRUE@	DHTNode.$(OBJEXT) DHTUtil.$(OBJEXT) \
-@ENABLE_BITTORRENT_TRUE@	DHTBucket.$(OBJEXT) \
+@ENABLE_BITTORRENT_TRUE@	DHTNode.$(OBJEXT) DHTBucket.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	DHTRoutingTable.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	DHTMessageEntry.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	DHTMessageDispatcherImpl.$(OBJEXT) \
@@ -800,8 +798,8 @@ am__objects_27 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
 	NsCookieParser.$(OBJEXT) CookieStorage.$(OBJEXT) \
 	SocketBuffer.$(OBJEXT) OptionHandlerException.$(OBJEXT) \
 	URIResult.$(OBJEXT) SelectEventPoll.$(OBJEXT) \
-	LongestSequencePieceSelector.$(OBJEXT) BDE.$(OBJEXT) \
-	CreateRequestCommand.$(OBJEXT) $(am__objects_1) \
+	LongestSequencePieceSelector.$(OBJEXT) bitfield.$(OBJEXT) \
+	BDE.$(OBJEXT) CreateRequestCommand.$(OBJEXT) $(am__objects_1) \
 	$(am__objects_2) $(am__objects_3) $(am__objects_4) \
 	$(am__objects_5) $(am__objects_6) $(am__objects_7) \
 	$(am__objects_8) $(am__objects_9) $(am__objects_10) \
@@ -1137,7 +1135,7 @@ SRCS = Socket.h SocketCore.cc SocketCore.h BinaryStream.h Command.cc \
 	SelectEventPoll.cc SelectEventPoll.h SequentialPicker.h \
 	SequentialDispatcherCommand.h PieceSelector.h \
 	LongestSequencePieceSelector.cc LongestSequencePieceSelector.h \
-	bitfield.h BDE.cc BDE.h CreateRequestCommand.cc \
+	bitfield.cc bitfield.h BDE.cc BDE.h CreateRequestCommand.cc \
 	CreateRequestCommand.h DownloadResultCode.h $(am__append_1) \
 	$(am__append_2) $(am__append_3) $(am__append_4) \
 	$(am__append_5) $(am__append_6) $(am__append_7) \
@@ -1362,7 +1360,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTTokenTracker.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTTokenUpdateCommand.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTUnknownMessage.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTUtil.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultAuthResolver.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultBtAnnounce.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultBtInteractive.Po@am__quote@
@@ -1531,6 +1528,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ZeroBtMessage.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asctime_r.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bencode.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitfield.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bittorrent_helper.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daemon.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/download_helper.Po@am__quote@

+ 29 - 0
src/Util.cc

@@ -46,6 +46,8 @@
 #include <sstream>
 #include <ostream>
 #include <algorithm>
+#include <fstream>
+#include <iomanip>
 #ifndef HAVE_SLEEP
 # ifdef HAVE_WINSOCK_H
 #  define WIN32_LEAN_AND_MEAN
@@ -53,6 +55,13 @@
 # endif // HAVE_WINSOCK_H
 #endif // HAVE_SLEEP
 
+#ifdef HAVE_LIBGCRYPT
+# include <gcrypt.h>
+#elif HAVE_LIBSSL
+# include <openssl/rand.h>
+# include "SimpleRandomizer.h"
+#endif // HAVE_LIBSSL
+
 #include "File.h"
 #include "message.h"
 #include "Randomizer.h"
@@ -792,4 +801,24 @@ std::map<size_t, std::string> Util::createIndexPathMap(std::istream& i)
   return indexPathMap;
 }
 
+namespace util {
+
+void generateRandomData(unsigned char* data, size_t length)
+{
+#ifdef HAVE_LIBGCRYPT
+  gcry_randomize(data, length, GCRY_STRONG_RANDOM);
+#elif HAVE_LIBSSL
+  if(RAND_bytes(data, length) != 1) {
+    for(size_t i = 0; i < length; ++i) {
+      data[i] = SimpleRandomizer::getInstance()->getRandomNumber(UINT8_MAX+1);
+    }
+  }
+#else
+  std::ifstream i("/dev/urandom", std::ios::binary);
+  i.read(data, length);
+#endif // HAVE_LIBSSL
+}
+
+} // namespace util
+
 } // namespace aria2

+ 6 - 0
src/Util.h

@@ -332,6 +332,12 @@ static OutputIterator split(const std::string& src, OutputIterator out,
   return out;
 }
 
+namespace util {
+
+void generateRandomData(unsigned char* data, size_t length);
+
+} // namespace util
+
 } // namespace aria2
 
 #endif // _D_UTIL_H_

+ 2 - 0
src/bitfield.h

@@ -113,6 +113,8 @@ inline size_t countSetBit(const unsigned char* bitfield, size_t nbits)
   return count;
 }
 
+void flipBit(unsigned char* data, size_t length, size_t bitIndex);
+
 } // namespace bitfield
 
 } // namespace aria2

+ 8 - 3
src/bittorrent_helper.cc

@@ -52,7 +52,6 @@
 #include "a2netcompat.h"
 #include "BtConstants.h"
 #include "bitfield.h"
-#include "DHTUtil.h"
 
 namespace aria2 {
 
@@ -625,8 +624,7 @@ std::string generatePeerId(const std::string& peerIdPrefix)
   unsigned char buf[20];
   int len = 20-peerIdPrefix.size();
   if(len > 0) {
-    DHTUtil::generateRandomData(buf, len);
-
+    util::generateRandomData(buf, len);
     peerId += std::string(&buf[0], &buf[len]);
   } if(peerId.size() > 20) {
     peerId.erase(20);
@@ -837,6 +835,13 @@ void assertID
   }
 }
 
+void generateRandomKey(unsigned char* key)
+{
+  unsigned char bytes[40];
+  util::generateRandomData(bytes, sizeof(bytes));
+  MessageDigestHelper::digest(key, 20, MessageDigestContext::SHA1, bytes, sizeof(bytes));
+}
+
 } // namespace bittorrent
 
 } // namespace aria2

+ 2 - 0
src/bittorrent_helper.h

@@ -208,6 +208,8 @@ void assertPayloadLengthEqual
 void assertID
 (uint8_t expected, const unsigned char* data, const std::string& msgName);
 
+void generateRandomKey(unsigned char* key);
+
 } // namespace bittorrent
 
 } // namespace aria2

+ 5 - 4
test/ARC4Test.cc

@@ -1,10 +1,11 @@
 #include "ARC4Encryptor.h"
+
+#include <cstring>
+#include <cppunit/extensions/HelperMacros.h>
+
 #include "ARC4Decryptor.h"
 #include "Exception.h"
 #include "Util.h"
-#include "DHTUtil.h"
-#include <cstring>
-#include <cppunit/extensions/HelperMacros.h>
 
 namespace aria2 {
 
@@ -31,7 +32,7 @@ void ARC4Test::testEncryptDecrypt()
   const size_t LEN = 20;
   unsigned char key[LEN];
   memset(key, 0, LEN);
-  DHTUtil::generateRandomData(key, sizeof(key));
+  util::generateRandomData(key, sizeof(key));
   enc.init(key, sizeof(key));
   dec.init(key, sizeof(key));
 

+ 4 - 3
test/BNodeTest.cc

@@ -1,11 +1,12 @@
 #include "BNode.h"
+
+#include <cstring>
+#include <cppunit/extensions/HelperMacros.h>
+
 #include "DHTNode.h"
 #include "DHTBucket.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
-#include <cstring>
-#include <cppunit/extensions/HelperMacros.h>
 
 namespace aria2 {
 

+ 4 - 5
test/DHTAnnouncePeerMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "MockDHTMessageFactory.h"
@@ -47,11 +46,11 @@ void DHTAnnouncePeerMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   unsigned char infoHash[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(infoHash, DHT_ID_LENGTH);
+  util::generateRandomData(infoHash, DHT_ID_LENGTH);
 
   std::string token = "token";
   uint16_t port = 6881;
@@ -83,11 +82,11 @@ void DHTAnnouncePeerMessageTest::testDoReceivedAction()
   remoteNode->setPort(6881);
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   unsigned char infoHash[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(infoHash, DHT_ID_LENGTH);
+  util::generateRandomData(infoHash, DHT_ID_LENGTH);
 
   std::string token = "token";
   uint16_t port = 6882;

+ 1 - 2
test/DHTAnnouncePeerReplyMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "bencode.h"
@@ -32,7 +31,7 @@ void DHTAnnouncePeerReplyMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   DHTAnnouncePeerReplyMessage msg(localNode, remoteNode, transactionID);

+ 2 - 3
test/DHTFindNodeMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "MockDHTMessageFactory.h"
@@ -52,7 +51,7 @@ void DHTFindNodeMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   SharedHandle<DHTNode> targetNode(new DHTNode());
@@ -79,7 +78,7 @@ void DHTFindNodeMessageTest::testDoReceivedAction()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   SharedHandle<DHTNode> targetNode(new DHTNode());

+ 1 - 2
test/DHTFindNodeReplyMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "DHTBucket.h"
@@ -34,7 +33,7 @@ void DHTFindNodeReplyMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   DHTFindNodeReplyMessage msg(localNode, remoteNode, transactionID);

+ 4 - 5
test/DHTGetPeersMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "MockDHTMessageFactory.h"
@@ -70,11 +69,11 @@ void DHTGetPeersMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   unsigned char infoHash[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(infoHash, DHT_ID_LENGTH);
+  util::generateRandomData(infoHash, DHT_ID_LENGTH);
 
   DHTGetPeersMessage msg(localNode, remoteNode, infoHash, transactionID);
 
@@ -101,11 +100,11 @@ void DHTGetPeersMessageTest::testDoReceivedAction()
   remoteNode->setPort(6881);
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   unsigned char infoHash[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(infoHash, DHT_ID_LENGTH);
+  util::generateRandomData(infoHash, DHT_ID_LENGTH);
 
   DHTTokenTracker tokenTracker;
   MockDHTMessageDispatcher dispatcher;

+ 1 - 2
test/DHTGetPeersReplyMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "DHTBucket.h"
@@ -35,7 +34,7 @@ void DHTGetPeersReplyMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   std::string token = "token";

+ 2 - 3
test/DHTPingMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "MockDHTMessageFactory.h"
@@ -50,7 +49,7 @@ void DHTPingMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   DHTPingMessage msg(localNode, remoteNode, transactionID);
@@ -74,7 +73,7 @@ void DHTPingMessageTest::testDoReceivedAction()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   MockDHTMessageDispatcher dispatcher;

+ 2 - 3
test/DHTPingReplyMessageTest.cc

@@ -3,7 +3,6 @@
 #include <cppunit/extensions/HelperMacros.h>
 
 #include "DHTNode.h"
-#include "DHTUtil.h"
 #include "Exception.h"
 #include "Util.h"
 #include "bencode.h"
@@ -32,11 +31,11 @@ void DHTPingReplyMessageTest::testGetBencodedMessage()
   SharedHandle<DHTNode> remoteNode(new DHTNode());
 
   unsigned char tid[DHT_TRANSACTION_ID_LENGTH];
-  DHTUtil::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
+  util::generateRandomData(tid, DHT_TRANSACTION_ID_LENGTH);
   std::string transactionID(&tid[0], &tid[DHT_TRANSACTION_ID_LENGTH]);
 
   unsigned char id[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(id, DHT_ID_LENGTH);
+  util::generateRandomData(id, DHT_ID_LENGTH);
 
   DHTPingReplyMessage msg(localNode, remoteNode, id, transactionID);
 

+ 4 - 3
test/DHTTokenTrackerTest.cc

@@ -1,9 +1,10 @@
 #include "DHTTokenTracker.h"
+
+#include <cppunit/extensions/HelperMacros.h>
+
 #include "Exception.h"
 #include "Util.h"
-#include "DHTUtil.h"
 #include "DHTConstants.h"
-#include <cppunit/extensions/HelperMacros.h>
 
 namespace aria2 {
 
@@ -26,7 +27,7 @@ CPPUNIT_TEST_SUITE_REGISTRATION(DHTTokenTrackerTest);
 void DHTTokenTrackerTest::testGenerateToken()
 {
   unsigned char infohash[DHT_ID_LENGTH];
-  DHTUtil::generateRandomData(infohash, DHT_ID_LENGTH);
+  util::generateRandomData(infohash, DHT_ID_LENGTH);
   std::string ipaddr = "192.168.0.1";
   uint16_t port = 6881;
   

+ 0 - 34
test/DHTUtilTest.cc

@@ -1,34 +0,0 @@
-#include "DHTUtil.h"
-#include "Exception.h"
-#include "Util.h"
-#include <cstring>
-#include <cppunit/extensions/HelperMacros.h>
-
-namespace aria2 {
-
-class DHTUtilTest:public CppUnit::TestFixture {
-
-  CPPUNIT_TEST_SUITE(DHTUtilTest);
-  CPPUNIT_TEST(testGenerateRandomData);
-  CPPUNIT_TEST_SUITE_END();
-public:
-  void setUp() {}
-
-  void tearDown() {}
-
-  void testGenerateRandomData();
-};
-
-
-CPPUNIT_TEST_SUITE_REGISTRATION(DHTUtilTest);
-
-void DHTUtilTest::testGenerateRandomData()
-{
-  unsigned char data1[20];
-  DHTUtil::generateRandomData(data1, sizeof(data1));
-  unsigned char data2[20];
-  DHTUtil::generateRandomData(data2, sizeof(data2));
-  CPPUNIT_ASSERT(memcmp(data1, data2, sizeof(data1)) != 0);
-}
-
-} // namespace aria2

+ 0 - 1
test/Makefile.am

@@ -165,7 +165,6 @@ aria2c_SOURCES += BtAllowedFastMessageTest.cc\
 	DHKeyExchangeTest.cc\
 	ARC4Test.cc\
 	MSEHandshakeTest.cc\
-	DHTUtilTest.cc\
 	MockBtAnnounce.h\
 	MockBtProgressInfoFile.h\
 	MockBtRequestFactory.h\

+ 9 - 12
test/Makefile.in

@@ -115,7 +115,6 @@ check_PROGRAMS = $(am__EXEEXT_1)
 @ENABLE_BITTORRENT_TRUE@	DHKeyExchangeTest.cc\
 @ENABLE_BITTORRENT_TRUE@	ARC4Test.cc\
 @ENABLE_BITTORRENT_TRUE@	MSEHandshakeTest.cc\
-@ENABLE_BITTORRENT_TRUE@	DHTUtilTest.cc\
 @ENABLE_BITTORRENT_TRUE@	MockBtAnnounce.h\
 @ENABLE_BITTORRENT_TRUE@	MockBtProgressInfoFile.h\
 @ENABLE_BITTORRENT_TRUE@	MockBtRequestFactory.h\
@@ -239,15 +238,15 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \
 	DHTTokenTrackerTest.cc XORCloserTest.cc DHTIDCloserTest.cc \
 	DHTRoutingTableSerializerTest.cc \
 	DHTRoutingTableDeserializerTest.cc DHKeyExchangeTest.cc \
-	ARC4Test.cc MSEHandshakeTest.cc DHTUtilTest.cc \
-	MockBtAnnounce.h MockBtProgressInfoFile.h \
-	MockBtRequestFactory.h MockDHTMessage.h \
-	MockDHTMessageCallback.h MockDHTMessageDispatcher.h \
-	MockDHTMessageFactory.h MockDHTTask.h MockDHTTaskFactory.h \
-	MockDHTTaskQueue.h MockExtensionMessage.h \
-	MockExtensionMessageFactory.h MockPieceStorage.h \
-	BencodeTest.cc BittorrentHelperTest.cc MetalinkerTest.cc \
-	MetalinkEntryTest.cc Metalink2RequestGroupTest.cc \
+	ARC4Test.cc MSEHandshakeTest.cc MockBtAnnounce.h \
+	MockBtProgressInfoFile.h MockBtRequestFactory.h \
+	MockDHTMessage.h MockDHTMessageCallback.h \
+	MockDHTMessageDispatcher.h MockDHTMessageFactory.h \
+	MockDHTTask.h MockDHTTaskFactory.h MockDHTTaskQueue.h \
+	MockExtensionMessage.h MockExtensionMessageFactory.h \
+	MockPieceStorage.h BencodeTest.cc BittorrentHelperTest.cc \
+	MetalinkerTest.cc MetalinkEntryTest.cc \
+	Metalink2RequestGroupTest.cc \
 	MetalinkPostDownloadHandlerTest.cc MetalinkHelperTest.cc \
 	MetalinkParserControllerTest.cc MetalinkProcessorTest.cc
 @ENABLE_XML_RPC_TRUE@am__objects_1 = XmlRpcRequestParserControllerTest.$(OBJEXT) \
@@ -326,7 +325,6 @@ am__aria2c_SOURCES_DIST = AllTest.cc TestUtil.cc TestUtil.h \
 @ENABLE_BITTORRENT_TRUE@	DHKeyExchangeTest.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	ARC4Test.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	MSEHandshakeTest.$(OBJEXT) \
-@ENABLE_BITTORRENT_TRUE@	DHTUtilTest.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	BencodeTest.$(OBJEXT) \
 @ENABLE_BITTORRENT_TRUE@	BittorrentHelperTest.$(OBJEXT)
 @ENABLE_METALINK_TRUE@am__objects_7 = MetalinkerTest.$(OBJEXT) \
@@ -762,7 +760,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTRoutingTableTest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTTokenTrackerTest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTUnknownMessageTest.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DHTUtilTest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DNSCacheTest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultAuthResolverTest.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DefaultBtAnnounceTest.Po@am__quote@

+ 12 - 0
test/UtilTest.cc

@@ -1,5 +1,6 @@
 #include "Util.h"
 
+#include <cstring>
 #include <string>
 #include <iostream>
 
@@ -54,6 +55,7 @@ class UtilTest:public CppUnit::TestFixture {
   CPPUNIT_TEST(testJoinPath);
   CPPUNIT_TEST(testParseIndexPath);
   CPPUNIT_TEST(testCreateIndexPathMap);
+  CPPUNIT_TEST(testGenerateRandomData);
   CPPUNIT_TEST_SUITE_END();
 private:
 
@@ -97,6 +99,7 @@ public:
   void testJoinPath();
   void testParseIndexPath();
   void testCreateIndexPathMap();
+  void testGenerateRandomData();
 };
 
 
@@ -788,4 +791,13 @@ void UtilTest::testCreateIndexPathMap()
   CPPUNIT_ASSERT_EQUAL(std::string("/myhome/mypicture.png"), m[100]);
 }
 
+void UtilTest::testGenerateRandomData()
+{
+  unsigned char data1[20];
+  util::generateRandomData(data1, sizeof(data1));
+  unsigned char data2[20];
+  util::generateRandomData(data2, sizeof(data2));
+  CPPUNIT_ASSERT(memcmp(data1, data2, sizeof(data1)) != 0);
+}
+
 } // namespace aria2