diff options
author | Michael Vogt <michael.vogt@ubuntu.com> | 2006-09-06 18:04:17 +0200 |
---|---|---|
committer | Michael Vogt <michael.vogt@ubuntu.com> | 2006-09-06 18:04:17 +0200 |
commit | 9a4dfc82c563d6335bb37a928a8925efe329fd8d (patch) | |
tree | 18e11ad79f75a2df8d9b11520851966dad8aab83 /apt-pkg/contrib/sha256.h | |
parent | 54668e4e591651be2d83b95ff4a9d96668db1e36 (diff) | |
parent | 02b7ddb1404fa3969bceb03a5f35107884027ba6 (diff) |
* merged with the apt--mvo branch
Diffstat (limited to 'apt-pkg/contrib/sha256.h')
-rw-r--r-- | apt-pkg/contrib/sha256.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/apt-pkg/contrib/sha256.h b/apt-pkg/contrib/sha256.h new file mode 100644 index 000000000..9e88f5ece --- /dev/null +++ b/apt-pkg/contrib/sha256.h @@ -0,0 +1,75 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: sha1.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + SHA256SumValue - Storage for a SHA-256 hash. + SHA256Summation - SHA-256 Secure Hash Algorithm. + + This is a C++ interface to a set of SHA256Sum functions, that mirrors + the equivalent MD5 & SHA1 classes. + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_SHA256_H +#define APTPKG_SHA256_H + +#ifdef __GNUG__ +#pragma interface "apt-pkg/sha256.h" +#endif + +#include <string> +#include <algorithm> +#include <stdint.h> + +using std::string; +using std::min; + +class SHA256Summation; + +class SHA256SumValue +{ + friend class SHA256Summation; + unsigned char Sum[32]; + + public: + + // Accessors + bool operator ==(const SHA256SumValue &rhs) const; + string Value() const; + inline void Value(unsigned char S[32]) + {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; + inline operator string() const {return Value();}; + bool Set(string Str); + inline void Set(unsigned char S[32]) + {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; + + SHA256SumValue(string Str); + SHA256SumValue(); +}; + +struct sha256_ctx { + uint32_t count[2]; + uint32_t state[8]; + uint8_t buf[128]; +}; + +class SHA256Summation +{ + struct sha256_ctx Sum; + + bool Done; + + public: + + bool Add(const unsigned char *inbuf,unsigned long inlen); + inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; + bool AddFD(int Fd,unsigned long Size); + inline bool Add(const unsigned char *Beg,const unsigned char *End) + {return Add(Beg,End-Beg);}; + SHA256SumValue Result(); + + SHA256Summation(); +}; + +#endif |