Md5Sum.h
Go to the documentation of this file.
1 #ifndef _utl_Md5Sum_h_
2 #define _utl_Md5Sum_h_
3 
4 #include <string>
5 #include <sstream>
6 #include <utility>
7 #include <utl/AugerException.h>
8 
9 
10 namespace utl {
11 
27  class Md5Sum {
28  public:
29  typedef const unsigned char* Iterator;
30  typedef std::pair<Iterator, Iterator> IteratorPair;
31  static const unsigned int kBufferSize = 64;
32  static const unsigned int kDigestSize = 16;
33 
35  public:
37  WrongStageException(const std::string& message = std::string())
38  : AugerException(message) { }
39 
41  virtual std::string GetExceptionName() const
42  { return "Invalid processing stage exception"; }
43  };
44 
45  Md5Sum() { Clear(); }
46 
47  Md5Sum(const std::string& data) { Clear(); AddData(data); }
48 
49  void AddDataRange(const unsigned char* const begin, const unsigned char* const end);
50 
51  void AddDataRange(const char* const begin, const char* const end)
52  { AddDataRange((const unsigned char*)begin, (const unsigned char*)end); }
53 
55  void
56  AddData(const std::string& s)
57  {
58  const char* const p = s.c_str();
59  AddDataRange(p, p + s.length());
60  }
61 
62  void
63  AddData(const char* const s)
64  {
65  const char* p;
66  for (p = s; *p; ++p) { }
67  AddDataRange(s, p);
68  }
69 
71 
72  std::string GetHexDigest();
73 
74  bool IsFinalized() const
75  { return fFinalized; }
76 
78  void Clear();
79 
80  private:
81  void ProcessBuffer();
82 
83  unsigned int BufferIndex() const
84  { return (fCountLow >> 3) % kBufferSize; }
85 
86  bool fFinalized;
87 
89  unsigned int fStateA;
91  unsigned int fStateB;
93  unsigned int fStateC;
95  unsigned int fStateD;
97  unsigned int fCountLow;
98  unsigned int fCountHigh;
100  unsigned char fBuffer[kBufferSize];
102  unsigned char fDigest[kDigestSize];
103  };
104 }
105 
106 
107 #endif
void Clear()
Set up internal state.
Definition: Md5Sum.cc:164
Class to compute MD5 checksum Based on the RSA C code, wrapped in an OO fashion.
Definition: Md5Sum.h:27
void AddDataRange(const unsigned char *const begin, const unsigned char *const end)
Definition: Md5Sum.cc:180
Base class for all exceptions used in the auger offline code.
unsigned int BufferIndex() const
Definition: Md5Sum.h:83
unsigned int fCountLow
Number of bits, mod 2^64 (lsb first)
Definition: Md5Sum.h:97
static const unsigned int kDigestSize
Definition: Md5Sum.h:32
Md5Sum(const std::string &data)
Definition: Md5Sum.h:47
unsigned int fStateB
internal state (B), 4 of 16 bytes, 64 bit total
Definition: Md5Sum.h:91
IteratorPair GetRawDigest()
Definition: Md5Sum.cc:309
void ProcessBuffer()
Definition: Md5Sum.cc:211
constexpr double s
Definition: AugerUnits.h:163
void AddData(const char *const s)
Definition: Md5Sum.h:63
std::pair< Iterator, Iterator > IteratorPair
Definition: Md5Sum.h:30
unsigned int fStateA
internal state (A), 4 of 16 bytes, 64 bit total
Definition: Md5Sum.h:89
Md5Sum()
Definition: Md5Sum.h:45
void AddDataRange(const char *const begin, const char *const end)
Definition: Md5Sum.h:51
unsigned char fBuffer[kBufferSize]
input buffer
Definition: Md5Sum.h:100
uint16_t * data
Definition: dump1090.h:228
std::string GetHexDigest()
Definition: Md5Sum.cc:340
void AddData(const std::string &s)
Process the data in a string.
Definition: Md5Sum.h:56
unsigned int fCountHigh
Definition: Md5Sum.h:98
const unsigned char * Iterator
Definition: Md5Sum.h:29
bool fFinalized
Definition: Md5Sum.h:86
unsigned int fStateC
internal state (C), 4 of 16 bytes, 64 bit total
Definition: Md5Sum.h:93
unsigned char fDigest[kDigestSize]
buffer for final digest
Definition: Md5Sum.h:102
unsigned int fStateD
internal state (D), 4 of 16 bytes, 64 bit total
Definition: Md5Sum.h:95
static const unsigned int kBufferSize
Definition: Md5Sum.h:31
bool IsFinalized() const
Definition: Md5Sum.h:74

, generated on Tue Sep 26 2023.