mirror of https://github.com/aria2/aria2
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added the ability to retrieve signature from Metalink file. A retrieved signature is stored in Signature class and it is held by DownloadContext class. Note that aria2 doesn't verify signature. * src/DownloadContext.cc * src/DownloadContext.h * src/Makefile.am * src/Makefile.in * src/Metalink2RequestGroup.cc * src/MetalinkEntry.cc * src/MetalinkEntry.h * src/MetalinkParserController.cc * src/MetalinkParserController.h * src/MetalinkParserStateMachine.cc * src/MetalinkParserStateMachine.h * src/Signature.cc * src/Signature.h * src/SignatureMetalinkParserState.cc * src/SignatureMetalinkParserState.h * src/VerificationMetalinkParserState.cc * src/VerificationMetalinkParserState.h * test/Metalink2RequestGroupTest.cc * test/MetalinkParserControllerTest.cc * test/MetalinkProcessorTest.cc * test/test.xmlpull/1/head
parent
6796e1c805
commit
5472c8033e
27
ChangeLog
27
ChangeLog
|
@ -1,3 +1,30 @@
|
||||||
|
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
|
Added the ability to retrieve signature from Metalink file.
|
||||||
|
A retrieved signature is stored in Signature class and it is held by
|
||||||
|
DownloadContext class. Note that aria2 doesn't verify signature.
|
||||||
|
* src/DownloadContext.cc
|
||||||
|
* src/DownloadContext.h
|
||||||
|
* src/Makefile.am
|
||||||
|
* src/Makefile.in
|
||||||
|
* src/Metalink2RequestGroup.cc
|
||||||
|
* src/MetalinkEntry.cc
|
||||||
|
* src/MetalinkEntry.h
|
||||||
|
* src/MetalinkParserController.cc
|
||||||
|
* src/MetalinkParserController.h
|
||||||
|
* src/MetalinkParserStateMachine.cc
|
||||||
|
* src/MetalinkParserStateMachine.h
|
||||||
|
* src/Signature.cc
|
||||||
|
* src/Signature.h
|
||||||
|
* src/SignatureMetalinkParserState.cc
|
||||||
|
* src/SignatureMetalinkParserState.h
|
||||||
|
* src/VerificationMetalinkParserState.cc
|
||||||
|
* src/VerificationMetalinkParserState.h
|
||||||
|
* test/Metalink2RequestGroupTest.cc
|
||||||
|
* test/MetalinkParserControllerTest.cc
|
||||||
|
* test/MetalinkProcessorTest.cc
|
||||||
|
* test/test.xml
|
||||||
|
|
||||||
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||||
|
|
||||||
Close DiskAdaptor after renaming file.
|
Close DiskAdaptor after renaming file.
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/* <!-- 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 "DownloadContext.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
DownloadContext::DownloadContext():_dir(".") {}
|
||||||
|
|
||||||
|
DownloadContext::~DownloadContext() {}
|
||||||
|
|
||||||
|
const std::string& DownloadContext::getDir() const
|
||||||
|
{
|
||||||
|
return _dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownloadContext::setDir(const std::string& dir)
|
||||||
|
{
|
||||||
|
_dir = dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
SharedHandle<Signature> DownloadContext::getSignature() const
|
||||||
|
{
|
||||||
|
return _signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DownloadContext::setSignature(const SharedHandle<Signature>& signature)
|
||||||
|
{
|
||||||
|
_signature = signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace aria2
|
|
@ -37,6 +37,7 @@
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include "SharedHandle.h"
|
#include "SharedHandle.h"
|
||||||
|
#include "Signature.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
|
|
||||||
|
@ -49,11 +50,13 @@ class DownloadContext
|
||||||
protected:
|
protected:
|
||||||
std::string _dir;
|
std::string _dir;
|
||||||
|
|
||||||
|
private:
|
||||||
|
SharedHandle<Signature> _signature;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DownloadContext():_dir(".") {}
|
DownloadContext();
|
||||||
|
|
||||||
virtual ~DownloadContext() {}
|
|
||||||
|
|
||||||
|
virtual ~DownloadContext();
|
||||||
|
|
||||||
enum FILE_MODE {
|
enum FILE_MODE {
|
||||||
SINGLE,
|
SINGLE,
|
||||||
|
@ -88,16 +91,13 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual std::string getActualBasePath() const = 0;
|
virtual std::string getActualBasePath() const = 0;
|
||||||
|
|
||||||
const std::string& getDir() const
|
const std::string& getDir() const;
|
||||||
{
|
|
||||||
return _dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setDir(const std::string& dir)
|
void setDir(const std::string& dir);
|
||||||
{
|
|
||||||
_dir = dir;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
SharedHandle<Signature> getSignature() const;
|
||||||
|
|
||||||
|
void setSignature(const SharedHandle<Signature>& signature);
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef SharedHandle<DownloadContext> DownloadContextHandle;
|
typedef SharedHandle<DownloadContext> DownloadContextHandle;
|
||||||
|
|
|
@ -158,7 +158,7 @@ SRCS = Socket.h\
|
||||||
TaggedItem.cc TaggedItem.h\
|
TaggedItem.cc TaggedItem.h\
|
||||||
TagContainer.cc TagContainer.h\
|
TagContainer.cc TagContainer.h\
|
||||||
HelpItemFactory.cc HelpItemFactory.h\
|
HelpItemFactory.cc HelpItemFactory.h\
|
||||||
DownloadContext.h\
|
DownloadContext.cc DownloadContext.h\
|
||||||
SingleFileDownloadContext.cc SingleFileDownloadContext.h\
|
SingleFileDownloadContext.cc SingleFileDownloadContext.h\
|
||||||
TimedHaltCommand.cc TimedHaltCommand.h\
|
TimedHaltCommand.cc TimedHaltCommand.h\
|
||||||
CUIDCounter.h\
|
CUIDCounter.h\
|
||||||
|
@ -188,7 +188,8 @@ SRCS = Socket.h\
|
||||||
A2STR.cc A2STR.h\
|
A2STR.cc A2STR.h\
|
||||||
RarestPieceSelector.cc RarestPieceSelector.h\
|
RarestPieceSelector.cc RarestPieceSelector.h\
|
||||||
Decoder.h\
|
Decoder.h\
|
||||||
ChunkedDecoder.cc ChunkedDecoder.h
|
ChunkedDecoder.cc ChunkedDecoder.h\
|
||||||
|
Signature.cc Signature.h
|
||||||
|
|
||||||
if HAVE_LIBZ
|
if HAVE_LIBZ
|
||||||
SRCS += GZipDecoder.cc GZipDecoder.h
|
SRCS += GZipDecoder.cc GZipDecoder.h
|
||||||
|
@ -409,6 +410,7 @@ SRCS += Metalinker.cc Metalinker.h\
|
||||||
HashMetalinkParserState.cc HashMetalinkParserState.h\
|
HashMetalinkParserState.cc HashMetalinkParserState.h\
|
||||||
PiecesMetalinkParserState.cc PiecesMetalinkParserState.h\
|
PiecesMetalinkParserState.cc PiecesMetalinkParserState.h\
|
||||||
PieceHashMetalinkParserState.cc PieceHashMetalinkParserState.h\
|
PieceHashMetalinkParserState.cc PieceHashMetalinkParserState.h\
|
||||||
|
SignatureMetalinkParserState.cc SignatureMetalinkParserState.h\
|
||||||
ResourcesMetalinkParserState.cc ResourcesMetalinkParserState.h\
|
ResourcesMetalinkParserState.cc ResourcesMetalinkParserState.h\
|
||||||
URLMetalinkParserState.cc URLMetalinkParserState.h\
|
URLMetalinkParserState.cc URLMetalinkParserState.h\
|
||||||
FinMetalinkParserState.cc FinMetalinkParserState.h\
|
FinMetalinkParserState.cc FinMetalinkParserState.h\
|
||||||
|
|
|
@ -243,6 +243,7 @@ bin_PROGRAMS = aria2c$(EXEEXT)
|
||||||
@ENABLE_METALINK_TRUE@ HashMetalinkParserState.cc HashMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ HashMetalinkParserState.cc HashMetalinkParserState.h\
|
||||||
@ENABLE_METALINK_TRUE@ PiecesMetalinkParserState.cc PiecesMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ PiecesMetalinkParserState.cc PiecesMetalinkParserState.h\
|
||||||
@ENABLE_METALINK_TRUE@ PieceHashMetalinkParserState.cc PieceHashMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ PieceHashMetalinkParserState.cc PieceHashMetalinkParserState.h\
|
||||||
|
@ENABLE_METALINK_TRUE@ SignatureMetalinkParserState.cc SignatureMetalinkParserState.h\
|
||||||
@ENABLE_METALINK_TRUE@ ResourcesMetalinkParserState.cc ResourcesMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ ResourcesMetalinkParserState.cc ResourcesMetalinkParserState.h\
|
||||||
@ENABLE_METALINK_TRUE@ URLMetalinkParserState.cc URLMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ URLMetalinkParserState.cc URLMetalinkParserState.h\
|
||||||
@ENABLE_METALINK_TRUE@ FinMetalinkParserState.cc FinMetalinkParserState.h\
|
@ENABLE_METALINK_TRUE@ FinMetalinkParserState.cc FinMetalinkParserState.h\
|
||||||
|
@ -393,11 +394,12 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
||||||
ByteArrayDiskWriterFactory.cc ByteArrayDiskWriterFactory.h \
|
ByteArrayDiskWriterFactory.cc ByteArrayDiskWriterFactory.h \
|
||||||
ServerHost.cc ServerHost.h HelpItem.cc HelpItem.h \
|
ServerHost.cc ServerHost.h HelpItem.cc HelpItem.h \
|
||||||
TaggedItem.cc TaggedItem.h TagContainer.cc TagContainer.h \
|
TaggedItem.cc TaggedItem.h TagContainer.cc TagContainer.h \
|
||||||
HelpItemFactory.cc HelpItemFactory.h DownloadContext.h \
|
HelpItemFactory.cc HelpItemFactory.h DownloadContext.cc \
|
||||||
SingleFileDownloadContext.cc SingleFileDownloadContext.h \
|
DownloadContext.h SingleFileDownloadContext.cc \
|
||||||
TimedHaltCommand.cc TimedHaltCommand.h CUIDCounter.h \
|
SingleFileDownloadContext.h TimedHaltCommand.cc \
|
||||||
DNSCache.h DownloadResult.h Sequence.h IntSequence.h \
|
TimedHaltCommand.h CUIDCounter.h DNSCache.h DownloadResult.h \
|
||||||
PostDownloadHandler.h PreDownloadHandler.h SingletonHolder.h \
|
Sequence.h IntSequence.h PostDownloadHandler.h \
|
||||||
|
PreDownloadHandler.h SingletonHolder.h \
|
||||||
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
|
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
|
||||||
a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
|
a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
|
||||||
prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
|
prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
|
||||||
|
@ -406,9 +408,9 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
||||||
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
|
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
|
||||||
FtpFinishDownloadCommand.cc FtpFinishDownloadCommand.h \
|
FtpFinishDownloadCommand.cc FtpFinishDownloadCommand.h \
|
||||||
A2STR.cc A2STR.h RarestPieceSelector.cc RarestPieceSelector.h \
|
A2STR.cc A2STR.h RarestPieceSelector.cc RarestPieceSelector.h \
|
||||||
Decoder.h ChunkedDecoder.cc ChunkedDecoder.h GZipDecoder.cc \
|
Decoder.h ChunkedDecoder.cc ChunkedDecoder.h Signature.cc \
|
||||||
GZipDecoder.h AsyncNameResolver.cc AsyncNameResolver.h \
|
Signature.h GZipDecoder.cc GZipDecoder.h AsyncNameResolver.cc \
|
||||||
IteratableChunkChecksumValidator.cc \
|
AsyncNameResolver.h IteratableChunkChecksumValidator.cc \
|
||||||
IteratableChunkChecksumValidator.h \
|
IteratableChunkChecksumValidator.h \
|
||||||
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
|
IteratableChecksumValidator.cc IteratableChecksumValidator.h \
|
||||||
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
|
CheckIntegrityCommand.cc CheckIntegrityCommand.h \
|
||||||
|
@ -550,7 +552,8 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
||||||
VerificationMetalinkParserState.h HashMetalinkParserState.cc \
|
VerificationMetalinkParserState.h HashMetalinkParserState.cc \
|
||||||
HashMetalinkParserState.h PiecesMetalinkParserState.cc \
|
HashMetalinkParserState.h PiecesMetalinkParserState.cc \
|
||||||
PiecesMetalinkParserState.h PieceHashMetalinkParserState.cc \
|
PiecesMetalinkParserState.h PieceHashMetalinkParserState.cc \
|
||||||
PieceHashMetalinkParserState.h ResourcesMetalinkParserState.cc \
|
PieceHashMetalinkParserState.h SignatureMetalinkParserState.cc \
|
||||||
|
SignatureMetalinkParserState.h ResourcesMetalinkParserState.cc \
|
||||||
ResourcesMetalinkParserState.h URLMetalinkParserState.cc \
|
ResourcesMetalinkParserState.h URLMetalinkParserState.cc \
|
||||||
URLMetalinkParserState.h FinMetalinkParserState.cc \
|
URLMetalinkParserState.h FinMetalinkParserState.cc \
|
||||||
FinMetalinkParserState.h SkipTagMetalinkParserState.cc \
|
FinMetalinkParserState.h SkipTagMetalinkParserState.cc \
|
||||||
|
@ -703,6 +706,7 @@ am__libaria2c_a_SOURCES_DIST = Socket.h SocketCore.cc SocketCore.h \
|
||||||
@ENABLE_METALINK_TRUE@ HashMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ HashMetalinkParserState.$(OBJEXT) \
|
||||||
@ENABLE_METALINK_TRUE@ PiecesMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ PiecesMetalinkParserState.$(OBJEXT) \
|
||||||
@ENABLE_METALINK_TRUE@ PieceHashMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ PieceHashMetalinkParserState.$(OBJEXT) \
|
||||||
|
@ENABLE_METALINK_TRUE@ SignatureMetalinkParserState.$(OBJEXT) \
|
||||||
@ENABLE_METALINK_TRUE@ ResourcesMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ ResourcesMetalinkParserState.$(OBJEXT) \
|
||||||
@ENABLE_METALINK_TRUE@ URLMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ URLMetalinkParserState.$(OBJEXT) \
|
||||||
@ENABLE_METALINK_TRUE@ FinMetalinkParserState.$(OBJEXT) \
|
@ENABLE_METALINK_TRUE@ FinMetalinkParserState.$(OBJEXT) \
|
||||||
|
@ -787,19 +791,19 @@ am__objects_17 = SocketCore.$(OBJEXT) Command.$(OBJEXT) \
|
||||||
PeerConnection.$(OBJEXT) ByteArrayDiskWriter.$(OBJEXT) \
|
PeerConnection.$(OBJEXT) ByteArrayDiskWriter.$(OBJEXT) \
|
||||||
ByteArrayDiskWriterFactory.$(OBJEXT) ServerHost.$(OBJEXT) \
|
ByteArrayDiskWriterFactory.$(OBJEXT) ServerHost.$(OBJEXT) \
|
||||||
HelpItem.$(OBJEXT) TaggedItem.$(OBJEXT) TagContainer.$(OBJEXT) \
|
HelpItem.$(OBJEXT) TaggedItem.$(OBJEXT) TagContainer.$(OBJEXT) \
|
||||||
HelpItemFactory.$(OBJEXT) SingleFileDownloadContext.$(OBJEXT) \
|
HelpItemFactory.$(OBJEXT) DownloadContext.$(OBJEXT) \
|
||||||
TimedHaltCommand.$(OBJEXT) prefs.$(OBJEXT) \
|
SingleFileDownloadContext.$(OBJEXT) TimedHaltCommand.$(OBJEXT) \
|
||||||
ProtocolDetector.$(OBJEXT) StringFormat.$(OBJEXT) \
|
prefs.$(OBJEXT) ProtocolDetector.$(OBJEXT) \
|
||||||
HttpSkipResponseCommand.$(OBJEXT) \
|
StringFormat.$(OBJEXT) HttpSkipResponseCommand.$(OBJEXT) \
|
||||||
InitiateConnectionCommand.$(OBJEXT) \
|
InitiateConnectionCommand.$(OBJEXT) \
|
||||||
FtpFinishDownloadCommand.$(OBJEXT) A2STR.$(OBJEXT) \
|
FtpFinishDownloadCommand.$(OBJEXT) A2STR.$(OBJEXT) \
|
||||||
RarestPieceSelector.$(OBJEXT) ChunkedDecoder.$(OBJEXT) \
|
RarestPieceSelector.$(OBJEXT) ChunkedDecoder.$(OBJEXT) \
|
||||||
$(am__objects_1) $(am__objects_2) $(am__objects_3) \
|
Signature.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
|
||||||
$(am__objects_4) $(am__objects_5) $(am__objects_6) \
|
$(am__objects_3) $(am__objects_4) $(am__objects_5) \
|
||||||
$(am__objects_7) $(am__objects_8) $(am__objects_9) \
|
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
|
||||||
$(am__objects_10) $(am__objects_11) $(am__objects_12) \
|
$(am__objects_9) $(am__objects_10) $(am__objects_11) \
|
||||||
$(am__objects_13) $(am__objects_14) $(am__objects_15) \
|
$(am__objects_12) $(am__objects_13) $(am__objects_14) \
|
||||||
$(am__objects_16)
|
$(am__objects_15) $(am__objects_16)
|
||||||
am_libaria2c_a_OBJECTS = $(am__objects_17)
|
am_libaria2c_a_OBJECTS = $(am__objects_17)
|
||||||
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
|
libaria2c_a_OBJECTS = $(am_libaria2c_a_OBJECTS)
|
||||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||||
|
@ -1103,11 +1107,12 @@ SRCS = Socket.h SocketCore.cc SocketCore.h BinaryStream.h Command.cc \
|
||||||
ByteArrayDiskWriterFactory.cc ByteArrayDiskWriterFactory.h \
|
ByteArrayDiskWriterFactory.cc ByteArrayDiskWriterFactory.h \
|
||||||
ServerHost.cc ServerHost.h HelpItem.cc HelpItem.h \
|
ServerHost.cc ServerHost.h HelpItem.cc HelpItem.h \
|
||||||
TaggedItem.cc TaggedItem.h TagContainer.cc TagContainer.h \
|
TaggedItem.cc TaggedItem.h TagContainer.cc TagContainer.h \
|
||||||
HelpItemFactory.cc HelpItemFactory.h DownloadContext.h \
|
HelpItemFactory.cc HelpItemFactory.h DownloadContext.cc \
|
||||||
SingleFileDownloadContext.cc SingleFileDownloadContext.h \
|
DownloadContext.h SingleFileDownloadContext.cc \
|
||||||
TimedHaltCommand.cc TimedHaltCommand.h CUIDCounter.h \
|
SingleFileDownloadContext.h TimedHaltCommand.cc \
|
||||||
DNSCache.h DownloadResult.h Sequence.h IntSequence.h \
|
TimedHaltCommand.h CUIDCounter.h DNSCache.h DownloadResult.h \
|
||||||
PostDownloadHandler.h PreDownloadHandler.h SingletonHolder.h \
|
Sequence.h IntSequence.h PostDownloadHandler.h \
|
||||||
|
PreDownloadHandler.h SingletonHolder.h \
|
||||||
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
|
TrueRequestGroupCriteria.h a2algo.h a2functional.h a2io.h \
|
||||||
a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
|
a2netcompat.h a2time.h array_fun.h help_tags.h prefs.cc \
|
||||||
prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
|
prefs.h usage_text.h ProtocolDetector.cc ProtocolDetector.h \
|
||||||
|
@ -1116,12 +1121,13 @@ SRCS = Socket.h SocketCore.cc SocketCore.h BinaryStream.h Command.cc \
|
||||||
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
|
InitiateConnectionCommand.cc InitiateConnectionCommand.h \
|
||||||
FtpFinishDownloadCommand.cc FtpFinishDownloadCommand.h \
|
FtpFinishDownloadCommand.cc FtpFinishDownloadCommand.h \
|
||||||
A2STR.cc A2STR.h RarestPieceSelector.cc RarestPieceSelector.h \
|
A2STR.cc A2STR.h RarestPieceSelector.cc RarestPieceSelector.h \
|
||||||
Decoder.h ChunkedDecoder.cc ChunkedDecoder.h $(am__append_1) \
|
Decoder.h ChunkedDecoder.cc ChunkedDecoder.h Signature.cc \
|
||||||
$(am__append_2) $(am__append_3) $(am__append_4) \
|
Signature.h $(am__append_1) $(am__append_2) $(am__append_3) \
|
||||||
$(am__append_5) $(am__append_6) $(am__append_7) \
|
$(am__append_4) $(am__append_5) $(am__append_6) \
|
||||||
$(am__append_8) $(am__append_9) $(am__append_10) \
|
$(am__append_7) $(am__append_8) $(am__append_9) \
|
||||||
$(am__append_11) $(am__append_12) $(am__append_13) \
|
$(am__append_10) $(am__append_11) $(am__append_12) \
|
||||||
$(am__append_14) $(am__append_15) $(am__append_16)
|
$(am__append_13) $(am__append_14) $(am__append_15) \
|
||||||
|
$(am__append_16)
|
||||||
noinst_LIBRARIES = libaria2c.a
|
noinst_LIBRARIES = libaria2c.a
|
||||||
libaria2c_a_SOURCES = $(SRCS)
|
libaria2c_a_SOURCES = $(SRCS)
|
||||||
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\
|
aria2c_LDADD = libaria2c.a @LIBINTL@ @ALLOCA@ @LIBGNUTLS_LIBS@\
|
||||||
|
@ -1344,6 +1350,7 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectDiskAdaptor.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DirectDiskAdaptor.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiskAdaptor.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DiskAdaptor.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadCommand.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadCommand.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadContext.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadEngine.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadEngine.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadEngineFactory.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadEngineFactory.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadHandler.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DownloadHandler.Po@am__quote@
|
||||||
|
@ -1454,6 +1461,8 @@ distclean-compile:
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SeedCheckCommand.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SeedCheckCommand.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentMan.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SegmentMan.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ServerHost.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ServerHost.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Signature.Po@am__quote@
|
||||||
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SignatureMetalinkParserState.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleBtMessage.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleBtMessage.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleLogger.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleLogger.Po@am__quote@
|
||||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleRandomizer.Po@am__quote@
|
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SimpleRandomizer.Po@am__quote@
|
||||||
|
|
|
@ -220,6 +220,7 @@ Metalink2RequestGroup::createRequestGroup
|
||||||
dctx->setPieceHashAlgo(entry->chunkChecksum->getAlgo());
|
dctx->setPieceHashAlgo(entry->chunkChecksum->getAlgo());
|
||||||
}
|
}
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
dctx->setSignature(entry->getSignature());
|
||||||
rg->setDownloadContext(dctx);
|
rg->setDownloadContext(dctx);
|
||||||
rg->setNumConcurrentCommand(entry->maxConnections < 0 ?
|
rg->setNumConcurrentCommand(entry->maxConnections < 0 ?
|
||||||
_option->getAsInt(PREF_METALINK_SERVERS) :
|
_option->getAsInt(PREF_METALINK_SERVERS) :
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
# include "Checksum.h"
|
# include "Checksum.h"
|
||||||
# include "ChunkChecksum.h"
|
# include "ChunkChecksum.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
#include "Signature.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
@ -83,6 +84,7 @@ MetalinkEntry& MetalinkEntry::operator=(const MetalinkEntry& metalinkEntry)
|
||||||
this->checksum = metalinkEntry.checksum;
|
this->checksum = metalinkEntry.checksum;
|
||||||
this->chunkChecksum = metalinkEntry.chunkChecksum;
|
this->chunkChecksum = metalinkEntry.chunkChecksum;
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
this->_signature = metalinkEntry._signature;
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
@ -180,4 +182,14 @@ SharedHandle<FileEntry> MetalinkEntry::getFile() const
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MetalinkEntry::setSignature(const SharedHandle<Signature>& signature)
|
||||||
|
{
|
||||||
|
_signature = signature;
|
||||||
|
}
|
||||||
|
|
||||||
|
SharedHandle<Signature> MetalinkEntry::getSignature() const
|
||||||
|
{
|
||||||
|
return _signature;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -48,6 +48,7 @@ class FileEntry;
|
||||||
class Checksum;
|
class Checksum;
|
||||||
class ChunkChecksum;
|
class ChunkChecksum;
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
class Signature;
|
||||||
|
|
||||||
class MetalinkEntry {
|
class MetalinkEntry {
|
||||||
public:
|
public:
|
||||||
|
@ -61,6 +62,8 @@ public:
|
||||||
SharedHandle<Checksum> checksum;
|
SharedHandle<Checksum> checksum;
|
||||||
SharedHandle<ChunkChecksum> chunkChecksum;
|
SharedHandle<ChunkChecksum> chunkChecksum;
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
private:
|
||||||
|
SharedHandle<Signature> _signature;
|
||||||
public:
|
public:
|
||||||
MetalinkEntry();
|
MetalinkEntry();
|
||||||
|
|
||||||
|
@ -84,6 +87,10 @@ public:
|
||||||
static void toFileEntry
|
static void toFileEntry
|
||||||
(std::deque<SharedHandle<FileEntry> >& fileEntries,
|
(std::deque<SharedHandle<FileEntry> >& fileEntries,
|
||||||
const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries);
|
const std::deque<SharedHandle<MetalinkEntry> >& metalinkEntries);
|
||||||
|
|
||||||
|
void setSignature(const SharedHandle<Signature>& signature);
|
||||||
|
|
||||||
|
SharedHandle<Signature> getSignature() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
# include "ChunkChecksum.h"
|
# include "ChunkChecksum.h"
|
||||||
# include "messageDigest.h"
|
# include "messageDigest.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
#include "Signature.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
@ -135,6 +136,7 @@ void MetalinkParserController::commitEntryTransaction()
|
||||||
commitResourceTransaction();
|
commitResourceTransaction();
|
||||||
commitChecksumTransaction();
|
commitChecksumTransaction();
|
||||||
commitChunkChecksumTransaction();
|
commitChunkChecksumTransaction();
|
||||||
|
commitSignatureTransaction();
|
||||||
_metalinker->entries.push_back(_tEntry);
|
_metalinker->entries.push_back(_tEntry);
|
||||||
_tEntry.reset();
|
_tEntry.reset();
|
||||||
}
|
}
|
||||||
|
@ -144,6 +146,7 @@ void MetalinkParserController::cancelEntryTransaction()
|
||||||
cancelResourceTransaction();
|
cancelResourceTransaction();
|
||||||
cancelChecksumTransaction();
|
cancelChecksumTransaction();
|
||||||
cancelChunkChecksumTransaction();
|
cancelChunkChecksumTransaction();
|
||||||
|
cancelSignatureTransaction();
|
||||||
_tEntry.reset();
|
_tEntry.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -379,4 +382,50 @@ void MetalinkParserController::cancelChunkChecksumTransaction()
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::newSignatureTransaction()
|
||||||
|
{
|
||||||
|
if(_tEntry.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_tSignature.reset(new Signature());
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::setTypeOfSignature(const std::string& type)
|
||||||
|
{
|
||||||
|
if(_tSignature.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_tSignature->setType(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::setFileOfSignature(const std::string& file)
|
||||||
|
{
|
||||||
|
if(_tSignature.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_tSignature->setFile(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::setBodyOfSignature(const std::string& body)
|
||||||
|
{
|
||||||
|
if(_tSignature.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_tSignature->setBody(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::commitSignatureTransaction()
|
||||||
|
{
|
||||||
|
if(_tSignature.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_tEntry->setSignature(_tSignature);
|
||||||
|
_tSignature.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserController::cancelSignatureTransaction()
|
||||||
|
{
|
||||||
|
_tSignature.reset();
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -46,6 +46,7 @@ namespace aria2 {
|
||||||
class Metalinker;
|
class Metalinker;
|
||||||
class MetalinkEntry;
|
class MetalinkEntry;
|
||||||
class MetalinkResource;
|
class MetalinkResource;
|
||||||
|
class Signature;
|
||||||
|
|
||||||
#ifdef ENABLE_MESSAGE_DIGEST
|
#ifdef ENABLE_MESSAGE_DIGEST
|
||||||
class Checksum;
|
class Checksum;
|
||||||
|
@ -70,6 +71,8 @@ private:
|
||||||
std::pair<size_t, std::string> _tempHashPair;
|
std::pair<size_t, std::string> _tempHashPair;
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
|
||||||
|
SharedHandle<Signature> _tSignature;
|
||||||
|
|
||||||
static const std::string SHA1;
|
static const std::string SHA1;
|
||||||
public:
|
public:
|
||||||
MetalinkParserController();
|
MetalinkParserController();
|
||||||
|
@ -139,6 +142,18 @@ public:
|
||||||
void commitChunkChecksumTransaction();
|
void commitChunkChecksumTransaction();
|
||||||
|
|
||||||
void cancelChunkChecksumTransaction();
|
void cancelChunkChecksumTransaction();
|
||||||
|
|
||||||
|
void newSignatureTransaction();
|
||||||
|
|
||||||
|
void setTypeOfSignature(const std::string& type);
|
||||||
|
|
||||||
|
void setFileOfSignature(const std::string& file);
|
||||||
|
|
||||||
|
void setBodyOfSignature(const std::string& body);
|
||||||
|
|
||||||
|
void commitSignatureTransaction();
|
||||||
|
|
||||||
|
void cancelSignatureTransaction();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -46,6 +46,7 @@
|
||||||
#include "HashMetalinkParserState.h"
|
#include "HashMetalinkParserState.h"
|
||||||
#include "PiecesMetalinkParserState.h"
|
#include "PiecesMetalinkParserState.h"
|
||||||
#include "PieceHashMetalinkParserState.h"
|
#include "PieceHashMetalinkParserState.h"
|
||||||
|
#include "SignatureMetalinkParserState.h"
|
||||||
#include "ResourcesMetalinkParserState.h"
|
#include "ResourcesMetalinkParserState.h"
|
||||||
#include "URLMetalinkParserState.h"
|
#include "URLMetalinkParserState.h"
|
||||||
#include "FinMetalinkParserState.h"
|
#include "FinMetalinkParserState.h"
|
||||||
|
@ -67,6 +68,8 @@ MetalinkParserState* MetalinkParserStateMachine::_verificationState = new Verifi
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_hashState = new HashMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_hashState = new HashMetalinkParserState();
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_piecesState = new PiecesMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_piecesState = new PiecesMetalinkParserState();
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_pieceHashState = new PieceHashMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_pieceHashState = new PieceHashMetalinkParserState();
|
||||||
|
MetalinkParserState* MetalinkParserStateMachine::_signatureState =
|
||||||
|
new SignatureMetalinkParserState();
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_resourcesState = new ResourcesMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_resourcesState = new ResourcesMetalinkParserState();
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_urlState = new URLMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_urlState = new URLMetalinkParserState();
|
||||||
MetalinkParserState* MetalinkParserStateMachine::_finState = new FinMetalinkParserState();
|
MetalinkParserState* MetalinkParserStateMachine::_finState = new FinMetalinkParserState();
|
||||||
|
@ -136,6 +139,11 @@ void MetalinkParserStateMachine::setPieceHashState()
|
||||||
_state = _pieceHashState;
|
_state = _pieceHashState;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::setSignatureState()
|
||||||
|
{
|
||||||
|
_state = _signatureState;
|
||||||
|
}
|
||||||
|
|
||||||
void MetalinkParserStateMachine::setResourcesState()
|
void MetalinkParserStateMachine::setResourcesState()
|
||||||
{
|
{
|
||||||
_state = _resourcesState;
|
_state = _resourcesState;
|
||||||
|
@ -313,6 +321,36 @@ void MetalinkParserStateMachine::cancelChunkChecksumTransaction()
|
||||||
_ctrl->cancelChunkChecksumTransaction();
|
_ctrl->cancelChunkChecksumTransaction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::newSignatureTransaction()
|
||||||
|
{
|
||||||
|
_ctrl->newSignatureTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::setTypeOfSignature(const std::string& type)
|
||||||
|
{
|
||||||
|
_ctrl->setTypeOfSignature(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::setFileOfSignature(const std::string& file)
|
||||||
|
{
|
||||||
|
_ctrl->setFileOfSignature(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::setBodyOfSignature(const std::string& body)
|
||||||
|
{
|
||||||
|
_ctrl->setBodyOfSignature(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::commitSignatureTransaction()
|
||||||
|
{
|
||||||
|
_ctrl->commitSignatureTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MetalinkParserStateMachine::cancelSignatureTransaction()
|
||||||
|
{
|
||||||
|
_ctrl->cancelSignatureTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
void MetalinkParserStateMachine::beginElement(const std::string& name,
|
void MetalinkParserStateMachine::beginElement(const std::string& name,
|
||||||
const std::map<std::string, std::string>& attrs)
|
const std::map<std::string, std::string>& attrs)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,6 +65,7 @@ private:
|
||||||
static MetalinkParserState* _hashState;
|
static MetalinkParserState* _hashState;
|
||||||
static MetalinkParserState* _piecesState;
|
static MetalinkParserState* _piecesState;
|
||||||
static MetalinkParserState* _pieceHashState;
|
static MetalinkParserState* _pieceHashState;
|
||||||
|
static MetalinkParserState* _signatureState;
|
||||||
static MetalinkParserState* _resourcesState;
|
static MetalinkParserState* _resourcesState;
|
||||||
static MetalinkParserState* _urlState;
|
static MetalinkParserState* _urlState;
|
||||||
static MetalinkParserState* _finState;
|
static MetalinkParserState* _finState;
|
||||||
|
@ -97,6 +98,8 @@ public:
|
||||||
|
|
||||||
void setPieceHashState();
|
void setPieceHashState();
|
||||||
|
|
||||||
|
void setSignatureState();
|
||||||
|
|
||||||
void setResourcesState();
|
void setResourcesState();
|
||||||
|
|
||||||
void setURLState();
|
void setURLState();
|
||||||
|
@ -111,7 +114,8 @@ public:
|
||||||
|
|
||||||
bool error() const;
|
bool error() const;
|
||||||
|
|
||||||
void beginElement(const std::string& name, const std::map<std::string, std::string>& attrs);
|
void beginElement(const std::string& name, const std::map<std::string,
|
||||||
|
std::string>& attrs);
|
||||||
|
|
||||||
void endElement(const std::string& name, const std::string& characters);
|
void endElement(const std::string& name, const std::string& characters);
|
||||||
|
|
||||||
|
@ -173,6 +177,18 @@ public:
|
||||||
|
|
||||||
void cancelChunkChecksumTransaction();
|
void cancelChunkChecksumTransaction();
|
||||||
|
|
||||||
|
void newSignatureTransaction();
|
||||||
|
|
||||||
|
void setTypeOfSignature(const std::string& type);
|
||||||
|
|
||||||
|
void setFileOfSignature(const std::string& file);
|
||||||
|
|
||||||
|
void setBodyOfSignature(const std::string& body);
|
||||||
|
|
||||||
|
void commitSignatureTransaction();
|
||||||
|
|
||||||
|
void cancelSignatureTransaction();
|
||||||
|
|
||||||
bool needsCharactersBuffering() const;
|
bool needsCharactersBuffering() const;
|
||||||
|
|
||||||
SharedHandle<Metalinker> getResult() const;
|
SharedHandle<Metalinker> getResult() const;
|
||||||
|
|
|
@ -0,0 +1,79 @@
|
||||||
|
/* <!-- 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 "Signature.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
Signature::Signature() {}
|
||||||
|
|
||||||
|
Signature::~Signature() {}
|
||||||
|
|
||||||
|
void Signature::setType(const std::string& type)
|
||||||
|
{
|
||||||
|
_type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string& Signature::getType() const
|
||||||
|
{
|
||||||
|
return _type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Signature::setFile(const std::string& file)
|
||||||
|
{
|
||||||
|
_file = file;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string& Signature::getFile() const
|
||||||
|
{
|
||||||
|
return _file;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Signature::setBody(const std::string& body)
|
||||||
|
{
|
||||||
|
_body = body;
|
||||||
|
}
|
||||||
|
|
||||||
|
const std::string& Signature::getBody() const
|
||||||
|
{
|
||||||
|
return _body;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Signature::save(const std::string& filepath) const
|
||||||
|
{
|
||||||
|
// TODO not yet implemented
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace aria2
|
|
@ -0,0 +1,73 @@
|
||||||
|
/* <!-- 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_SIGNATURE_H_
|
||||||
|
#define _D_SIGNATURE_H_
|
||||||
|
|
||||||
|
#include "common.h"
|
||||||
|
#include "SharedHandle.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
class Signature {
|
||||||
|
private:
|
||||||
|
std::string _type;
|
||||||
|
|
||||||
|
std::string _file;
|
||||||
|
|
||||||
|
std::string _body;
|
||||||
|
public:
|
||||||
|
Signature();
|
||||||
|
|
||||||
|
~Signature();
|
||||||
|
|
||||||
|
void setType(const std::string& type);
|
||||||
|
|
||||||
|
const std::string& getType() const;
|
||||||
|
|
||||||
|
void setFile(const std::string& file);
|
||||||
|
|
||||||
|
const std::string& getFile() const;
|
||||||
|
|
||||||
|
void setBody(const std::string& body);
|
||||||
|
|
||||||
|
const std::string& getBody() const;
|
||||||
|
|
||||||
|
bool save(const std::string& filepath) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace aria2
|
||||||
|
|
||||||
|
#endif // _D_SIGNATURE_H_
|
|
@ -0,0 +1,58 @@
|
||||||
|
/* <!-- 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 "SignatureMetalinkParserState.h"
|
||||||
|
#include "MetalinkParserStateMachine.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
void SignatureMetalinkParserState::beginElement
|
||||||
|
(MetalinkParserStateMachine* stm,
|
||||||
|
const std::string& name,
|
||||||
|
const std::map<std::string, std::string>& attrs)
|
||||||
|
{
|
||||||
|
stm->setSkipTagState(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SignatureMetalinkParserState::endElement
|
||||||
|
(MetalinkParserStateMachine* stm,
|
||||||
|
const std::string& name,
|
||||||
|
const std::string& characters)
|
||||||
|
{
|
||||||
|
stm->setBodyOfSignature(characters);
|
||||||
|
stm->commitSignatureTransaction();
|
||||||
|
stm->setVerificationState();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace aria2
|
|
@ -0,0 +1,60 @@
|
||||||
|
/* <!-- 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_SIGNATURE_METALINK_PARSER_STATE_H_
|
||||||
|
#define _D_SIGNATURE_METALINK_PARSER_STATE_H_
|
||||||
|
|
||||||
|
#include "MetalinkParserState.h"
|
||||||
|
|
||||||
|
namespace aria2 {
|
||||||
|
|
||||||
|
class SignatureMetalinkParserState:public MetalinkParserState
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void beginElement(MetalinkParserStateMachine* stm,
|
||||||
|
const std::string& name, const std::map<std::string,
|
||||||
|
std::string>& attrs);
|
||||||
|
|
||||||
|
void endElement(MetalinkParserStateMachine* stm,
|
||||||
|
const std::string& name, const std::string& characters);
|
||||||
|
|
||||||
|
virtual bool needsCharactersBuffering() const
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace aria2
|
||||||
|
|
||||||
|
#endif // _D_SIGNATURE_METALINK_PARSER_STATE_H_
|
|
@ -47,7 +47,12 @@ const std::string VerificationMetalinkParserState::PIECES("pieces");
|
||||||
|
|
||||||
const std::string VerificationMetalinkParserState::LENGTH("length");
|
const std::string VerificationMetalinkParserState::LENGTH("length");
|
||||||
|
|
||||||
void VerificationMetalinkParserState::beginElement(MetalinkParserStateMachine* stm,
|
const std::string VerificationMetalinkParserState::SIGNATURE("signature");
|
||||||
|
|
||||||
|
const std::string VerificationMetalinkParserState::FILE("file");
|
||||||
|
|
||||||
|
void VerificationMetalinkParserState::beginElement
|
||||||
|
(MetalinkParserStateMachine* stm,
|
||||||
const std::string& name,
|
const std::string& name,
|
||||||
const std::map<std::string, std::string>& attrs)
|
const std::map<std::string, std::string>& attrs)
|
||||||
{
|
{
|
||||||
|
@ -91,12 +96,29 @@ void VerificationMetalinkParserState::beginElement(MetalinkParserStateMachine* s
|
||||||
} catch(RecoverableException& e) {
|
} catch(RecoverableException& e) {
|
||||||
stm->cancelChunkChecksumTransaction();
|
stm->cancelChunkChecksumTransaction();
|
||||||
}
|
}
|
||||||
|
} else if(name == VerificationMetalinkParserState::SIGNATURE) {
|
||||||
|
stm->setSignatureState();
|
||||||
|
std::map<std::string, std::string>::const_iterator itr =
|
||||||
|
attrs.find(VerificationMetalinkParserState::TYPE);
|
||||||
|
if(itr == attrs.end()) {
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
stm->newSignatureTransaction();
|
||||||
|
stm->setTypeOfSignature((*itr).second);
|
||||||
|
|
||||||
|
std::map<std::string, std::string>::const_iterator itr =
|
||||||
|
attrs.find(VerificationMetalinkParserState::FILE);
|
||||||
|
if(itr != attrs.end()) {
|
||||||
|
stm->setFileOfSignature((*itr).second);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
stm->setSkipTagState(this);
|
stm->setSkipTagState(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void VerificationMetalinkParserState::endElement(MetalinkParserStateMachine* stm,
|
void VerificationMetalinkParserState::endElement
|
||||||
|
(MetalinkParserStateMachine* stm,
|
||||||
const std::string& name,
|
const std::string& name,
|
||||||
const std::string& characters)
|
const std::string& characters)
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,6 +49,10 @@ private:
|
||||||
static const std::string PIECES;
|
static const std::string PIECES;
|
||||||
|
|
||||||
static const std::string LENGTH;
|
static const std::string LENGTH;
|
||||||
|
|
||||||
|
static const std::string SIGNATURE;
|
||||||
|
|
||||||
|
static const std::string FILE;
|
||||||
public:
|
public:
|
||||||
void beginElement(MetalinkParserStateMachine* stm,
|
void beginElement(MetalinkParserStateMachine* stm,
|
||||||
const std::string& name, const std::map<std::string, std::string>& attrs);
|
const std::string& name, const std::map<std::string, std::string>& attrs);
|
||||||
|
|
|
@ -52,6 +52,8 @@ void Metalink2RequestGroupTest::testGenerate()
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
CPPUNIT_ASSERT_EQUAL(std::string("a96cf3f0266b91d87d5124cf94326422800b627d"),
|
||||||
dctx->getChecksum());
|
dctx->getChecksum());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
CPPUNIT_ASSERT(!dctx->getSignature().isNull());
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), dctx->getSignature()->getType());
|
||||||
}
|
}
|
||||||
// second file
|
// second file
|
||||||
{
|
{
|
||||||
|
@ -69,6 +71,7 @@ void Metalink2RequestGroupTest::testGenerate()
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksumHashAlgo());
|
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksumHashAlgo());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksum());
|
CPPUNIT_ASSERT_EQUAL(std::string(""), dctx->getChecksum());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
CPPUNIT_ASSERT(dctx->getSignature().isNull());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ENABLE_BITTORRENT
|
#ifdef ENABLE_BITTORRENT
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
# include "Checksum.h"
|
# include "Checksum.h"
|
||||||
# include "ChunkChecksum.h"
|
# include "ChunkChecksum.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
#include "Signature.h"
|
||||||
#include <cppunit/extensions/HelperMacros.h>
|
#include <cppunit/extensions/HelperMacros.h>
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
@ -20,6 +21,7 @@ class MetalinkParserControllerTest:public CppUnit::TestFixture {
|
||||||
CPPUNIT_TEST(testChecksumTransaction);
|
CPPUNIT_TEST(testChecksumTransaction);
|
||||||
CPPUNIT_TEST(testChunkChecksumTransaction);
|
CPPUNIT_TEST(testChunkChecksumTransaction);
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
CPPUNIT_TEST(testSignatureTransaction);
|
||||||
|
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
private:
|
private:
|
||||||
|
@ -35,6 +37,7 @@ public:
|
||||||
void testChecksumTransaction();
|
void testChecksumTransaction();
|
||||||
void testChunkChecksumTransaction();
|
void testChunkChecksumTransaction();
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
void testSignatureTransaction();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,4 +153,40 @@ void MetalinkParserControllerTest::testChunkChecksumTransaction()
|
||||||
}
|
}
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
|
||||||
|
void MetalinkParserControllerTest::testSignatureTransaction()
|
||||||
|
{
|
||||||
|
static std::string pgpSignature =
|
||||||
|
"-----BEGIN PGP SIGNATURE-----\n"
|
||||||
|
"Version: GnuPG v1.4.9 (GNU/Linux)\n"
|
||||||
|
"\n"
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
|
||||||
|
"ffffffffffffffffffffffff\n"
|
||||||
|
"fffff\n"
|
||||||
|
"-----END PGP SIGNATURE-----\n";
|
||||||
|
|
||||||
|
MetalinkParserController ctrl;
|
||||||
|
ctrl.newEntryTransaction();
|
||||||
|
|
||||||
|
ctrl.newSignatureTransaction();
|
||||||
|
ctrl.setTypeOfSignature("pgp");
|
||||||
|
ctrl.setFileOfSignature("aria2.sig");
|
||||||
|
ctrl.setBodyOfSignature(pgpSignature);
|
||||||
|
// commitEntryTransaction also commits signature transaction.
|
||||||
|
ctrl.commitEntryTransaction();
|
||||||
|
|
||||||
|
SharedHandle<Metalinker> m = ctrl.getResult();
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)1, m->entries.size());
|
||||||
|
SharedHandle<Signature> sig = m->entries.front()->getSignature();
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), sig->getType());
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("aria2.sig"), sig->getFile());
|
||||||
|
CPPUNIT_ASSERT_EQUAL(pgpSignature, sig->getBody());
|
||||||
|
|
||||||
|
// See when signature transaction is canceled:
|
||||||
|
ctrl.newEntryTransaction();
|
||||||
|
ctrl.newSignatureTransaction();
|
||||||
|
ctrl.cancelSignatureTransaction();
|
||||||
|
ctrl.commitEntryTransaction();
|
||||||
|
CPPUNIT_ASSERT(ctrl.getResult()->entries[1]->getSignature().isNull());
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
# include "ChunkChecksum.h"
|
# include "ChunkChecksum.h"
|
||||||
# include "Checksum.h"
|
# include "Checksum.h"
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
#include "Signature.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <cppunit/extensions/HelperMacros.h>
|
#include <cppunit/extensions/HelperMacros.h>
|
||||||
|
|
||||||
|
@ -82,6 +83,22 @@ void MetalinkProcessorTest::testParseFile()
|
||||||
entry1->checksum->getMessageDigest());
|
entry1->checksum->getMessageDigest());
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry1->checksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry1->checksum->getAlgo());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
CPPUNIT_ASSERT(!entry1->getSignature().isNull());
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("pgp"), entry1->getSignature()->getType());
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("aria2-0.5.2.tar.bz2.sig"),
|
||||||
|
entry1->getSignature()->getFile());
|
||||||
|
// Note that last '\n' character is trimmed.
|
||||||
|
CPPUNIT_ASSERT_EQUAL
|
||||||
|
(std::string
|
||||||
|
("-----BEGIN PGP SIGNATURE-----\n"
|
||||||
|
"Version: GnuPG v1.4.9 (GNU/Linux)\n"
|
||||||
|
"\n"
|
||||||
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n"
|
||||||
|
"ffffffffffffffffffffffff\n"
|
||||||
|
"fffff\n"
|
||||||
|
"-----END PGP SIGNATURE-----"),
|
||||||
|
entry1->getSignature()->getBody());
|
||||||
|
|
||||||
std::deque<SharedHandle<MetalinkResource> >::iterator resourceItr1 = entry1->resources.begin();
|
std::deque<SharedHandle<MetalinkResource> >::iterator resourceItr1 = entry1->resources.begin();
|
||||||
SharedHandle<MetalinkResource> resource1 = *resourceItr1;
|
SharedHandle<MetalinkResource> resource1 = *resourceItr1;
|
||||||
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, resource1->type);
|
CPPUNIT_ASSERT_EQUAL(MetalinkResource::TYPE_FTP, resource1->type);
|
||||||
|
@ -120,6 +137,8 @@ void MetalinkProcessorTest::testParseFile()
|
||||||
entry2->chunkChecksum->getChecksum(1));
|
entry2->chunkChecksum->getChecksum(1));
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry2->checksum->getAlgo());
|
CPPUNIT_ASSERT_EQUAL(std::string("sha1"), entry2->checksum->getAlgo());
|
||||||
#endif // ENABLE_MESSAGE_DIGEST
|
#endif // ENABLE_MESSAGE_DIGEST
|
||||||
|
// See that signature is null
|
||||||
|
CPPUNIT_ASSERT(entry2->getSignature().isNull());
|
||||||
|
|
||||||
entryItr++;
|
entryItr++;
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,15 @@
|
||||||
<verification>
|
<verification>
|
||||||
<hash type="sha1">a96cf3f0266b91d87d5124cf94326422800b627d</hash>
|
<hash type="sha1">a96cf3f0266b91d87d5124cf94326422800b627d</hash>
|
||||||
<hash type="md5">fc4d834e89c18c99b2615d902750948c</hash>
|
<hash type="md5">fc4d834e89c18c99b2615d902750948c</hash>
|
||||||
|
<signature type="pgp" file="aria2-0.5.2.tar.bz2.sig">
|
||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
Version: GnuPG v1.4.9 (GNU/Linux)
|
||||||
|
|
||||||
|
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
||||||
|
ffffffffffffffffffffffff
|
||||||
|
fffff
|
||||||
|
-----END PGP SIGNATURE-----
|
||||||
|
</signature>
|
||||||
</verification>
|
</verification>
|
||||||
<resources maxconnections="1">
|
<resources maxconnections="1">
|
||||||
<url type="ftp" location="jp" preference="100" maxconnections="1">ftp://ftphost/aria2-0.5.2.tar.bz2</url>
|
<url type="ftp" location="jp" preference="100" maxconnections="1">ftp://ftphost/aria2-0.5.2.tar.bz2</url>
|
||||||
|
|
Loading…
Reference in New Issue