|  |  |  | GNet Network Library Reference Manual |  | 
|---|---|---|---|---|
#include <gnet.h>
                    GMD5;
#define             GNET_MD5_HASH_LENGTH
GMD5*               gnet_md5_new                        (const gchar *buffer,
                                                         guint length);
GMD5*               gnet_md5_new_string                 (const gchar *str);
GMD5*               gnet_md5_clone                      (const GMD5 *md5);
void                gnet_md5_delete                     (GMD5 *md5);
GMD5*               gnet_md5_new_incremental            (void);
void                gnet_md5_update                     (GMD5 *md5,
                                                         const gchar *buffer,
                                                         guint length);
void                gnet_md5_final                      (GMD5 *md5);
gboolean            gnet_md5_equal                      (gconstpointer p1,
                                                         gconstpointer p2);
guint               gnet_md5_hash                       (gconstpointer p);
gchar*              gnet_md5_get_digest                 (const GMD5 *md5);
gchar*              gnet_md5_get_string                 (const GMD5 *md5);
void                gnet_md5_copy_string                (const GMD5 *md5,
                                                         gchar *buffer);
The MD5 module provide support for computing and manipulating MD5 hashes. MD5 is a hash function with a very low probability of collision. MD5 is considered weaker than SHA.
An MD5 can be calculated at one time or incrementally.  To create a
MD5 at one time, call gnet_md5_new() with the data.  To create a MD5
incrementally, call gnet_md5_new_incremental() to create the MD5
object, then gnet_md5_update() one or more times with data to hash,
and finally call gnet_md5_final().
To get the digest, or hash value, call gnet_md5_get_digest().  This
returns the raw digest as an array of GNET_MD5_HASH_LENGTH bytes.  To
get the digest as a human-readable hexidecimal string, call
gnet_md5_get_string() or gnet_md5_copy_string().
gchar buffer[] = "Hello world!";
gchar buffer2[] = "Second line";
GMD5*  md5;
gchar* md5_str;
/* Compute an MD5 at one time */
md5 = gnet_md5_new (buffer, strlen(buffer));
md5_str = gnet_md5_get_string (md5);
g_print ("The MD5 of %s is %s\n", buffer, md5_str);
/* Use MD5... */
g_free (md5_str);
gnet_md5_delete (md5);
/* Compute an MD5 incrementally */
md5 = gnet_md5_new_incremental ();
gnet_md5_update (md5, buffer, strlen(buffer));
gnet_md5_update (md5, buffer2, strlen(buffer2));
gnet_md5_final (md5);
/* Use MD5... */
gnet_md5_delete (md5);
GMD5* gnet_md5_new (const gchar *buffer, guint length);
Creates a GMD5 from buffer.
| buffer: | buffer to hash | 
| length: | length of buffer | 
| Returns : | a new GMD5. | 
GMD5* gnet_md5_new_string (const gchar *str);
Creates a GMD5 from str.  str is a hexidecimal string
 representing the digest.
| str: | hexidecimal string | 
| Returns : | a new GMD5. | 
GMD5* gnet_md5_clone (const GMD5 *md5);
Copies a GMD5.
| md5: | a GMD5 | 
| Returns : | a copy of md5. | 
GMD5* gnet_md5_new_incremental (void);
Creates a GMD5 incrementally.  After creating a GMD5, call
 gnet_md5_update() one or more times to hash data.  Finally, call
 gnet_md5_final() to compute the final hash value.
| Returns : | a new GMD5. | 
void gnet_md5_update (GMD5 *md5, const gchar *buffer, guint length);
Updates the hash with buffer.  This may be called several times
 on a hash created by gnet_md5_new_incremental() before being
 finalized by calling gnet_md5_final().
| md5: | a GMD5 | 
| buffer: | buffer to add | 
| length: | length of buffer | 
void gnet_md5_final (GMD5 *md5);
Calcuates the final hash value of a GMD5.  This should only be
 called on an GMD5 created by gnet_md5_new_incremental().
| md5: | a GMD5 | 
gboolean            gnet_md5_equal                      (gconstpointer p1,
                                                         gconstpointer p2);
Compares two GMD5's for equality.
guint gnet_md5_hash (gconstpointer p);
Creates a hash code for a GMD5 for use with GHashTable. This hash value is not the same as the MD5 digest.
| p: | a GMD5 | 
| Returns : | the hash code for p. | 
gchar* gnet_md5_get_digest (const GMD5 *md5);
Gets the raw MD5 digest.
| md5: | a GMD5 | 
| Returns : | a callee-owned buffer containing the MD5 hash digest.
 The buffer is GNET_MD5_HASH_LENGTHbytes long. | 
gchar* gnet_md5_get_string (const GMD5 *md5);
Gets the digest represented a human-readable string.
| md5: | a GMD5 | 
| Returns : | a hexadecimal string representing the digest.  The string
 is 2 * GNET_MD5_HASH_LENGTHbytes long and NULL terminated.  The
 string is caller owned. | 
void gnet_md5_copy_string (const GMD5 *md5, gchar *buffer);
Copies the digest, represented as a string, into buffer.  The
string is not NULL terminated.
| md5: | a GMD5 | 
| buffer: | buffer at least 2 * GNET_MD5_HASH_LENGTHbytes long |