Function

GLibHmacnew

since: 2.30

Declaration [src]

GHmac*
g_hmac_new (
  GChecksumType digest_type,
  const guchar* key,
  gsize key_len
)

Description [src]

Creates a new GHmac, using the digest algorithm digest_type. If the digest_type is not known, NULL is returned. A GHmac can be used to compute the HMAC of a key and an arbitrary binary blob, using different hashing algorithms.

A GHmac works by feeding a binary blob through g_hmac_update() until the data is complete; the digest can then be extracted using g_hmac_get_string(), which will return the checksum as a hexadecimal string; or g_hmac_get_digest(), which will return a array of raw bytes. Once either g_hmac_get_string() or g_hmac_get_digest() have been called on a GHmac, the HMAC will be closed and it won’t be possible to call g_hmac_update() on it anymore.

Support for digests of type G_CHECKSUM_SHA512 has been added in GLib 2.42. Support for G_CHECKSUM_SHA384 was added in GLib 2.52.

Note that GHmac creation may fail, in which case this function will return NULL. Since there is no error parameter, it is not possible to indicate why.

In Fedora, CentOS Stream, and Red Hat Enterprise Linux, GLib is configured to use GnuTLS to implement GHmac in order to support FIPS compliance. This introduces additional failure possibilities that are not present in upstream GLib. For example, the creation of a GHmac will fail if digest_type is G_CHECKSUM_MD5 and the system is running in FIPS mode. GHmac creation may also fail if GLib is unable to load GnuTLS.

Available since: 2.30

Parameters

digest_type

Type: GChecksumType

The desired type of digest.

key

Type: An array of guchar

The key for the HMAC.

The length of the array is specified in the key_len argument.
The data is owned by the caller of the function.
key_len

Type: gsize

The length of the keys.

Return value

Type: GHmac

The newly created GHmac, or NULL. Use g_hmac_unref() to free the memory allocated by it.

The caller of the function takes ownership of the data, and is responsible for freeing it.
The return value can be NULL.