summaryrefslogtreecommitdiff
path: root/apt-pkg/contrib/hashes.h
diff options
context:
space:
mode:
Diffstat (limited to 'apt-pkg/contrib/hashes.h')
-rw-r--r--apt-pkg/contrib/hashes.h38
1 files changed, 34 insertions, 4 deletions
diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h
index 40bbe00a0..264f7fe90 100644
--- a/apt-pkg/contrib/hashes.h
+++ b/apt-pkg/contrib/hashes.h
@@ -13,16 +13,45 @@
#ifndef APTPKG_HASHES_H
#define APTPKG_HASHES_H
-#ifdef __GNUG__
-#pragma interface "apt-pkg/hashes.h"
-#endif
#include <apt-pkg/md5.h>
#include <apt-pkg/sha1.h>
+#include <apt-pkg/sha256.h>
#include <algorithm>
+#include <vector>
+#include <cstring>
using std::min;
+using std::vector;
+
+// helper class that contains hash function name
+// and hash
+class HashString
+{
+ protected:
+ string Type;
+ string Hash;
+ static const char * _SupportedHashes[10];
+
+ public:
+ HashString(string Type, string Hash);
+ HashString(string StringedHashString); // init from str as "type:hash"
+ HashString();
+
+ // get hash type used
+ string HashType() { return Type; };
+
+ // verify the given filename against the currently loaded hash
+ bool VerifyFile(string filename) const;
+
+ // helper
+ string toStr() const; // convert to str as "type:hash"
+ bool empty() const;
+
+ // return the list of hashes we support
+ static const char** SupportedHashes();
+};
class Hashes
{
@@ -30,10 +59,11 @@ class Hashes
MD5Summation MD5;
SHA1Summation SHA1;
+ SHA256Summation SHA256;
inline bool Add(const unsigned char *Data,unsigned long Size)
{
- return MD5.Add(Data,Size) && SHA1.Add(Data,Size);
+ return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size);
};
inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));};
bool AddFD(int Fd,unsigned long Size);