



@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
