MD5 Functions
3
EXO Library

# MD5 Functions

MD5 hash implementation

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    #include <exo/exo.h>

                        ExoMd5Digest;
    ExoMd5Digest*       exo_str_get_md5_digest              (const gchar *contents);
    gchar*              exo_str_get_md5_str                 (const gchar *contents);
    ExoMd5Digest*       exo_md5_str_to_digest               (const gchar *str_digest);
    gchar*              exo_md5_digest_to_str               (const ExoMd5Digest *digest);
    ExoMd5Digest*       exo_md5_digest_dup                  (const ExoMd5Digest *digest);
    void                exo_md5_digest_free                 (ExoMd5Digest *digest);
    guint               exo_md5_digest_hash                 (gconstpointer digest);
    gboolean            exo_md5_digest_equal                (gconstpointer digest1,
                                                             gconstpointer digest2);

## Description

This is an implementation 16-byte MD5 hash algorithm with some related utility functions.

## Details

### ExoMd5Digest

    typedef struct {
      guchar digest[16];
    } ExoMd5Digest;

Structure to represent a MD5 digest.

guchar digest[16];

  the MD5 digest.

### exo_str_get_md5_digest ()

    ExoMd5Digest*       exo_str_get_md5_digest              (const gchar *contents);

Creates a binary MD5 digest of the string `contents`.

`contents` :

  The string to create a digest of.

Returns :

  A new binary MD5 digest. It should be freed with `exo_md5_digest_free()` when no longer needed.

### exo_str_get_md5_str ()

    gchar*              exo_str_get_md5_str                 (const gchar *contents);

Creates a character array MD5 digestof the string `contents`.

`contents` :

  The string to create a digest of.

Returns :

  A newly-allocated character array which should be free with `g_free()` when no longer needed.

### exo_md5_str_to_digest ()

    ExoMd5Digest*       exo_md5_str_to_digest               (const gchar *str_digest);

Converts thq `str_digest` character array digest into a binary digest.

`str_digest` :

  The character array digest to convert.

Returns :

  A newly allocated binary digest. It should be freed with `exo_md5_digest_free()` when no longer needed.

### exo_md5_digest_to_str ()

    gchar*              exo_md5_digest_to_str               (const ExoMd5Digest *digest);

Converts the binary `digest` to an ASCII character array digest. The result can be used as an ordinary C string.

`digest` :

  The binary MD5 digest to convert.

Returns :

  A newly-allocated character array which should be freed with `g_free()` when no longer needed.

### exo_md5_digest_dup ()

    ExoMd5Digest*       exo_md5_digest_dup                  (const ExoMd5Digest *digest);

Duplicates the contents of the `digest` binary MD5 digest.

`digest` :

  The MD5 digest to copy.

Returns :

  A new binary MD5 digest. It should be freed with `exo_md5_digest_free()` when no longer needed.

### exo_md5_digest_free ()

    void                exo_md5_digest_free                 (ExoMd5Digest *digest);

Frees the memory allocated for the MD5 binary `digest`.

`digest` :

  The MD5 digest to free.

### exo_md5_digest_hash ()

    guint               exo_md5_digest_hash                 (gconstpointer digest);

Gets the numeric hash of `digest`, for use in GHashTable and GCache.

`digest` :

  The ExoMd5Digest to hash.

Returns :

  An unsigned integer hash of the digest;

### exo_md5_digest_equal ()

    gboolean            exo_md5_digest_equal                (gconstpointer digest1,
                                                             gconstpointer digest2);

Tests the equality of `digest1` and `digest2`, useful for GHashTable and GCashe.

`digest1` :

  the first ExoMd5Digest to compare.

`digest2` :

  the second ExoMd5Digest to compare.

Returns :

  `TRUE` if both digests are equal, `FALSE` otherwise.