@deftypefun {void} {gnutls_psk_set_client_credentials_function2} (gnutls_psk_client_credentials_t @var{cred}, gnutls_psk_client_credentials_function2 * @var{func}) @var{cred}: is a @code{gnutls_psk_server_credentials_t} type. @var{func}: is the callback function This function can be used to set a callback to retrieve the username and password for client PSK authentication. The callback's function form is: int (*callback)(gnutls_session_t, gnutls_datum_t* username, gnutls_datum_t* key); This callback function has the same semantics as that of @code{gnutls_psk_set_client_credentials_function()} , but it allows non-string usernames to be used. The @code{username} and @code{key} ->data must be allocated using @code{gnutls_malloc()} . The @code{username} should be an ASCII string or UTF-8 string. In case of a UTF-8 string it is recommended to be following the PRECIS framework for usernames (rfc8265). The callback function will be called once per handshake. The callback function should return 0 on success. -1 indicates an error. @end deftypefun