From 2666bc8170a5d7866acbe3112fdf6a426ef73255 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 5 Feb 2011 23:38:51 +0900 Subject: [PATCH] Renamed MessageDigestHelper as message_digest_helper Static member variables in MessageDigestHelper class are now functions under message_digest namespace. --- src/BtPieceMessage.cc | 4 +- src/DHTTokenTracker.cc | 6 +- src/DownloadCommand.cc | 4 +- src/IteratableChunkChecksumValidator.cc | 1 - src/MSEHandshake.cc | 16 ++--- src/Makefile.am | 2 +- src/UTMetadataDataExtensionMessage.cc | 8 +-- src/bittorrent_helper.cc | 14 ++-- src/main.cc | 4 +- ...gestHelper.cc => message_digest_helper.cc} | 22 ++++-- ...DigestHelper.h => message_digest_helper.h} | 69 +++++++++---------- src/util.cc | 5 +- test/GZipDecoderTest.cc | 1 - test/GZipDecodingStreamFilterTest.cc | 1 - test/MessageDigestHelperTest.cc | 17 +---- test/TestUtil.cc | 4 +- test/UTMetadataDataExtensionMessageTest.cc | 8 +-- test/UTMetadataPostDownloadHandlerTest.cc | 4 +- 18 files changed, 90 insertions(+), 100 deletions(-) rename src/{MessageDigestHelper.cc => message_digest_helper.cc} (91%) rename src/{MessageDigestHelper.h => message_digest_helper.h} (62%) diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index eabb916a..d57e5cf4 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -42,7 +42,7 @@ #include "util.h" #include "message.h" #include "DlAbortEx.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "DiskAdaptor.h" #include "Logger.h" #include "LogFactory.h" @@ -223,7 +223,7 @@ bool BtPieceMessage::checkPieceHash(const SharedHandle& piece) } else { off_t offset = (off_t)piece->getIndex()*downloadContext_->getPieceLength(); - return MessageDigestHelper::staticSHA1DigestHexDigest + return message_digest::staticSHA1DigestHexDigest (getPieceStorage()->getDiskAdaptor(), offset, piece->getLength()) == downloadContext_->getPieceHash(piece->getIndex()); } diff --git a/src/DHTTokenTracker.cc b/src/DHTTokenTracker.cc index b67e7b63..625ef40e 100644 --- a/src/DHTTokenTracker.cc +++ b/src/DHTTokenTracker.cc @@ -41,7 +41,7 @@ #include "DlAbortEx.h" #include "DHTConstants.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "fmt.h" namespace aria2 { @@ -76,8 +76,8 @@ std::string DHTTokenTracker::generateToken memcpy(src, infoHash, DHT_ID_LENGTH); memcpy(src+DHT_ID_LENGTH+COMPACT_LEN_IPV6, secret, SECRET_SIZE); unsigned char md[20]; - MessageDigestHelper::digest(md, sizeof(md), MessageDigest::sha1(), - src, sizeof(src)); + message_digest::digest(md, sizeof(md), MessageDigest::sha1(), + src, sizeof(src)); return std::string(&md[0], &md[sizeof(md)]); } diff --git a/src/DownloadCommand.cc b/src/DownloadCommand.cc index 11e94dc4..9e2066f0 100644 --- a/src/DownloadCommand.cc +++ b/src/DownloadCommand.cc @@ -64,7 +64,7 @@ #include "SocketRecvBuffer.h" #ifdef ENABLE_MESSAGE_DIGEST # include "MessageDigest.h" -# include "MessageDigestHelper.h" +# include "message_digest_helper.h" #endif // ENABLE_MESSAGE_DIGEST #ifdef ENABLE_BITTORRENT # include "bittorrent_helper.h" @@ -236,7 +236,7 @@ bool DownloadCommand::executeInternal() { messageDigest_->reset(); validatePieceHash (segment, expectedPieceHash, - MessageDigestHelper::hexDigest + message_digest::hexDigest (messageDigest_, getPieceStorage()->getDiskAdaptor(), segment->getPosition(), diff --git a/src/IteratableChunkChecksumValidator.cc b/src/IteratableChunkChecksumValidator.cc index 01833b66..acb4a08c 100644 --- a/src/IteratableChunkChecksumValidator.cc +++ b/src/IteratableChunkChecksumValidator.cc @@ -39,7 +39,6 @@ #include "util.h" #include "message.h" -#include "MessageDigestHelper.h" #include "DiskAdaptor.h" #include "FileEntry.h" #include "RecoverableException.h" diff --git a/src/MSEHandshake.cc b/src/MSEHandshake.cc index f550c538..2f4086fa 100644 --- a/src/MSEHandshake.cc +++ b/src/MSEHandshake.cc @@ -48,7 +48,7 @@ #include "ARC4Encryptor.h" #include "ARC4Decryptor.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "SimpleRandomizer.h" #include "util.h" #include "DownloadContext.h" @@ -192,16 +192,16 @@ void MSEHandshake::initCipher(const unsigned char* infoHash) unsigned char localCipherKey[20]; sha1_->reset(); - MessageDigestHelper::digest(localCipherKey, sizeof(localCipherKey), - sha1_, s, sizeof(s)); + message_digest::digest(localCipherKey, sizeof(localCipherKey), + sha1_, s, sizeof(s)); encryptor_.reset(new ARC4Encryptor()); encryptor_->init(localCipherKey, sizeof(localCipherKey)); unsigned char peerCipherKey[20]; memcpy(s, initiator_?"keyB":"keyA", 4); sha1_->reset(); - MessageDigestHelper::digest(peerCipherKey, sizeof(peerCipherKey), - sha1_, s, sizeof(s)); + message_digest::digest(peerCipherKey, sizeof(peerCipherKey), + sha1_, s, sizeof(s)); decryptor_.reset(new ARC4Decryptor()); decryptor_->init(peerCipherKey, sizeof(peerCipherKey)); @@ -241,7 +241,7 @@ void MSEHandshake::createReq1Hash(unsigned char* md) const memcpy(buffer, "req1", 4); memcpy(buffer+4, secret_, KEY_LENGTH); sha1_->reset(); - MessageDigestHelper::digest(md, 20, sha1_, buffer, 4+KEY_LENGTH); + message_digest::digest(md, 20, sha1_, buffer, 4+KEY_LENGTH); } void MSEHandshake::createReq23Hash(unsigned char* md, const unsigned char* infoHash) const @@ -251,14 +251,14 @@ void MSEHandshake::createReq23Hash(unsigned char* md, const unsigned char* infoH memcpy(x+4, infoHash, INFO_HASH_LENGTH); unsigned char xh[20]; sha1_->reset(); - MessageDigestHelper::digest(xh, sizeof(xh), sha1_, x, sizeof(x)); + message_digest::digest(xh, sizeof(xh), sha1_, x, sizeof(x)); unsigned char y[4+96]; memcpy(y, "req3", 4); memcpy(y+4, secret_, KEY_LENGTH); unsigned char yh[20]; sha1_->reset(); - MessageDigestHelper::digest(yh, sizeof(yh), sha1_, y, sizeof(y)); + message_digest::digest(yh, sizeof(yh), sha1_, y, sizeof(y)); for(size_t i = 0; i < 20; ++i) { md[i] = xh[i]^yh[i]; diff --git a/src/Makefile.am b/src/Makefile.am index b4e64306..f7a7f447 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -291,7 +291,7 @@ SRCS += IteratableChunkChecksumValidator.cc IteratableChunkChecksumValidator.h\ CheckIntegrityDispatcherCommand.cc CheckIntegrityDispatcherCommand.h\ CheckIntegrityCommand.cc CheckIntegrityCommand.h\ ChecksumCheckIntegrityEntry.cc ChecksumCheckIntegrityEntry.h\ - MessageDigestHelper.cc MessageDigestHelper.h\ + message_digest_helper.cc message_digest_helper.h\ Checksum.cc Checksum.h\ ChunkChecksum.cc ChunkChecksum.h\ MessageDigest.cc MessageDigest.h\ diff --git a/src/UTMetadataDataExtensionMessage.cc b/src/UTMetadataDataExtensionMessage.cc index 93cf0a62..b5d63043 100644 --- a/src/UTMetadataDataExtensionMessage.cc +++ b/src/UTMetadataDataExtensionMessage.cc @@ -41,7 +41,7 @@ #include "PieceStorage.h" #include "BtConstants.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "bittorrent_helper.h" #include "DiskAdaptor.h" #include "Piece.h" @@ -87,9 +87,9 @@ void UTMetadataDataExtensionMessage::doReceivedAction() if(pieceStorage_->downloadFinished()) { std::string metadata = util::toString(pieceStorage_->getDiskAdaptor()); unsigned char infoHash[INFO_HASH_LENGTH]; - MessageDigestHelper::digest(infoHash, INFO_HASH_LENGTH, - MessageDigest::sha1(), - metadata.data(), metadata.size()); + message_digest::digest(infoHash, INFO_HASH_LENGTH, + MessageDigest::sha1(), + metadata.data(), metadata.size()); if(memcmp(infoHash, bittorrent::getInfoHash(dctx_), INFO_HASH_LENGTH) == 0) { A2_LOG_INFO("Got ut_metadata"); diff --git a/src/bittorrent_helper.cc b/src/bittorrent_helper.cc index 8495c013..3cb5d524 100644 --- a/src/bittorrent_helper.cc +++ b/src/bittorrent_helper.cc @@ -46,7 +46,7 @@ #include "fmt.h" #include "BtConstants.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "a2netcompat.h" #include "BtConstants.h" #include "bitfield.h" @@ -415,10 +415,10 @@ void processRootDictionary // retrieve infoHash std::string encodedInfoDict = bencode2::encode(infoDict); unsigned char infoHash[INFO_HASH_LENGTH]; - MessageDigestHelper::digest(infoHash, INFO_HASH_LENGTH, - MessageDigest::sha1(), - encodedInfoDict.data(), - encodedInfoDict.size()); + message_digest::digest(infoHash, INFO_HASH_LENGTH, + MessageDigest::sha1(), + encodedInfoDict.data(), + encodedInfoDict.size()); torrent->infoHash = std::string(&infoHash[0], &infoHash[INFO_HASH_LENGTH]); torrent->metadata = encodedInfoDict; torrent->metadataSize = encodedInfoDict.size(); @@ -679,7 +679,7 @@ void computeFastSet memcpy(tx+4, infoHash, 20); unsigned char x[20]; SharedHandle sha1 = MessageDigest::sha1(); - MessageDigestHelper::digest(x, sizeof(x), sha1, tx, 24); + message_digest::digest(x, sizeof(x), sha1, tx, 24); while(fastSet.size() < fastSetSize) { for(size_t i = 0; i < 5 && fastSet.size() < fastSetSize; ++i) { size_t j = i*4; @@ -693,7 +693,7 @@ void computeFastSet } unsigned char temp[20]; sha1->reset(); - MessageDigestHelper::digest(temp, sizeof(temp), sha1, x, sizeof(x)); + message_digest::digest(temp, sizeof(temp), sha1, x, sizeof(x)); memcpy(x, temp, sizeof(x)); } } diff --git a/src/main.cc b/src/main.cc index 3ce79c79..e99ce156 100644 --- a/src/main.cc +++ b/src/main.cc @@ -77,7 +77,7 @@ # include "MetalinkEntry.h" #endif // ENABLE_METALINK #ifdef ENABLE_MESSAGE_DIGEST -# include "MessageDigestHelper.h" +# include "message_digest_helper.h" #endif // ENABLE_MESSAGE_DIGEST extern char* optarg; @@ -196,7 +196,7 @@ error_code::Value main(int argc, char* argv[]) A2_LOG_INFO(MSG_LOGGING_STARTED); #ifdef ENABLE_MESSAGE_DIGEST - MessageDigestHelper::staticSHA1DigestInit(); + message_digest::staticSHA1DigestInit(); #endif // ENABLE_MESSAGE_DIGEST if(op->getAsBool(PREF_DISABLE_IPV6)) { diff --git a/src/MessageDigestHelper.cc b/src/message_digest_helper.cc similarity index 91% rename from src/MessageDigestHelper.cc rename to src/message_digest_helper.cc index ca51bea0..b30d2179 100644 --- a/src/MessageDigestHelper.cc +++ b/src/message_digest_helper.cc @@ -32,7 +32,7 @@ * files in the program, then also delete it here. */ /* copyright --> */ -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include #include @@ -46,27 +46,33 @@ namespace aria2 { -SharedHandle MessageDigestHelper::sha1Ctx_; +namespace message_digest { -void MessageDigestHelper::staticSHA1DigestInit() +namespace { + +SharedHandle sha1Ctx_; + +} // namespace + +void staticSHA1DigestInit() { staticSHA1DigestFree(); sha1Ctx_ = MessageDigest::sha1(); } -void MessageDigestHelper::staticSHA1DigestFree() +void staticSHA1DigestFree() { sha1Ctx_.reset(); } -std::string MessageDigestHelper::staticSHA1DigestHexDigest +std::string staticSHA1DigestHexDigest (const BinaryStreamHandle& bs, off_t offset, uint64_t length) { sha1Ctx_->reset(); return hexDigest(sha1Ctx_, bs, offset, length); } -std::string MessageDigestHelper::hexDigest +std::string hexDigest (const SharedHandle& ctx, const SharedHandle& bs, off_t offset, uint64_t length) @@ -94,7 +100,7 @@ std::string MessageDigestHelper::hexDigest return ctx->hexDigest(); } -void MessageDigestHelper::digest +void digest (unsigned char* md, size_t mdLength, const SharedHandle& ctx, const void* data, size_t length) { @@ -110,4 +116,6 @@ void MessageDigestHelper::digest ctx->digest(md); } +} // namespace message_digest + } // namespace aria2 diff --git a/src/MessageDigestHelper.h b/src/message_digest_helper.h similarity index 62% rename from src/MessageDigestHelper.h rename to src/message_digest_helper.h index 4f667601..27f9ed81 100644 --- a/src/MessageDigestHelper.h +++ b/src/message_digest_helper.h @@ -46,47 +46,44 @@ namespace aria2 { class BinaryStream; class MessageDigest; -class MessageDigestHelper { -private: - static SharedHandle sha1Ctx_; +namespace message_digest { - MessageDigestHelper(); -public: - /** - * staticSHA1DigestInit(), staticSHA1DigestFree(), staticSHA1Digest() - * use statically declared MessageDigest sha1Ctx_. - */ - /** - * Initializes sha1Ctx_ - */ - static void staticSHA1DigestInit(); +/** + * staticSHA1DigestInit(), staticSHA1DigestFree(), staticSHA1Digest() + * use statically declared MessageDigest sha1Ctx_. + */ +/** + * Initializes sha1Ctx_ + */ +void staticSHA1DigestInit(); - /** - * Frees allocated resources for sha1Ctx_ - */ - static void staticSHA1DigestFree(); +/** + * Frees allocated resources for sha1Ctx_ + */ +void staticSHA1DigestFree(); - static std::string staticSHA1DigestHexDigest - (const SharedHandle& bs, off_t offset, uint64_t length); +std::string staticSHA1DigestHexDigest +(const SharedHandle& bs, off_t offset, uint64_t length); - /** - * ctx must be initialized or reseted before calling this function. - * Returns hex digest string, not *raw* digest - */ - static std::string hexDigest - (const SharedHandle& ctx, - const SharedHandle& bs, - off_t offset, uint64_t length); +/** + * ctx must be initialized or reseted before calling this function. + * Returns hex digest string, not *raw* digest + */ +std::string hexDigest +(const SharedHandle& ctx, + const SharedHandle& bs, + off_t offset, uint64_t length); - /** - * Stores *raw* message digest into md. - * Throws exception when mdLength is less than the size of message digest. - */ - static void digest - (unsigned char* md, size_t mdLength, - const SharedHandle& ctx, - const void* data, size_t length); -}; +/** + * Stores *raw* message digest into md. + * Throws exception when mdLength is less than the size of message digest. + */ +void digest +(unsigned char* md, size_t mdLength, + const SharedHandle& ctx, + const void* data, size_t length); + +} // namespace message_digest } // namespace aria2 diff --git a/src/util.cc b/src/util.cc index 6bf66e63..f248c1e6 100644 --- a/src/util.cc +++ b/src/util.cc @@ -84,7 +84,7 @@ #ifdef ENABLE_MESSAGE_DIGEST # include "MessageDigest.h" -# include "MessageDigestHelper.h" +# include "message_digest_helper.h" #endif // ENABLE_MESSAGE_DIGEST // For libc6 which doesn't define ULLONG_MAX properly because of broken limits.h @@ -1324,8 +1324,7 @@ void generateRandomKey(unsigned char* key) #ifdef ENABLE_MESSAGE_DIGEST unsigned char bytes[40]; generateRandomData(bytes, sizeof(bytes)); - MessageDigestHelper::digest - (key, 20, MessageDigest::sha1(), bytes, sizeof(bytes)); + message_digest::digest(key, 20, MessageDigest::sha1(), bytes, sizeof(bytes)); #else // !ENABLE_MESSAGE_DIGEST generateRandomData(key, 20); #endif // !ENABLE_MESSAGE_DIGEST diff --git a/test/GZipDecoderTest.cc b/test/GZipDecoderTest.cc index 38f572c6..463d5ce4 100644 --- a/test/GZipDecoderTest.cc +++ b/test/GZipDecoderTest.cc @@ -10,7 +10,6 @@ #include "util.h" #ifdef ENABLE_MESSAGE_DIGEST # include "MessageDigest.h" -# include "MessageDigestHelper.h" #endif // ENABLE_MESSAGE_DIGEST namespace aria2 { diff --git a/test/GZipDecodingStreamFilterTest.cc b/test/GZipDecodingStreamFilterTest.cc index e4a2afdd..de030401 100644 --- a/test/GZipDecodingStreamFilterTest.cc +++ b/test/GZipDecodingStreamFilterTest.cc @@ -14,7 +14,6 @@ #include "MockSegment.h" #ifdef ENABLE_MESSAGE_DIGEST # include "MessageDigest.h" -# include "MessageDigestHelper.h" #endif // ENABLE_MESSAGE_DIGEST namespace aria2 { diff --git a/test/MessageDigestHelperTest.cc b/test/MessageDigestHelperTest.cc index bc2d11ec..83e4b10b 100644 --- a/test/MessageDigestHelperTest.cc +++ b/test/MessageDigestHelperTest.cc @@ -1,4 +1,4 @@ -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include @@ -12,7 +12,6 @@ class MessageDigestHelperTest:public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(MessageDigestHelperTest); CPPUNIT_TEST(testHexDigestDiskWriter); - CPPUNIT_TEST(testDigest); CPPUNIT_TEST_SUITE_END(); private: @@ -21,7 +20,6 @@ public: } void testHexDigestDiskWriter(); - void testDigest(); }; @@ -33,21 +31,12 @@ void MessageDigestHelperTest::testHexDigestDiskWriter() { diskio->enableReadOnly(); diskio->openExistingFile(); CPPUNIT_ASSERT_EQUAL(std::string("608cabc0f2fa18c260cafd974516865c772363d5"), - MessageDigestHelper::hexDigest + message_digest::hexDigest (MessageDigest::sha1(), diskio, 0, 4096)); CPPUNIT_ASSERT_EQUAL(std::string("7a4a9ae537ebbbb826b1060e704490ad0f365ead"), - MessageDigestHelper::hexDigest + message_digest::hexDigest (MessageDigest::sha1(), diskio, 5, 100)); } -void MessageDigestHelperTest::testDigest() -{ - std::string data = "aria2"; - SharedHandle sha1 = MessageDigest::sha1(); - sha1->update(data.data(), data.size()); - CPPUNIT_ASSERT_EQUAL(std::string("f36003f22b462ffa184390533c500d8989e9f681"), - sha1->hexDigest()); -} - } // namespace aria2 diff --git a/test/TestUtil.cc b/test/TestUtil.cc index 5533555b..70ad6e7d 100644 --- a/test/TestUtil.cc +++ b/test/TestUtil.cc @@ -15,7 +15,7 @@ #include "DefaultDiskWriter.h" #include "fmt.h" #ifdef ENABLE_MESSAGE_DIGEST -# include "MessageDigestHelper.h" +# include "message_digest_helper.h" #endif // ENABLE_MESSAGE_DIGEST namespace aria2 { @@ -81,7 +81,7 @@ std::string fileHexDigest { SharedHandle writer(new DefaultDiskWriter(filename)); writer->openExistingFile(); - return MessageDigestHelper::hexDigest(ctx, writer, 0, writer->size()); + return message_digest::hexDigest(ctx, writer, 0, writer->size()); } #endif // ENABLE_MESSAGE_DIGEST diff --git a/test/UTMetadataDataExtensionMessageTest.cc b/test/UTMetadataDataExtensionMessageTest.cc index 3c537cd4..a3e929ad 100644 --- a/test/UTMetadataDataExtensionMessageTest.cc +++ b/test/UTMetadataDataExtensionMessageTest.cc @@ -14,7 +14,7 @@ #include "UTMetadataRequestTracker.h" #include "bittorrent_helper.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" namespace aria2 { @@ -80,9 +80,9 @@ void UTMetadataDataExtensionMessageTest::testDoReceivedAction() std::string metadata = piece0+piece1; unsigned char infoHash[INFO_HASH_LENGTH]; - MessageDigestHelper::digest(infoHash, INFO_HASH_LENGTH, - MessageDigest::sha1(), - metadata.data(), metadata.size()); + message_digest::digest(infoHash, INFO_HASH_LENGTH, + MessageDigest::sha1(), + metadata.data(), metadata.size()); attrs->infoHash = std::string(&infoHash[0], &infoHash[20]); dctx->setAttribute(bittorrent::BITTORRENT, attrs); diff --git a/test/UTMetadataPostDownloadHandlerTest.cc b/test/UTMetadataPostDownloadHandlerTest.cc index 38ecb3bb..0a998aa1 100644 --- a/test/UTMetadataPostDownloadHandlerTest.cc +++ b/test/UTMetadataPostDownloadHandlerTest.cc @@ -13,7 +13,7 @@ #include "DiskAdaptor.h" #include "util.h" #include "MessageDigest.h" -#include "MessageDigestHelper.h" +#include "message_digest_helper.h" #include "prefs.h" #include "RecoverableException.h" @@ -73,7 +73,7 @@ void UTMetadataPostDownloadHandlerTest::testGetNextRequestGroups() "d6:lengthi384e4:name19:aria2-0.8.2.tar.bz212:piece lengthi128e" "6:pieces60:AAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCe"; unsigned char infoHash[20]; - MessageDigestHelper::digest + message_digest::digest (infoHash, sizeof(infoHash), MessageDigest::sha1(), reinterpret_cast(metadata.data()), metadata.size()); dctx_->getFirstFileEntry()->setLength(metadata.size());