Description
GLib provides a generic API for computing checksums (or "digests")
for a sequence of arbitrary bytes, using various hashing algorithms
like MD5, SHA-1 and SHA-256. Checksums are commonly used in various
environments and specifications.
GLib supports incremental checksums using the GChecksum data
structure, by calling g_checksum_update() as long as there's data
available and then using g_checksum_get_string() or
g_checksum_get_digest() to compute the checksum and return it either
as a string in hexadecimal form, or as a raw sequence of bytes. To
compute the checksum for binary blobs and NUL-terminated strings in
one go, use the convenience functions g_compute_checksum_for_data()
and g_compute_checksum_for_string(), respectively.
Support for checksums has been added in GLib 2.16
Functions
g_checksum_type_get_length ()
gssize
g_checksum_type_get_length (GChecksumType checksum_type);
Gets the length in bytes of digests of type checksum_type
Returns
the checksum length, or -1 if checksum_type
is
not supported.
Since: 2.16
g_checksum_free ()
void
g_checksum_free (GChecksum *checksum);
Frees the memory allocated for checksum
.
Since: 2.16
g_checksum_reset ()
void
g_checksum_reset (GChecksum *checksum);
Resets the state of the checksum
back to its initial state.
Since: 2.18
g_checksum_get_string ()
const gchar *
g_checksum_get_string (GChecksum *checksum);
Gets the digest as a hexadecimal string.
Once this function has been called the GChecksum can no longer be
updated with g_checksum_update().
The hexadecimal characters will be lower case.
Returns
the hexadecimal representation of the checksum. The
returned string is owned by the checksum and should not be modified
or freed.
Since: 2.16
g_checksum_get_digest ()
void
g_checksum_get_digest (GChecksum *checksum,
guint8 *buffer,
gsize *digest_len);
Gets the digest from checksum
as a raw binary vector and places it
into buffer
. The size of the digest depends on the type of checksum.
Once this function has been called, the GChecksum is closed and can
no longer be updated with g_checksum_update().
[skip]
Since: 2.16
g_compute_checksum_for_data ()
gchar *
g_compute_checksum_for_data (GChecksumType checksum_type,
const guchar *data,
gsize length);
Computes the checksum for a binary data
of length
. This is a
convenience wrapper for g_checksum_new(), g_checksum_get_string()
and g_checksum_free().
The hexadecimal string returned will be in lower case.
Returns
the digest of the binary data as a string in hexadecimal.
The returned string should be freed with g_free() when done using it.
Since: 2.16
g_compute_checksum_for_string ()
gchar *
g_compute_checksum_for_string (GChecksumType checksum_type,
const gchar *str,
gssize length);
Computes the checksum of a string.
The hexadecimal string returned will be in lower case.
Returns
the checksum as a hexadecimal string. The returned string
should be freed with g_free() when done using it.
Since: 2.16
Types and Values
enum GChecksumType
The hashing algorithm to be used by GChecksum when performing the
digest of some data.
Note that the GChecksumType enumeration may be extended at a later
date to include new hashing algorithm types.
Since: 2.16
GChecksum
typedef struct _GChecksum GChecksum;
An opaque structure representing a checksumming operation.
To create a new GChecksum, use g_checksum_new(). To free
a GChecksum, use g_checksum_free().
Since: 2.16