mirror of https://github.com/aria2/aria2
2010-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Left only IANA hash function textual name in messageDigest.cc. Assign only IANA hash function textual name to Checksum and ChunkChecksum. Fixed the value of MessageDigestContext::MD5. * src/Checksum.h * src/MetalinkParserController.cc * src/messageDigest.cc * src/messageDigest.h * test/IteratableChecksumValidatorTest.cc * test/IteratableChunkChecksumValidatorTest.cc * test/MessageDigestHelperTest.cc * test/Metalink2RequestGroupTest.cc * test/MetalinkProcessorTest.ccpull/1/head
parent
88475a6aa0
commit
b305edd7c5
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
||||||
|
2010-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Left only IANA hash function textual name in messageDigest.cc.
|
||||||
|
Assign only IANA hash function textual name to Checksum and
|
||||||
|
ChunkChecksum. Fixed the value of MessageDigestContext::MD5.
|
||||||
|
* src/Checksum.h
|
||||||
|
* src/MetalinkParserController.cc
|
||||||
|
* src/messageDigest.cc
|
||||||
|
* src/messageDigest.h
|
||||||
|
* test/IteratableChecksumValidatorTest.cc
|
||||||
|
* test/IteratableChunkChecksumValidatorTest.cc
|
||||||
|
* test/MessageDigestHelperTest.cc
|
||||||
|
* test/Metalink2RequestGroupTest.cc
|
||||||
|
* test/MetalinkProcessorTest.cc
|
||||||
|
|
||||||
2010-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-05-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
Fixed typo in log message
|
Fixed typo in log message
|
||||||
|
|
|
@ -36,9 +36,12 @@
|
||||||
#define _D_CHECKSUM_H_
|
#define _D_CHECKSUM_H_
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "SharedHandle.h"
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "SharedHandle.h"
|
||||||
|
#include "messageDigest.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
class Checksum {
|
class Checksum {
|
||||||
|
@ -50,7 +53,7 @@ public:
|
||||||
Checksum(const std::string& algo, const std::string& messageDigest):
|
Checksum(const std::string& algo, const std::string& messageDigest):
|
||||||
_algo(algo), _messageDigest(messageDigest) {}
|
_algo(algo), _messageDigest(messageDigest) {}
|
||||||
Checksum():
|
Checksum():
|
||||||
_algo("sha1") {}
|
_algo(MessageDigestContext::SHA1) {}
|
||||||
|
|
||||||
~Checksum() {}
|
~Checksum() {}
|
||||||
|
|
||||||
|
|
|
@ -53,15 +53,6 @@
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
|
||||||
static bool isValidHash(const std::string& algo, const std::string& hash)
|
|
||||||
{
|
|
||||||
return util::isHexDigit(hash) &&
|
|
||||||
MessageDigestContext::supports(algo) &&
|
|
||||||
MessageDigestContext::digestLength(algo)*2 == hash.size();
|
|
||||||
}
|
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
|
||||||
|
|
||||||
MetalinkParserController::MetalinkParserController():
|
MetalinkParserController::MetalinkParserController():
|
||||||
_metalinker(new Metalinker())
|
_metalinker(new Metalinker())
|
||||||
{}
|
{}
|
||||||
|
@ -272,8 +263,9 @@ void MetalinkParserController::setTypeOfChecksum(const std::string& type)
|
||||||
if(_tChecksum.isNull()) {
|
if(_tChecksum.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(MessageDigestContext::supports(type)) {
|
std::string calgo = MessageDigestContext::getCanonicalAlgo(type);
|
||||||
_tChecksum->setAlgo(type);
|
if(MessageDigestContext::supports(calgo)) {
|
||||||
|
_tChecksum->setAlgo(calgo);
|
||||||
} else {
|
} else {
|
||||||
cancelChecksumTransaction();
|
cancelChecksumTransaction();
|
||||||
}
|
}
|
||||||
|
@ -286,7 +278,7 @@ void MetalinkParserController::setHashOfChecksum(const std::string& md)
|
||||||
if(_tChecksum.isNull()) {
|
if(_tChecksum.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isValidHash(_tChecksum->getAlgo(), md)) {
|
if(MessageDigestContext::isValidHash(_tChecksum->getAlgo(), md)) {
|
||||||
_tChecksum->setMessageDigest(md);
|
_tChecksum->setMessageDigest(md);
|
||||||
} else {
|
} else {
|
||||||
cancelChecksumTransaction();
|
cancelChecksumTransaction();
|
||||||
|
@ -333,8 +325,9 @@ void MetalinkParserController::setTypeOfChunkChecksumV4(const std::string& type)
|
||||||
if(_tChunkChecksumV4.isNull()) {
|
if(_tChunkChecksumV4.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(MessageDigestContext::supports(type)) {
|
std::string calgo = MessageDigestContext::getCanonicalAlgo(type);
|
||||||
_tChunkChecksumV4->setAlgo(type);
|
if(MessageDigestContext::supports(calgo)) {
|
||||||
|
_tChunkChecksumV4->setAlgo(calgo);
|
||||||
} else {
|
} else {
|
||||||
cancelChunkChecksumTransactionV4();
|
cancelChunkChecksumTransactionV4();
|
||||||
}
|
}
|
||||||
|
@ -361,7 +354,7 @@ void MetalinkParserController::addHashOfChunkChecksumV4(const std::string& md)
|
||||||
if(_tChunkChecksumV4.isNull()) {
|
if(_tChunkChecksumV4.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isValidHash(_tChunkChecksumV4->getAlgo(), md)) {
|
if(MessageDigestContext::isValidHash(_tChunkChecksumV4->getAlgo(), md)) {
|
||||||
_tempChunkChecksumsV4.push_back(md);
|
_tempChunkChecksumsV4.push_back(md);
|
||||||
} else {
|
} else {
|
||||||
cancelChunkChecksumTransactionV4();
|
cancelChunkChecksumTransactionV4();
|
||||||
|
@ -411,8 +404,9 @@ void MetalinkParserController::setTypeOfChunkChecksum(const std::string& type)
|
||||||
if(_tChunkChecksum.isNull()) {
|
if(_tChunkChecksum.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(MessageDigestContext::supports(type)) {
|
std::string calgo = MessageDigestContext::getCanonicalAlgo(type);
|
||||||
_tChunkChecksum->setAlgo(type);
|
if(MessageDigestContext::supports(calgo)) {
|
||||||
|
_tChunkChecksum->setAlgo(calgo);
|
||||||
} else {
|
} else {
|
||||||
cancelChunkChecksumTransaction();
|
cancelChunkChecksumTransaction();
|
||||||
}
|
}
|
||||||
|
@ -439,7 +433,7 @@ void MetalinkParserController::addHashOfChunkChecksum(size_t order, const std::s
|
||||||
if(_tChunkChecksum.isNull()) {
|
if(_tChunkChecksum.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isValidHash(_tChunkChecksum->getAlgo(), md)) {
|
if(MessageDigestContext::isValidHash(_tChunkChecksum->getAlgo(), md)) {
|
||||||
_tempChunkChecksums.push_back(std::make_pair(order, md));
|
_tempChunkChecksums.push_back(std::make_pair(order, md));
|
||||||
} else {
|
} else {
|
||||||
cancelChunkChecksumTransaction();
|
cancelChunkChecksumTransaction();
|
||||||
|
@ -463,7 +457,7 @@ void MetalinkParserController::setMessageDigestOfChunkChecksum(const std::string
|
||||||
if(_tChunkChecksum.isNull()) {
|
if(_tChunkChecksum.isNull()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(isValidHash(_tChunkChecksum->getAlgo(), md)) {
|
if(MessageDigestContext::isValidHash(_tChunkChecksum->getAlgo(), md)) {
|
||||||
_tempHashPair.second = md;
|
_tempHashPair.second = md;
|
||||||
} else {
|
} else {
|
||||||
cancelChunkChecksumTransaction();
|
cancelChunkChecksumTransaction();
|
||||||
|
|
|
@ -42,7 +42,7 @@ const std::string MessageDigestContext::SHA1("sha-1");
|
||||||
|
|
||||||
const std::string MessageDigestContext::SHA256("sha-256");
|
const std::string MessageDigestContext::SHA256("sha-256");
|
||||||
|
|
||||||
const std::string MessageDigestContext::MD5("md-5");
|
const std::string MessageDigestContext::MD5("md5");
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
struct DigestAlgoEntry {
|
struct DigestAlgoEntry {
|
||||||
|
@ -68,13 +68,9 @@ static const DigestAlgoMap& getDigestAlgos()
|
||||||
DigestAlgoMap::value_type("md5", DigestAlgoEntry(EVP_md5(), STRENGTH_MD5)),
|
DigestAlgoMap::value_type("md5", DigestAlgoEntry(EVP_md5(), STRENGTH_MD5)),
|
||||||
DigestAlgoMap::value_type
|
DigestAlgoMap::value_type
|
||||||
("sha-1", DigestAlgoEntry(EVP_sha1(), STRENGTH_SHA_1)),
|
("sha-1", DigestAlgoEntry(EVP_sha1(), STRENGTH_SHA_1)),
|
||||||
DigestAlgoMap::value_type
|
|
||||||
("sha1", DigestAlgoEntry(EVP_sha1(), STRENGTH_SHA_1)),
|
|
||||||
# ifdef HAVE_EVP_SHA256
|
# ifdef HAVE_EVP_SHA256
|
||||||
DigestAlgoMap::value_type
|
DigestAlgoMap::value_type
|
||||||
("sha-256", DigestAlgoEntry(EVP_sha256(), STRENGTH_SHA_256)),
|
("sha-256", DigestAlgoEntry(EVP_sha256(), STRENGTH_SHA_256)),
|
||||||
DigestAlgoMap::value_type
|
|
||||||
("sha256", DigestAlgoEntry(EVP_sha256(), STRENGTH_SHA_256)),
|
|
||||||
# endif // HAVE_EVP_SHA256
|
# endif // HAVE_EVP_SHA256
|
||||||
#elif HAVE_LIBGCRYPT
|
#elif HAVE_LIBGCRYPT
|
||||||
DigestAlgoMap::value_type
|
DigestAlgoMap::value_type
|
||||||
|
@ -82,17 +78,29 @@ static const DigestAlgoMap& getDigestAlgos()
|
||||||
DigestAlgoMap::value_type
|
DigestAlgoMap::value_type
|
||||||
("sha-1", DigestAlgoEntry(GCRY_MD_SHA1, STRENGTH_SHA_1)),
|
("sha-1", DigestAlgoEntry(GCRY_MD_SHA1, STRENGTH_SHA_1)),
|
||||||
DigestAlgoMap::value_type
|
DigestAlgoMap::value_type
|
||||||
("sha1", DigestAlgoEntry(GCRY_MD_SHA1, STRENGTH_SHA_1)),
|
|
||||||
DigestAlgoMap::value_type
|
|
||||||
("sha-256", DigestAlgoEntry(GCRY_MD_SHA256, STRENGTH_SHA_256)),
|
("sha-256", DigestAlgoEntry(GCRY_MD_SHA256, STRENGTH_SHA_256)),
|
||||||
DigestAlgoMap::value_type
|
|
||||||
("sha256", DigestAlgoEntry(GCRY_MD_SHA256, STRENGTH_SHA_256)),
|
|
||||||
#endif // HAVE_LIBGCRYPT
|
#endif // HAVE_LIBGCRYPT
|
||||||
};
|
};
|
||||||
static const DigestAlgoMap algomap(vbegin(digests), vend(digests));
|
static const DigestAlgoMap algomap(vbegin(digests), vend(digests));
|
||||||
return algomap;
|
return algomap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string MessageDigestContext::getCanonicalAlgo
|
||||||
|
(const std::string& algostring)
|
||||||
|
{
|
||||||
|
if(strcasecmp("sha-1", algostring.c_str()) == 0 ||
|
||||||
|
strcasecmp("sha1", algostring.c_str()) == 0) {
|
||||||
|
return SHA1;
|
||||||
|
} else if(strcasecmp("sha-256", algostring.c_str()) == 0 ||
|
||||||
|
strcasecmp("sha256", algostring.c_str()) == 0) {
|
||||||
|
return SHA256;
|
||||||
|
} else if(strcasecmp("md5", algostring.c_str()) == 0) {
|
||||||
|
return MD5;
|
||||||
|
} else {
|
||||||
|
return algostring;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string MessageDigestContext::digestFinal()
|
std::string MessageDigestContext::digestFinal()
|
||||||
{
|
{
|
||||||
size_t length = digestLength(algo);
|
size_t length = digestLength(algo);
|
||||||
|
@ -151,4 +159,11 @@ bool MessageDigestContext::isStronger
|
||||||
return (*lhsitr).second.strength > (*rhsitr).second.strength;
|
return (*lhsitr).second.strength > (*rhsitr).second.strength;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MessageDigestContext::isValidHash
|
||||||
|
(const std::string& algostring, const std::string& hashstring)
|
||||||
|
{
|
||||||
|
return util::isHexDigit(hashstring) &&
|
||||||
|
supports(algostring) && digestLength(algostring)*2 == hashstring.size();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -106,6 +106,14 @@ public:
|
||||||
// or both are not supported, returns false.
|
// or both are not supported, returns false.
|
||||||
static bool isStronger(const std::string& lhs, const std::string& rhs);
|
static bool isStronger(const std::string& lhs, const std::string& rhs);
|
||||||
|
|
||||||
|
static bool isValidHash
|
||||||
|
(const std::string& algostring, const std::string& hashstring);
|
||||||
|
|
||||||
|
// Returns canonical hash algorithm name of given algostring. If
|
||||||
|
// given algostring is not supported, then returns algostring
|
||||||
|
// unchanged.
|
||||||
|
static std::string getCanonicalAlgo(const std::string& algostring);
|
||||||
|
|
||||||
std::string digestFinal();
|
std::string digestFinal();
|
||||||
|
|
||||||
#if defined(HAVE_OLD_LIBSSL)
|
#if defined(HAVE_OLD_LIBSSL)
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "DiskAdaptor.h"
|
#include "DiskAdaptor.h"
|
||||||
#include "FileEntry.h"
|
#include "FileEntry.h"
|
||||||
#include "PieceSelector.h"
|
#include "PieceSelector.h"
|
||||||
|
#include "messageDigest.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -35,7 +36,7 @@ void IteratableChecksumValidatorTest::testValidate() {
|
||||||
SharedHandle<DownloadContext> dctx
|
SharedHandle<DownloadContext> dctx
|
||||||
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
||||||
dctx->setChecksum("898a81b8e0181280ae2ee1b81e269196d91e869a");
|
dctx->setChecksum("898a81b8e0181280ae2ee1b81e269196d91e869a");
|
||||||
dctx->setChecksumHashAlgo("sha1");
|
dctx->setChecksumHashAlgo(MessageDigestContext::SHA1);
|
||||||
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
||||||
ps->initStorage();
|
ps->initStorage();
|
||||||
ps->getDiskAdaptor()->openFile();
|
ps->getDiskAdaptor()->openFile();
|
||||||
|
@ -54,7 +55,7 @@ void IteratableChecksumValidatorTest::testValidate_fail() {
|
||||||
SharedHandle<DownloadContext> dctx
|
SharedHandle<DownloadContext> dctx
|
||||||
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
||||||
dctx->setChecksum(std::string(40, '0')); // set wrong checksum
|
dctx->setChecksum(std::string(40, '0')); // set wrong checksum
|
||||||
dctx->setChecksumHashAlgo("sha1");
|
dctx->setChecksumHashAlgo(MessageDigestContext::SHA1);
|
||||||
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
||||||
ps->initStorage();
|
ps->initStorage();
|
||||||
ps->getDiskAdaptor()->openFile();
|
ps->getDiskAdaptor()->openFile();
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "DiskAdaptor.h"
|
#include "DiskAdaptor.h"
|
||||||
#include "FileEntry.h"
|
#include "FileEntry.h"
|
||||||
#include "PieceSelector.h"
|
#include "PieceSelector.h"
|
||||||
|
#include "messageDigest.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -40,7 +41,7 @@ void IteratableChunkChecksumValidatorTest::testValidate() {
|
||||||
SharedHandle<DownloadContext> dctx
|
SharedHandle<DownloadContext> dctx
|
||||||
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
(new DownloadContext(100, 250, "chunkChecksumTestFile250.txt"));
|
||||||
dctx->setPieceHashes(&csArray[0], &csArray[3]);
|
dctx->setPieceHashes(&csArray[0], &csArray[3]);
|
||||||
dctx->setPieceHashAlgo("sha1");
|
dctx->setPieceHashAlgo(MessageDigestContext::SHA1);
|
||||||
SharedHandle<DefaultPieceStorage> ps
|
SharedHandle<DefaultPieceStorage> ps
|
||||||
(new DefaultPieceStorage(dctx, &option));
|
(new DefaultPieceStorage(dctx, &option));
|
||||||
ps->initStorage();
|
ps->initStorage();
|
||||||
|
@ -80,7 +81,7 @@ void IteratableChunkChecksumValidatorTest::testValidate_readError() {
|
||||||
hashes.push_back("ffffffffffffffffffffffffffffffffffffffff");
|
hashes.push_back("ffffffffffffffffffffffffffffffffffffffff");
|
||||||
hashes.push_back("ffffffffffffffffffffffffffffffffffffffff");
|
hashes.push_back("ffffffffffffffffffffffffffffffffffffffff");
|
||||||
dctx->setPieceHashes(hashes.begin(), hashes.end());
|
dctx->setPieceHashes(hashes.begin(), hashes.end());
|
||||||
dctx->setPieceHashAlgo("sha1");
|
dctx->setPieceHashAlgo(MessageDigestContext::SHA1);
|
||||||
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
SharedHandle<DefaultPieceStorage> ps(new DefaultPieceStorage(dctx, &option));
|
||||||
ps->initStorage();
|
ps->initStorage();
|
||||||
ps->getDiskAdaptor()->openFile();
|
ps->getDiskAdaptor()->openFile();
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "DefaultDiskWriter.h"
|
#include "DefaultDiskWriter.h"
|
||||||
|
#include "messageDigest.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -33,23 +34,27 @@ void MessageDigestHelperTest::testDigestDiskWriter() {
|
||||||
(new DefaultDiskWriter("4096chunk.txt"));
|
(new DefaultDiskWriter("4096chunk.txt"));
|
||||||
diskio->openExistingFile();
|
diskio->openExistingFile();
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("608cabc0f2fa18c260cafd974516865c772363d5"),
|
CPPUNIT_ASSERT_EQUAL(std::string("608cabc0f2fa18c260cafd974516865c772363d5"),
|
||||||
MessageDigestHelper::digest("sha1", diskio, 0, 4096));
|
MessageDigestHelper::digest
|
||||||
|
(MessageDigestContext::SHA1, diskio, 0, 4096));
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("7a4a9ae537ebbbb826b1060e704490ad0f365ead"),
|
CPPUNIT_ASSERT_EQUAL(std::string("7a4a9ae537ebbbb826b1060e704490ad0f365ead"),
|
||||||
MessageDigestHelper::digest("sha1", diskio, 5, 100));
|
MessageDigestHelper::digest
|
||||||
|
(MessageDigestContext::SHA1, diskio, 5, 100));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageDigestHelperTest::testDigestFilename()
|
void MessageDigestHelperTest::testDigestFilename()
|
||||||
{
|
{
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("608cabc0f2fa18c260cafd974516865c772363d5"),
|
CPPUNIT_ASSERT_EQUAL(std::string("608cabc0f2fa18c260cafd974516865c772363d5"),
|
||||||
MessageDigestHelper::digest("sha1", "4096chunk.txt"));
|
MessageDigestHelper::digest
|
||||||
|
(MessageDigestContext::SHA1, "4096chunk.txt"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageDigestHelperTest::testDigestData()
|
void MessageDigestHelperTest::testDigestData()
|
||||||
{
|
{
|
||||||
std::string data = "aria2";
|
std::string data = "aria2";
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("f36003f22b462ffa184390533c500d8989e9f681"),
|
CPPUNIT_ASSERT_EQUAL(std::string("f36003f22b462ffa184390533c500d8989e9f681"),
|
||||||
MessageDigestHelper::digest("sha1", data.c_str(), data.size()));
|
MessageDigestHelper::digest
|
||||||
|
(MessageDigestContext::SHA1, data.c_str(), data.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include "Option.h"
|
#include "Option.h"
|
||||||
#include "RequestGroup.h"
|
#include "RequestGroup.h"
|
||||||
#include "FileEntry.h"
|
#include "FileEntry.h"
|
||||||
|
#include "messageDigest.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
|
@ -60,7 +61,8 @@ void Metalink2RequestGroupTest::testGenerate()
|
||||||
CPPUNIT_ASSERT_EQUAL((uint64_t)0ULL, dctx->getTotalLength());
|
CPPUNIT_ASSERT_EQUAL((uint64_t)0ULL, dctx->getTotalLength());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), dctx->getDir());
|
CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), dctx->getDir());
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), dctx->getChecksumHashAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
|
dctx->getChecksumHashAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL
|
CPPUNIT_ASSERT_EQUAL
|
||||||
(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
||||||
dctx->getChecksum());
|
dctx->getChecksum());
|
||||||
|
@ -80,7 +82,7 @@ void Metalink2RequestGroupTest::testGenerate()
|
||||||
CPPUNIT_ASSERT(!dctx.isNull());
|
CPPUNIT_ASSERT(!dctx.isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), dctx->getDir());
|
CPPUNIT_ASSERT_EQUAL(std::string("/tmp"), dctx->getDir());
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), dctx->getPieceHashAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, dctx->getPieceHashAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)2, dctx->getPieceHashes().size());
|
CPPUNIT_ASSERT_EQUAL((size_t)2, dctx->getPieceHashes().size());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)262144, dctx->getPieceLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)262144, dctx->getPieceLength());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksumHashAlgo());
|
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksumHashAlgo());
|
||||||
|
|
|
@ -95,10 +95,11 @@ void MetalinkProcessorTest::testParseFileV4()
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"),
|
CPPUNIT_ASSERT_EQUAL(std::string("0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33"),
|
||||||
e->checksum->getMessageDigest());
|
e->checksum->getMessageDigest());
|
||||||
CPPUNIT_ASSERT(!e->checksum.isNull());
|
CPPUNIT_ASSERT(!e->checksum.isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha-1"), e->checksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, e->checksum->getAlgo());
|
||||||
CPPUNIT_ASSERT(!e->chunkChecksum.isNull());
|
CPPUNIT_ASSERT(!e->chunkChecksum.isNull());
|
||||||
if(MessageDigestContext::supports(MessageDigestContext::SHA256)) {
|
if(MessageDigestContext::supports(MessageDigestContext::SHA256)) {
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha-256"), e->chunkChecksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA256,
|
||||||
|
e->chunkChecksum->getAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)262144, e->chunkChecksum->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)262144, e->chunkChecksum->getChecksumLength());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, e->chunkChecksum->countChecksum());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, e->chunkChecksum->countChecksum());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("0245178074fd042e19b7c3885b360fc21064b30e73f5626c7e3b005d048069c5"),
|
CPPUNIT_ASSERT_EQUAL(std::string("0245178074fd042e19b7c3885b360fc21064b30e73f5626c7e3b005d048069c5"),
|
||||||
|
@ -108,7 +109,8 @@ void MetalinkProcessorTest::testParseFileV4()
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("37290d74ac4d186e3a8e5785d259d2ec04fac91ae28092e7620ec8bc99e830aa"),
|
CPPUNIT_ASSERT_EQUAL(std::string("37290d74ac4d186e3a8e5785d259d2ec04fac91ae28092e7620ec8bc99e830aa"),
|
||||||
e->chunkChecksum->getChecksum(2));
|
e->chunkChecksum->getChecksum(2));
|
||||||
} else {
|
} else {
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha-1"), e->chunkChecksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
|
e->chunkChecksum->getAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)262144, e->chunkChecksum->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)262144, e->chunkChecksum->getChecksumLength());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, e->chunkChecksum->countChecksum());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, e->chunkChecksum->countChecksum());
|
||||||
CPPUNIT_ASSERT_EQUAL
|
CPPUNIT_ASSERT_EQUAL
|
||||||
|
@ -509,7 +511,8 @@ void MetalinkProcessorTest::testParseFile()
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
CPPUNIT_ASSERT_EQUAL(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
||||||
entry1->checksum->getMessageDigest());
|
entry1->checksum->getMessageDigest());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry1->checksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
|
entry1->checksum->getAlgo());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
CPPUNIT_ASSERT(!entry1->getSignature().isNull());
|
CPPUNIT_ASSERT(!entry1->getSignature().isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), entry1->getSignature()->getType());
|
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), entry1->getSignature()->getType());
|
||||||
|
@ -564,7 +567,8 @@ void MetalinkProcessorTest::testParseFile()
|
||||||
entry2->chunkChecksum->getChecksum(0));
|
entry2->chunkChecksum->getChecksum(0));
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("fecf8bc9a1647505fe16746f94e97a477597dbf3"),
|
CPPUNIT_ASSERT_EQUAL(std::string("fecf8bc9a1647505fe16746f94e97a477597dbf3"),
|
||||||
entry2->chunkChecksum->getChecksum(1));
|
entry2->chunkChecksum->getChecksum(1));
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry2->checksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
|
entry2->checksum->getAlgo());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
// See that signature is null
|
// See that signature is null
|
||||||
CPPUNIT_ASSERT(entry2->getSignature().isNull());
|
CPPUNIT_ASSERT(entry2->getSignature().isNull());
|
||||||
|
@ -585,11 +589,11 @@ void MetalinkProcessorTest::testParseFile()
|
||||||
SharedHandle<MetalinkEntry> entry4 = *entryItr;
|
SharedHandle<MetalinkEntry> entry4 = *entryItr;
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("UnsupportedVerificationHashTypeIncluded"), entry4->getPath());
|
CPPUNIT_ASSERT_EQUAL(std::string("UnsupportedVerificationHashTypeIncluded"), entry4->getPath());
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"),
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
entry4->checksum->getAlgo());
|
entry4->checksum->getAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("4c255b0ed130f5ea880f0aa061c3da0487e251cc"),
|
CPPUNIT_ASSERT_EQUAL(std::string("4c255b0ed130f5ea880f0aa061c3da0487e251cc"),
|
||||||
entry4->checksum->getMessageDigest());
|
entry4->checksum->getMessageDigest());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"),
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1,
|
||||||
entry4->chunkChecksum->getAlgo());
|
entry4->chunkChecksum->getAlgo());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
|
||||||
|
@ -899,7 +903,7 @@ void MetalinkProcessorTest::testMultiplePieces()
|
||||||
SharedHandle<MetalinkEntry> e = m->entries[0];
|
SharedHandle<MetalinkEntry> e = m->entries[0];
|
||||||
SharedHandle<ChunkChecksum> c = e->chunkChecksum;
|
SharedHandle<ChunkChecksum> c = e->chunkChecksum;
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), c->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, c->getAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
||||||
} catch(Exception& e) {
|
} catch(Exception& e) {
|
||||||
CPPUNIT_FAIL(e.stackTrace());
|
CPPUNIT_FAIL(e.stackTrace());
|
||||||
|
@ -934,7 +938,7 @@ void MetalinkProcessorTest::testBadPieceNo()
|
||||||
|
|
||||||
CPPUNIT_ASSERT(!c.isNull());
|
CPPUNIT_ASSERT(!c.isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), c->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, c->getAlgo());
|
||||||
} catch(Exception& e) {
|
} catch(Exception& e) {
|
||||||
CPPUNIT_FAIL(e.stackTrace());
|
CPPUNIT_FAIL(e.stackTrace());
|
||||||
}
|
}
|
||||||
|
@ -967,7 +971,7 @@ void MetalinkProcessorTest::testBadPieceLength()
|
||||||
SharedHandle<ChunkChecksum> c = e->chunkChecksum;
|
SharedHandle<ChunkChecksum> c = e->chunkChecksum;
|
||||||
CPPUNIT_ASSERT(!c.isNull());
|
CPPUNIT_ASSERT(!c.isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), c->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, c->getAlgo());
|
||||||
} catch(Exception& e) {
|
} catch(Exception& e) {
|
||||||
CPPUNIT_FAIL(e.stackTrace());
|
CPPUNIT_FAIL(e.stackTrace());
|
||||||
}
|
}
|
||||||
|
@ -1000,7 +1004,7 @@ void MetalinkProcessorTest::testUnsupportedType_piece()
|
||||||
|
|
||||||
CPPUNIT_ASSERT(!c.isNull());
|
CPPUNIT_ASSERT(!c.isNull());
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
CPPUNIT_ASSERT_EQUAL((size_t)1024, c->getChecksumLength());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), c->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(MessageDigestContext::SHA1, c->getAlgo());
|
||||||
} catch(Exception& e) {
|
} catch(Exception& e) {
|
||||||
CPPUNIT_FAIL(e.stackTrace());
|
CPPUNIT_FAIL(e.stackTrace());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue