summaryrefslogtreecommitdiff
path: root/src/MetalinkParserController.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 13:35:35 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 13:35:35 +0000
commit5472c8033e3a36267a1ca5f12ade08ce0296c42b (patch)
tree8f785e508b6238a0eea7daf98bc3d45c00dc180c /src/MetalinkParserController.cc
parent6796e1c80593284ec1534136d977c83bbd8f3186 (diff)
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
Diffstat (limited to 'src/MetalinkParserController.cc')
-rw-r--r--src/MetalinkParserController.cc49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/MetalinkParserController.cc b/src/MetalinkParserController.cc
index 31f98625..205caf61 100644
--- a/src/MetalinkParserController.cc
+++ b/src/MetalinkParserController.cc
@@ -44,6 +44,7 @@
# include "ChunkChecksum.h"
# include "messageDigest.h"
#endif // ENABLE_MESSAGE_DIGEST
+#include "Signature.h"
#include <algorithm>
namespace aria2 {
@@ -135,6 +136,7 @@ void MetalinkParserController::commitEntryTransaction()
commitResourceTransaction();
commitChecksumTransaction();
commitChunkChecksumTransaction();
+ commitSignatureTransaction();
_metalinker->entries.push_back(_tEntry);
_tEntry.reset();
}
@@ -144,6 +146,7 @@ void MetalinkParserController::cancelEntryTransaction()
cancelResourceTransaction();
cancelChecksumTransaction();
cancelChunkChecksumTransaction();
+ cancelSignatureTransaction();
_tEntry.reset();
}
@@ -379,4 +382,50 @@ void MetalinkParserController::cancelChunkChecksumTransaction()
#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