]> git.saurik.com Git - apt.git/blame - apt-pkg/contrib/hashes.h
merge with current debian apt/experimental
[apt.git] / apt-pkg / contrib / hashes.h
CommitLineData
63b1700f
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
678bc33e 3// $Id: hashes.h,v 1.2 2001/03/11 05:30:20 jgg Exp $
63b1700f
AL
4/* ######################################################################
5
6 Hashes - Simple wrapper around the hash functions
7
8 This is just used to make building the methods simpler, this is the
9 only interface required..
10
11 ##################################################################### */
12 /*}}}*/
13#ifndef APTPKG_HASHES_H
14#define APTPKG_HASHES_H
15
63b1700f
AL
16
17#include <apt-pkg/md5.h>
18#include <apt-pkg/sha1.h>
84a0890e 19#include <apt-pkg/sha2.h>
63b1700f 20
42ab8223 21#include <algorithm>
495e5cb2 22#include <vector>
b16c2617 23#include <cstring>
42ab8223 24
495e5cb2
MV
25// helper class that contains hash function name
26// and hash
27class HashString
28{
29 protected:
8f3ba4e8
DK
30 std::string Type;
31 std::string Hash;
495e5cb2
MV
32 static const char * _SupportedHashes[10];
33
34 public:
8f3ba4e8
DK
35 HashString(std::string Type, std::string Hash);
36 HashString(std::string StringedHashString); // init from str as "type:hash"
495e5cb2
MV
37 HashString();
38
8a8feb29 39 // get hash type used
8f3ba4e8 40 std::string HashType() { return Type; };
8a8feb29 41
495e5cb2 42 // verify the given filename against the currently loaded hash
8f3ba4e8 43 bool VerifyFile(std::string filename) const;
495e5cb2
MV
44
45 // helper
8f3ba4e8 46 std::string toStr() const; // convert to str as "type:hash"
495e5cb2
MV
47 bool empty() const;
48
49 // return the list of hashes we support
50 static const char** SupportedHashes();
51};
42ab8223 52
63b1700f
AL
53class Hashes
54{
55 public:
56
57 MD5Summation MD5;
58 SHA1Summation SHA1;
cde41ae8 59 SHA256Summation SHA256;
d9b9e9e2 60 SHA512Summation SHA512;
63b1700f 61
650faab0 62 inline bool Add(const unsigned char *Data,unsigned long long Size)
63b1700f 63 {
d9b9e9e2 64 return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size) && SHA512.Add(Data,Size);
63b1700f
AL
65 };
66 inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));};
650faab0 67 inline bool AddFD(int const Fd,unsigned long long Size = 0)
1dab797c 68 { return AddFD(Fd, Size, true, true, true, true); };
650faab0 69 bool AddFD(int const Fd, unsigned long long Size, bool const addMD5,
1dab797c 70 bool const addSHA1, bool const addSHA256, bool const addSHA512);
63b1700f
AL
71 inline bool Add(const unsigned char *Beg,const unsigned char *End)
72 {return Add(Beg,End-Beg);};
73};
74
75#endif