specified. Output strings are also in UTF-8 format unless otherwise specified. When functions take as input passwords, they will normalize them using [*note RFC7613::] rules (since GnuTLS 3.5.7). When data of a fixed size are provided to GnuTLS functions then the helper structure ‘gnutls_datum_t’ is often used. Its definition is shown below. typedef struct { unsigned char *data; unsigned int size; } gnutls_datum_t; In functions where this structure is a returned type, if the function succeeds, it is expected from the caller to use ‘gnutls_free()’ to deinitialize the data element after use, unless otherwise specified. If the function fails, the contents of the ‘gnutls_datum_t’ should be considered undefined and must not be deinitialized. Other functions that require data for scattered read use a structure similar to ‘struct iovec’ typically used by ‘readv’. It is shown below. typedef struct { void *iov_base; /* Starting address */ size_t iov_len; /* Number of bytes to transfer */ } giovec_t;