]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/contrib/sha2.h
calculate only expected hashes in methods
[apt.git] / apt-pkg / contrib / sha2.h
index bd54725278b10205b187cace2e296c9a31dc7d92..a25ad4d322065bd928a578fbdbcac2a203c1197a 100644 (file)
 #ifndef APTPKG_SHA2_H
 #define APTPKG_SHA2_H
 
-#include <string>
 #include <cstring>
-#include <algorithm>
-#include <stdint.h>
 
 #include "sha2_internal.h"
 #include "hashsum_template.h"
 
-using std::string;
-using std::min;
+#ifndef APT_10_CLEANER_HEADERS
+#include <string>
+#include <algorithm>
+#include <stdint.h>
+#endif
 
-class SHA512Summation;
-class SHA256Summation;
 
 typedef HashSumValue<512> SHA512SumValue;
 typedef HashSumValue<256> SHA256SumValue;
 
-class SHA2SummationBase
+class SHA2SummationBase : public SummationImplementation
 {
  protected:
    bool Done;
  public:
-   virtual bool Add(const unsigned char *inbuf,unsigned long inlen) = 0;
-   virtual bool AddFD(int Fd,unsigned long Size);
+   bool Add(const unsigned char *inbuf, unsigned long long len) = 0;
 
-   inline bool Add(const char *Data) 
-   {
-      return Add((unsigned char *)Data,strlen(Data));
-   };
-   inline bool Add(const unsigned char *Beg,const unsigned char *End) 
-   {
-      return Add(Beg,End-Beg);
-   };
    void Result();
 };
 
@@ -56,13 +45,15 @@ class SHA256Summation : public SHA2SummationBase
    unsigned char Sum[32];
 
    public:
-   virtual bool Add(const unsigned char *inbuf, unsigned long len)
+   bool Add(const unsigned char *inbuf, unsigned long long len)
    {
       if (Done) 
          return false;
       SHA256_Update(&ctx, inbuf, len);
       return true;
    };
+   using SummationImplementation::Add;
+
    SHA256SumValue Result()
    {
       if (!Done) {
@@ -73,10 +64,11 @@ class SHA256Summation : public SHA2SummationBase
       res.Set(Sum);
       return res;
    };
-   SHA256Summation() 
+   SHA256Summation()
    {
       SHA256_Init(&ctx);
       Done = false;
+      memset(&Sum, 0, sizeof(Sum));
    };
 };
 
@@ -86,13 +78,15 @@ class SHA512Summation : public SHA2SummationBase
    unsigned char Sum[64];
 
    public:
-   virtual bool Add(const unsigned char *inbuf, unsigned long len)
+   bool Add(const unsigned char *inbuf, unsigned long long len)
    {
       if (Done) 
          return false;
       SHA512_Update(&ctx, inbuf, len);
       return true;
    };
+   using SummationImplementation::Add;
+
    SHA512SumValue Result()
    {
       if (!Done) {
@@ -107,6 +101,7 @@ class SHA512Summation : public SHA2SummationBase
    {
       SHA512_Init(&ctx);
       Done = false;
+      memset(&Sum, 0, sizeof(Sum));
    };
 };