Next: Debugging and auditing, Previous: Error handling, Up: Introduction to the library [Contents][Index]
All strings that are to provided as input to GnuTLS functions should be in UTF-8 unless otherwise specified. Output strings are also in UTF-8 format unless otherwise specified. When functions take as input passwords, they will normalize them using [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;