library: libCore #include "TMD5.h"

# TMD5

class description - source file - inheritance tree (.pdf)

## class TMD5

| Inheritance Chart:

`TMD5`

        private:

          void Decode(UInt_t* out, const UChar_t* in, UInt_t len)
          void Encode(UChar_t* out, const UInt_t* in, UInt_t len)
          void Transform(UInt_t* buf, const UChar_t* in)

        public:

                          TMD5()
                          TMD5(const UChar_t* digest)
                          TMD5(const TMD5& md5)
                  virtual ~TMD5()
              const char* AsString() const
           static TClass* Class()
             static TMD5* FileChecksum(const char* file)
             static Int_t FileChecksum(const char* file, UChar_t* digest)
                     void Final()
                     void Final(UChar_t* digest)
          virtual TClass* IsA() const
                    TMD5& operator=(const TMD5& rhs)
                     void Print() const
             static TMD5* ReadChecksum(const char* file)
             virtual void ShowMembers(TMemberInspector& insp, char* parent)
             virtual void Streamer(TBuffer& b)
                     void StreamerNVirtual(TBuffer& b)
                     void Update(const UChar_t* buf, UInt_t len)
             static Int_t WriteChecksum(const char* file, const TMD5* md5)

### Data Members

        private:

           UInt_t fBuf[4]      !temp buffer
           UInt_t fBits[2]     !temp buffer
          UChar_t fIn[64]      !temp buffer
          UChar_t fDigest[16]  message digest
           Bool_t fFinalized   true if message digest has been finalized

## Class Description

     TMD5

     This code implements the MD5 message-digest algorithm.
     The algorithm is due to Ron Rivest. This code was
     written by Colin Plumb in 1993, no copyright is claimed.
     This code is in the public domain; do with it what you wish.

     Equivalent code is available from RSA Data Security, Inc.
     This code has been tested against that, and is equivalent,
     except that you don't need to include two pages of legalese
     with every copy.

     To compute the message digest of a chunk of bytes, create an
     TMD5 object, call Update() as needed on buffers full of bytes, and
     then call Final(), which will, optionally, fill a supplied 16-byte
     array with the  digest.

TMD5()

     Create TMD5 object. Set bit count to 0 and buffer to mysterious
     initialization constants.

TMD5(const UChar_t *digest)

     Create finalized TMD5 object containing passed in 16 byte digest.

TMD5(const TMD5 &md5)

     MD5 copy ctor. Special copy ctor avoids copying unnecessary
     temp arrays when finalized.

void Update(const UChar_t *buf, UInt_t len)

     Update TMD5 object to reflect the concatenation of another buffer full
     of bytes.

void Final(UChar_t digest[16])

     MD5 finalization, ends an MD5 message-digest operation, writing the
     the message digest and zeroizing the context.
     Returns digest.

void Final()

     MD5 finalization, ends an MD5 message-digest operation, writing the
     the message digest and zeroizing the context.

void Print() const

     Print digest in ascii hex form.

const char* AsString() const

     Return message digest as string. Returns "" in case Final() has
     not yet been called. Copy result because it points to a statically
     allocated string.

void Encode(UChar_t *out, const UInt_t *in, UInt_t len)

     Encodes input into output. Assumes len is a multiple of 4.

void Decode(UInt_t *out, const UChar_t *in, UInt_t len)

     Decodes input into output. Assumes len is a multiple of 4.

void Transform(UInt_t buf[4], const UChar_t in[64])

     The core of the MD5 algorithm, this alters an existing MD5 hash to
     reflect the addition of 16 longwords of new data. Update() blocks
     the data and converts bytes into longwords for this routine.

TMD5* ReadChecksum(const char *file)

     Returns checksum stored in ASCII in specified file. Use to read files
     created via WriteChecksum(). The returned TMD5 object must be deleted
     by the user. Returns 0 in case the file cannot be opened or in case of
     error. Static utlity function.

Int_t WriteChecksum(const char *file, const TMD5 *md5)

     Writes checksum in ASCII format to specified file. This file can
     directly be read by ReadChecksum(). The md5 must have been finalized.
     Returns -1 in case file cannot be opened or in case of error,
     0 otherwise. Static utility function.

TMD5* FileChecksum(const char *file)

     Returns checksum of specified file. The returned TMD5 object must
     be deleted by the user. Returns 0 in case the file does not exists
     or in case of error. This function preserves the modtime of the file
     so it can be safely used in conjunction with methods that keep track
     of the file's modtime. Static utility function.

Int_t FileChecksum(const char *file, UChar_t digest[16])

     Returns checksum of specified file in digest argument. Returns -1 in
     case of error, 0 otherwise. This method preserves the modtime of the
     file so it can be safely used in conjunction with methods that keep
     track of the file's modtime. Static utility function.

### Inline Functions

                   void ~TMD5()
                  TMD5& operator=(const TMD5& rhs)
                TClass* Class()
                TClass* IsA() const
                   void ShowMembers(TMemberInspector& insp, char* parent)
                   void Streamer(TBuffer& b)
                   void StreamerNVirtual(TBuffer& b)

Author: Fons Rademakers 29/9/2001
Last update: root/base:$Name: $:$Id: TMD5.cxx,v 1.14 2004/08/18 15:27:59 rdm Exp $
Copyright (C) 1995-2001, Rene Brun and Fons Rademakers. *