File indexing completed on 2025-01-18 10:12:16
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TMD5
0013 #define ROOT_TMD5
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #include "Rtypes.h"
0037
0038
0039 class TBuffer;
0040 class TMD5;
0041 Bool_t operator==(const TMD5 &m1, const TMD5 &m2);
0042
0043
0044 class TMD5 {
0045
0046 friend Bool_t operator==(const TMD5 &m1, const TMD5 &m2);
0047
0048 private:
0049 UInt_t fBuf[4];
0050 UInt_t fBits[2];
0051 UChar_t fIn[64];
0052 mutable Char_t fString[33];
0053 UChar_t fDigest[16];
0054 Bool_t fFinalized;
0055
0056 void Transform(UInt_t buf[4], const UChar_t in[64]);
0057 void Encode(UChar_t *out, const UInt_t *in, UInt_t len);
0058 void Decode(UInt_t *out, const UChar_t *in, UInt_t len);
0059
0060 public:
0061 TMD5();
0062 TMD5(const UChar_t *digest);
0063 TMD5(const TMD5 &md5);
0064 virtual ~TMD5() { }
0065
0066 TMD5 &operator=(const TMD5 &rhs);
0067
0068 void Update(const UChar_t *buf, UInt_t len);
0069 void Final();
0070 void Final(UChar_t digest[16]);
0071 void Print() const;
0072 const char *AsString() const;
0073
0074 Int_t SetDigest(const char *md5ascii);
0075
0076 static TMD5 *ReadChecksum(const char *file);
0077 static Int_t WriteChecksum(const char *file, const TMD5 *md5);
0078
0079 static TMD5 *FileChecksum(const char *file);
0080 static Int_t FileChecksum(const char *file, UChar_t digest[16]);
0081
0082 ClassDef(TMD5,1)
0083 };
0084
0085 inline TBuffer &operator>>(TBuffer &buf, TMD5 &md5)
0086 { md5.Streamer(buf); return buf; }
0087
0088
0089 TBuffer &operator<<(TBuffer &buf, const TMD5 &md5);
0090
0091 inline Bool_t operator!=(const TMD5 &m1, const TMD5 &m2)
0092 { return !(m1 == m2); }
0093
0094
0095 #endif