



@deftypefun {void} {gnutls_psk_set_client_credentials_function3} (gnutls_psk_client_credentials_t @var{cred}, gnutls_psk_client_credentials_function3 * @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, gnutls_datum_t* context, gnutls_psk_key_flags *flags);

This callback function has the same semantics as that of
@code{gnutls_psk_set_client_credentials_function2()} , but it returns flags
associated with the key.  The callback may import external PSK
using the method described in RFC 9258 by using
@code{gnutls_psk_format_imported_identity()} .

The data field of  @code{username} ,  @code{key} , and  @code{context} 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
