Logo ROOT   6.16/01
Reference Guide
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
TMD5 Class Reference

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.

Definition at line 44 of file TMD5.h.

Public Member Functions

 TMD5 ()
 Create TMD5 object. More...
 
 TMD5 (const TMD5 &md5)
 MD5 copy ctor. More...
 
 TMD5 (const UChar_t *digest)
 Create finalized TMD5 object containing passed in 16 byte digest. More...
 
virtual ~TMD5 ()
 
const char * AsString () const
 Return message digest as string. More...
 
void Final ()
 MD5 finalization, ends an MD5 message-digest operation, writing the the message digest and zeroizing the context. More...
 
void Final (UChar_t digest[16])
 MD5 finalization, ends an MD5 message-digest operation, writing the the message digest and zeroizing the context. More...
 
TMD5operator= (const TMD5 &rhs)
 MD5 assignment operator. More...
 
void Print () const
 Print digest in ascii hex form. More...
 
Int_t SetDigest (const char *md5ascii)
 Set the digest from the ASCII representation 'md5ascii'. More...
 
void Update (const UChar_t *buf, UInt_t len)
 Update TMD5 object to reflect the concatenation of another buffer full of bytes. More...
 

Static Public Member Functions

static TMD5FileChecksum (const char *file)
 Returns checksum of specified file. More...
 
static Int_t FileChecksum (const char *file, UChar_t digest[16])
 Returns checksum of specified file in digest argument. More...
 
static TMD5ReadChecksum (const char *file)
 Returns checksum stored in ASCII in specified file. More...
 
static Int_t WriteChecksum (const char *file, const TMD5 *md5)
 Writes checksum in ASCII format to specified file. More...
 

Private Member Functions

void Decode (UInt_t *out, const UChar_t *in, UInt_t len)
 Decodes input into output. Assumes len is a multiple of 4. More...
 
void Encode (UChar_t *out, const UInt_t *in, UInt_t len)
 Encodes input into output. Assumes len is a multiple of 4. More...
 
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. More...
 

Private Attributes

UInt_t fBits [2]
 temp buffer More...
 
UInt_t fBuf [4]
 
UChar_t fDigest [16]
 string representation of digest More...
 
Bool_t fFinalized
 
UChar_t fIn [64]
 temp buffer More...
 
Char_t fString [33]
 temp buffer More...
 

Friends

Bool_t operator== (const TMD5 &m1, const TMD5 &m2)
 Compare two message digests for equality. More...
 

#include <TMD5.h>

Constructor & Destructor Documentation

◆ TMD5() [1/3]

TMD5::TMD5 ( )

Create TMD5 object.

Set bit count to 0 and buffer to mysterious initialization constants.

Definition at line 48 of file TMD5.cxx.

◆ TMD5() [2/3]

TMD5::TMD5 ( const UChar_t digest)

Create finalized TMD5 object containing passed in 16 byte digest.

Definition at line 60 of file TMD5.cxx.

◆ TMD5() [3/3]

TMD5::TMD5 ( const TMD5 md5)

MD5 copy ctor.

Special copy ctor avoids copying unnecessary temp arrays when finalized.

Definition at line 75 of file TMD5.cxx.

◆ ~TMD5()

virtual TMD5::~TMD5 ( )
inlinevirtual

Definition at line 64 of file TMD5.h.

Member Function Documentation

◆ AsString()

const char * TMD5::AsString ( ) const

Return message digest as string.

Returns "" in case Final() has not yet been called.

Definition at line 220 of file TMD5.cxx.

◆ Decode()

void TMD5::Decode ( UInt_t out,
const UChar_t in,
UInt_t  len 
)
private

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

Definition at line 255 of file TMD5.cxx.

◆ Encode()

void TMD5::Encode ( UChar_t out,
const UInt_t in,
UInt_t  len 
)
private

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

Definition at line 240 of file TMD5.cxx.

◆ FileChecksum() [1/2]

TMD5 * TMD5::FileChecksum ( const char *  file)
static

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.

Definition at line 474 of file TMD5.cxx.

◆ FileChecksum() [2/2]

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

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.

Definition at line 538 of file TMD5.cxx.

◆ Final() [1/2]

void TMD5::Final ( )

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

Definition at line 167 of file TMD5.cxx.

◆ Final() [2/2]

void TMD5::Final ( UChar_t  digest[16])

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

Returns digest.

Definition at line 157 of file TMD5.cxx.

◆ operator=()

TMD5 & TMD5::operator= ( const TMD5 rhs)

MD5 assignment operator.

Special assignment operator avoids copying unnecessary temp arrays when finalized.

Definition at line 90 of file TMD5.cxx.

◆ Print()

void TMD5::Print ( ) const

Print digest in ascii hex form.

Definition at line 206 of file TMD5.cxx.

◆ ReadChecksum()

TMD5 * TMD5::ReadChecksum ( const char *  file)
static

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 utility function.

Definition at line 422 of file TMD5.cxx.

◆ SetDigest()

Int_t TMD5::SetDigest ( const char *  md5ascii)

Set the digest from the ASCII representation 'md5ascii'.

The caller is responsible to make sure that the 32 chars md5ascii are valid. Returns -1 if md5ascii is malformed, returns 0 otherwise.

Definition at line 395 of file TMD5.cxx.

◆ Transform()

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

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.

Definition at line 281 of file TMD5.cxx.

◆ Update()

void TMD5::Update ( const UChar_t buf,
UInt_t  len 
)

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

Definition at line 108 of file TMD5.cxx.

◆ WriteChecksum()

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

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.

Definition at line 452 of file TMD5.cxx.

Friends And Related Function Documentation

◆ operator==

Bool_t operator== ( const TMD5 m1,
const TMD5 m2 
)
friend

Compare two message digests for equality.

Definition at line 372 of file TMD5.cxx.

Member Data Documentation

◆ fBits

UInt_t TMD5::fBits[2]
private

temp buffer

Definition at line 50 of file TMD5.h.

◆ fBuf

UInt_t TMD5::fBuf[4]
private

Definition at line 49 of file TMD5.h.

◆ fDigest

UChar_t TMD5::fDigest[16]
private

string representation of digest

Definition at line 53 of file TMD5.h.

◆ fFinalized

Bool_t TMD5::fFinalized
private

Definition at line 54 of file TMD5.h.

◆ fIn

UChar_t TMD5::fIn[64]
private

temp buffer

Definition at line 51 of file TMD5.h.

◆ fString

Char_t TMD5::fString[33]
mutableprivate

temp buffer

Definition at line 52 of file TMD5.h.


The documentation for this class was generated from the following files: