# gnutls_certificate_set_x509_key_file2

## NAME



           gnutls_certificate_set_x509_key_file2 - API function
    


## SYNOPSIS



           **#include <gnutls/gnutls.h>**
    
           **int**
           **gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t**
           _res_**, const char ***_certfile_**, const char ***_keyfile_**,**
           **gnutls_x509_crt_fmt_t** _type_**, const char ***_pass_**, unsigned int**
           _flags_**);**
    


## ARGUMENTS



           gnutls_certificate_credentials_t res
                       is a **gnutls_certificate_credentials_t** type.
    
           const char * certfile
                       is a file that containing the certificate list (path)
                       for the specified private key, in PKCS7 format, or a
                       list of certificates
    
           const char * keyfile
                       is a file that contains the private key
    
           gnutls_x509_crt_fmt_t type
                       is PEM or DER
    
           const char * pass
                       is the password of the key
    
           unsigned int flags
                       an ORed sequence of gnutls_pkcs_encrypt_flags_t
    


## DESCRIPTION



           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
            _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  _keyfile_ and  _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
           **gnutls_url_is_supported()**.  Before GnuTLS 3.4.0 when a URL was
           specified, the  _pass_ part was ignored and a PIN callback had to be
           registered, this is no longer the case in current releases.
    
           In case the  _certfile_ is provided as a PKCS **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  _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
           **GNUTLS_CERTIFICATE_API_V2** is set using
           **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.
    


## RETURNS



           On success this functions returns zero, and otherwise a negative
           value on error (see above for modifying that behavior).
    


* * *