@deftypefun {int} {gnutls_credentials_set} (gnutls_session_t @var{session}, gnutls_credentials_type_t @var{type}, void * @var{cred}) @var{session}: is a @code{gnutls_session_t} type. @var{type}: is the type of the credentials @var{cred}: the credentials to set Sets the needed credentials for the specified type. E.g. username, password - or public and private keys etc. The @code{cred} parameter is a structure that depends on the specified type and on the current session (client or server). In order to minimize memory usage, and share credentials between several threads gnutls keeps a pointer to cred, and not the whole cred structure. Thus you will have to keep the structure allocated until you call @code{gnutls_deinit()} . For @code{GNUTLS_CRD_ANON} , @code{cred} should be @code{gnutls_anon_client_credentials_t} in case of a client. In case of a server it should be @code{gnutls_anon_server_credentials_t} . For @code{GNUTLS_CRD_SRP} , @code{cred} should be @code{gnutls_srp_client_credentials_t} in case of a client, and @code{gnutls_srp_server_credentials_t} , in case of a server. For @code{GNUTLS_CRD_CERTIFICATE} , @code{cred} should be @code{gnutls_certificate_credentials_t} . @strong{Returns:} On success, @code{GNUTLS_E_SUCCESS} (0) is returned, otherwise a negative error code is returned. @end deftypefun