



@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  @code{type} and on the current
session (client or server). Only a single  @code{cred} may be set for
each different  @code{type} , subsequent calls with the same  @code{type} will
replace the previously set credentials.

In order to minimize memory usage, and share credentials between
several threads gnutls keeps a pointer to  @code{cred} , and not the whole
cred structure.  Thus you will have to keep the structure allocated
until you call @code{gnutls_deinit()} , or a future call of
@code{gnutls_credentials_set()}  with the same  @code{type} replaces the  @code{cred} structure.

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
