diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-11-11 02:56:24 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-11-11 02:56:24 +0000 |
| commit | 89f997ec0d93345fa3134d1c906bf16246a51fc1 (patch) | |
| tree | d9a190441b4edd3ced4ff69989fe8d95d99d89a6 /src/MessageDigestHelper.cc | |
| parent | 513e8a7917a48e891ef1c4e2b005b862b3a06ac7 (diff) | |
2010-11-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Replaced MessageDigestContext with MessageDigest. Cleaned up
unnecessary functions in MessageDigestHelper.
* src/BtPieceMessage.cc
* src/Checksum.h
* src/DHTTokenTracker.cc
* src/DownloadCommand.cc
* src/DownloadCommand.h
* src/HashFuncEntry.h
* src/IteratableChecksumValidator.cc
* src/IteratableChecksumValidator.h
* src/IteratableChunkChecksumValidator.cc
* src/IteratableChunkChecksumValidator.h
* src/LibgcryptMessageDigestImpl.cc
* src/LibgcryptMessageDigestImpl.h
* src/LibsslMessageDigestImpl.cc
* src/LibsslMessageDigestImpl.h
* src/MSEHandshake.cc
* src/MSEHandshake.h
* src/Makefile.am
* src/MessageDigest.cc
* src/MessageDigest.h
* src/MessageDigestHelper.cc
* src/MessageDigestHelper.h
* src/MessageDigestImpl.h
* src/MetalinkParserController.cc
* src/Piece.cc
* src/Piece.h
* src/UTMetadataDataExtensionMessage.cc
* src/bittorrent_helper.cc
* src/messageDigest.cc: Removed
* src/messageDigest.h: Removed
* src/util.cc
* src/version_usage.cc
* test/BittorrentHelperTest.cc
* test/GZipDecoderTest.cc
* test/GZipDecodingStreamFilterTest.cc
* test/IteratableChecksumValidatorTest.cc
* test/IteratableChunkChecksumValidatorTest.cc
* test/Makefile.am
* test/MessageDigestHelperTest.cc
* test/MessageDigestTest.cc
* test/Metalink2RequestGroupTest.cc
* test/MetalinkProcessorTest.cc
* test/PieceTest.cc
* test/TestUtil.cc
* test/TestUtil.h
* test/UTMetadataDataExtensionMessageTest.cc
* test/UTMetadataPostDownloadHandlerTest.cc
Diffstat (limited to 'src/MessageDigestHelper.cc')
| -rw-r--r-- | src/MessageDigestHelper.cc | 78 |
1 files changed, 23 insertions, 55 deletions
diff --git a/src/MessageDigestHelper.cc b/src/MessageDigestHelper.cc index 22b3bf31..93981068 100644 --- a/src/MessageDigestHelper.cc +++ b/src/MessageDigestHelper.cc @@ -37,7 +37,7 @@ #include <cstring> #include <cstdlib> -#include "messageDigest.h" +#include "MessageDigest.h" #include "DlAbortEx.h" #include "message.h" #include "DefaultDiskWriter.h" @@ -46,43 +46,30 @@ namespace aria2 { -MessageDigestContext* MessageDigestHelper::sha1Ctx_ = 0; +SharedHandle<MessageDigest> MessageDigestHelper::sha1Ctx_; void MessageDigestHelper::staticSHA1DigestInit() { staticSHA1DigestFree(); - sha1Ctx_ = new MessageDigestContext(); - sha1Ctx_->trySetAlgo(MessageDigestContext::SHA1); - sha1Ctx_->digestInit(); + sha1Ctx_ = MessageDigest::sha1(); } void MessageDigestHelper::staticSHA1DigestFree() { - delete sha1Ctx_; + sha1Ctx_.reset(); } -std::string MessageDigestHelper::staticSHA1Digest(const BinaryStreamHandle& bs, - off_t offset, - uint64_t length) +std::string MessageDigestHelper::staticSHA1DigestHexDigest +(const BinaryStreamHandle& bs, off_t offset, uint64_t length) { - sha1Ctx_->digestReset(); - return digest(sha1Ctx_, bs, offset, length); + sha1Ctx_->reset(); + return hexDigest(sha1Ctx_, bs, offset, length); } -std::string MessageDigestHelper::digest(const std::string& algo, - const BinaryStreamHandle& bs, - off_t offset, - uint64_t length) -{ - MessageDigestContext ctx; - ctx.trySetAlgo(algo); - ctx.digestInit(); - return digest(&ctx, bs, offset, length); -} - -std::string MessageDigestHelper::digest(MessageDigestContext* ctx, - const SharedHandle<BinaryStream>& bs, - off_t offset, uint64_t length) +std::string MessageDigestHelper::hexDigest +(const SharedHandle<MessageDigest>& ctx, + const SharedHandle<BinaryStream>& bs, + off_t offset, uint64_t length) { size_t BUFSIZE = 4096; unsigned char BUF[BUFSIZE]; @@ -95,7 +82,7 @@ std::string MessageDigestHelper::digest(MessageDigestContext* ctx, throw DL_ABORT_EX (StringFormat(EX_FILE_READ, "n/a", "data is too short").str()); } - ctx->digestUpdate(BUF, readLength); + ctx->update(BUF, readLength); offset += readLength; } if(tail) { @@ -104,45 +91,26 @@ std::string MessageDigestHelper::digest(MessageDigestContext* ctx, throw DL_ABORT_EX (StringFormat(EX_FILE_READ, "n/a", "data is too short").str()); } - ctx->digestUpdate(BUF, readLength); + ctx->update(BUF, readLength); } - std::string rawMD = ctx->digestFinal(); - return util::toHex(rawMD); -} - -std::string MessageDigestHelper::digest(const std::string& algo, const std::string& filename) -{ - DiskWriterHandle writer(new DefaultDiskWriter(filename)); - writer->openExistingFile(); - return digest(algo, writer, 0, writer->size()); -} - -std::string MessageDigestHelper::digest(const std::string& algo, const void* data, size_t length) -{ - MessageDigestContext ctx; - ctx.trySetAlgo(algo); - ctx.digestInit(); - ctx.digestUpdate(data, length); - std::string rawMD = ctx.digestFinal(); - return util::toHex(rawMD); + return ctx->hexDigest(); } -void MessageDigestHelper::digest(unsigned char* md, size_t mdLength, - const std::string& algo, const void* data, size_t length) +void MessageDigestHelper::digest +(unsigned char* md, size_t mdLength, + const SharedHandle<MessageDigest>& ctx, const void* data, size_t length) { - if(mdLength < MessageDigestContext::digestLength(algo)) { + size_t reqLength = ctx->getDigestLength(); + if(mdLength < reqLength) { throw DL_ABORT_EX (StringFormat ("Insufficient space for storing message digest:" " %lu required, but only %lu is allocated", - static_cast<unsigned long>(MessageDigestContext::digestLength(algo)), + static_cast<unsigned long>(reqLength), static_cast<unsigned long>(mdLength)).str()); } - MessageDigestContext ctx; - ctx.trySetAlgo(algo); - ctx.digestInit(); - ctx.digestUpdate(data, length); - ctx.digestFinal(md); + ctx->update(data, length); + ctx->digest(md); } } // namespace aria2 |
