plucky (3) gnutls_certificate_set_rawpk_key_mem.3.gz

Provided by: gnutls-doc_3.8.9-2ubuntu2_all bug

NAME

       gnutls_certificate_set_rawpk_key_mem - API function

SYNOPSIS

       #include <gnutls/gnutls.h>

       int  gnutls_certificate_set_rawpk_key_mem(gnutls_certificate_credentials_t  cred,  const gnutls_datum_t *
       spki, const gnutls_datum_t *  pkey,  gnutls_x509_crt_fmt_t  format,  const  char  *  pass,  unsigned  int
       key_usage, const char ** names, unsigned int names_length, unsigned int flags);

ARGUMENTS

       gnutls_certificate_credentials_t cred
                   is a gnutls_certificate_credentials_t type.

       const gnutls_datum_t * spki
                   contains a raw public key in PKIX.SubjectPublicKeyInfo format.

       const gnutls_datum_t * pkey
                   contains a raw private key.

       gnutls_x509_crt_fmt_t format
                   encoding of the keys. DER or PEM.

       const char * pass
                   an optional password to unlock the private key pkey.

       unsigned int key_usage
                   An ORed sequence of GNUTLS_KEY_* flags.

       const char ** names
                   is an array of DNS names belonging to the public-key (NULL if none).

       unsigned int names_length
                   holds the length of the names list.

       unsigned int flags
                   an ORed sequence of gnutls_pkcs_encrypt_flags_t.  These apply to the private key pkey.

DESCRIPTION

       This  function  sets a public/private keypair in the gnutls_certificate_credentials_t type to be used for
       authentication and/or encryption.  spki and  privkey should match  otherwise  set  signatures  cannot  be
       validated.  In  case  of  no match this function returns GNUTLS_E_CERTIFICATE_KEY_MISMATCH. This function
       should be called once for the client because there is currently  no  mechanism  to  determine  which  raw
       public-key  to  select  for  the  peer  when there are multiple present. Multiple raw public keys for the
       server can be distinghuished by setting the  names .

       Note here that  spki is a raw public-key as defined in RFC7250. It means that  there  is  no  surrounding
       certificate  that  holds  the  public  key  and  that there is therefore no direct mechanism to prove the
       authenticity of this key. The keypair can be used during a TLS handshake but its authenticity  should  be
       established via a different mechanism (e.g. TOFU or known fingerprint).

       The  supported  formats  are  basic  unencrypted  key,  PKCS8, PKCS12, and the openssl format and will be
       autodetected.

       If the raw public-key and the private key are given in PEM encoding then  the  strings  that  hold  their
       values must be null terminated.

       Key  usage  (as  defined  by  X.509  extension  (2.5.29.15))  can  be  explicitly set because there is no
       certificate   structure   around   the   key   to   define   this    value.    See    for    more    info
       gnutls_x509_crt_get_key_usage().

       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 in other functions to refer to the added key-pair.

RETURNS

       On   success,   GNUTLS_E_SUCCESS   (0)   is   returned,   in   case   the   key   pair   does  not  match
       GNUTLS_E_CERTIFICATE_KEY_MISMATCH is returned, in other erroneous cases a different negative  error  code
       is returned.

SINCE

       3.6.6

REPORTING BUGS

       Report bugs to <bugs@gnutls.org>.
       Home page: https://www.gnutls.org

       Copyright © 2001-2023 Free Software Foundation, Inc., and others.
       Copying  and distribution of this file, with or without modification, are permitted in any medium without
       royalty provided the copyright notice and this notice are preserved.

SEE ALSO

       The full documentation for gnutls is maintained as  a  Texinfo  manual.   If  the  /usr/share/doc/gnutls/
       directory does not contain the HTML form visit

       https://www.gnutls.org/manual/