### Struct

# GLib Hmac

since: 2.30

#### Description

    struct GHmac {
      /* No available fields */
    }

HMACs should be used when producing a cookie or hash based on data and a key. Simple mechanisms for using SHA1 and other algorithms to digest a key and data together are vulnerable to various security issues. HMAC uses algorithms like SHA1 in a secure way to produce a digest of a key and data.

Both the key and data are arbitrary byte arrays of bytes or characters.

Support for HMAC Digests has been added in GLib 2.30, and support for SHA-512 in GLib 2.42. Support for SHA-384 was added in GLib 2.52.

To create a new `GHmac`, use `g_hmac_new()`. To free a `GHmac`, use `g_hmac_unref()`.

Available since: 2.30

#### Constructors

###### g_hmac_new

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.

since: 2.30

#### Instance methods

###### g_hmac_copy

Copies a `GHmac`. If `hmac` has been closed, by calling `g_hmac_get_string()` or g_hmac_get_digest(), the copied HMAC will be closed as well.

since: 2.30

###### g_hmac_get_digest

Gets the digest from `checksum` as a raw binary array and places it into `buffer`. The size of the digest depends on the type of checksum.

since: 2.30

###### g_hmac_get_string

Gets the HMAC as a hexadecimal string.

since: 2.30

###### g_hmac_ref

Atomically increments the reference count of `hmac` by one.

since: 2.30

###### g_hmac_unref

Atomically decrements the reference count of `hmac` by one.

since: 2.30

###### g_hmac_update

Feeds `data` into an existing `GHmac`.

since: 2.30