@deftypefun {int} {gnutls_certificate_set_x509_key_file2} (gnutls_certificate_credentials_t @var{res}, const char * @var{certfile}, const char * @var{keyfile}, gnutls_x509_crt_fmt_t @var{type}, const char * @var{pass}, unsigned int @var{flags}) @var{res}: is a @code{gnutls_certificate_credentials_t} type. @var{certfile}: is a file that containing the certificate list (path) for the specified private key, in PKCS7 format, or a list of certificates @var{keyfile}: is a file that contains the private key @var{type}: is PEM or DER @var{pass}: is the password of the key @var{flags}: an ORed sequence of gnutls_pkcs_encrypt_flags_t This function sets a certificate/private key pair in the gnutls_certificate_credentials_t type. This function may be called more than once, in case multiple keys/certificates exist for the server. For clients that need to send more than its own end entity certificate, e.g., also an intermediate CA cert, then the @code{certfile} must contain the ordered certificate chain. Note that the names in the certificate provided will be considered when selecting the appropriate certificate to use (in case of multiple certificate/key pairs). This function can also accept URLs at @code{keyfile} and @code{certfile} . In that case it will use the private key and certificate indicated by the URLs. Note that the supported URLs are the ones indicated by @code{gnutls_url_is_supported()} . Before GnuTLS 3.4.0 when a URL was specified, the @code{pass} part was ignored and a PIN callback had to be registered, this is no longer the case in current releases. In case the @code{certfile} is provided as a PKCS @code{11} URL, then the certificate, and its present issuers in the token are imported (i.e., forming the required trust chain). If that function fails to load the @code{res} structure is at an undefined state, it must not be reused to load other keys or certificates. Note that, this function by default returns zero on success and a negative value on error. Since 3.5.6, when the flag @code{GNUTLS_CERTIFICATE_API_V2} is set using @code{gnutls_certificate_set_flags()} it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair. @strong{Returns:} On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior). @end deftypefun