summaryrefslogtreecommitdiff
path: root/src/MessageDigestHelper.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 02:56:24 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-11-11 02:56:24 +0000
commit89f997ec0d93345fa3134d1c906bf16246a51fc1 (patch)
treed9a190441b4edd3ced4ff69989fe8d95d99d89a6 /src/MessageDigestHelper.cc
parent513e8a7917a48e891ef1c4e2b005b862b3a06ac7 (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.cc78
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