Provided by: libfido2-doc_1.15.0-1_all bug

NAME

       fido_cred_new,  fido_cred_free,  fido_cred_pin_minlen,  fido_cred_prot,  fido_cred_fmt,  fido_cred_rp_id,
       fido_cred_rp_name,       fido_cred_user_name,       fido_cred_display_name,       fido_cred_authdata_ptr,
       fido_cred_authdata_raw_ptr,    fido_cred_clientdata_hash_ptr,   fido_cred_id_ptr,   fido_cred_aaguid_ptr,
       fido_cred_largeblob_key_ptr,     fido_cred_pubkey_ptr,     fido_cred_sig_ptr,      fido_cred_user_id_ptr,
       fido_cred_x5c_list_count,      fido_cred_x5c_list_ptr,      fido_cred_x5c_ptr,     fido_cred_attstmt_ptr,
       fido_cred_authdata_len,  fido_cred_authdata_raw_len,   fido_cred_clientdata_hash_len,   fido_cred_id_len,
       fido_cred_aaguid_len,      fido_cred_largeblob_key_len,      fido_cred_pubkey_len,     fido_cred_sig_len,
       fido_cred_user_id_len, fido_cred_x5c_list_len, fido_cred_x5c_len, fido_cred_attstmt_len,  fido_cred_type,
       fido_cred_flags, fido_cred_sigcount — FIDO2 credential API

SYNOPSIS

       #include <fido.h>

       fido_cred_t *
       fido_cred_new(void);

       void
       fido_cred_free(fido_cred_t **cred_p);

       size_t
       fido_cred_pin_minlen(const fido_cred_t *cred);

       int
       fido_cred_prot(const fido_cred_t *cred);

       const char *
       fido_cred_fmt(const fido_cred_t *cred);

       const char *
       fido_cred_rp_id(const fido_cred_t *cred);

       const char *
       fido_cred_rp_name(const fido_cred_t *cred);

       const char *
       fido_cred_user_name(const fido_cred_t *cred);

       const char *
       fido_cred_display_name(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_authdata_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_authdata_raw_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_clientdata_hash_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_id_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_aaguid_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_largeblob_key_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_pubkey_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_sig_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_user_id_ptr(const fido_cred_t *cred);

       size_t
       fido_cred_x5c_list_count(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_x5c_list_ptr(const fido_cred_t *cred, size_t idx);

       const unsigned char *
       fido_cred_x5c_ptr(const fido_cred_t *cred);

       const unsigned char *
       fido_cred_attstmt_ptr(const fido_cred_t *cred);

       size_t
       fido_cred_authdata_len(const fido_cred_t *cred);

       size_t
       fido_cred_authdata_raw_len(const fido_cred_t *cred);

       size_t
       fido_cred_clientdata_hash_len(const fido_cred_t *cred);

       size_t
       fido_cred_id_len(const fido_cred_t *cred);

       size_t
       fido_cred_aaguid_len(const fido_cred_t *cred);

       size_t
       fido_cred_largeblob_key_len(const fido_cred_t *cred);

       size_t
       fido_cred_pubkey_len(const fido_cred_t *cred);

       size_t
       fido_cred_sig_len(const fido_cred_t *cred);

       size_t
       fido_cred_user_id_len(const fido_cred_t *cred);

       size_t
       fido_cred_x5c_list_len(const fido_cred_t *cred, size_t idx);

       size_t
       fido_cred_x5c_len(const fido_cred_t *cred);

       size_t
       fido_cred_attstmt_len(const fido_cred_t *cred);

       int
       fido_cred_type(const fido_cred_t *cred);

       uint8_t
       fido_cred_flags(const fido_cred_t *cred);

       uint32_t
       fido_cred_sigcount(const fido_cred_t *cred);

DESCRIPTION

       FIDO2  credentials  are  abstracted in libfido2 by the fido_cred_t type.  The functions described in this
       page allow a fido_cred_t type to be allocated, deallocated,  and  inspected.   For  other  operations  on
       fido_cred_t,  please  refer  to fido_cred_set_authdata(3), fido_cred_exclude(3), fido_cred_verify(3), and
       fido_dev_make_cred(3).

       The fido_cred_new() function returns a pointer to a newly allocated, empty fido_cred_t type.   If  memory
       cannot be allocated, NULL is returned.

       The  fido_cred_free()  function  releases  the  memory  backing  *cred_p,  where  *cred_p  must have been
       previously allocated by fido_cred_new().  On return, *cred_p is set to NULL.  Either  cred_p  or  *cred_p
       may be NULL, in which case fido_cred_free() is a NOP.

       If the CTAP 2.1 FIDO_EXT_MINPINLEN extension is enabled on cred, then the fido_cred_pin_minlen() function
       returns   the  minimum  PIN  length  of  cred.   Otherwise,  fido_cred_pin_minlen()  returns  zero.   See
       fido_cred_set_pin_minlen(3) on how to enable this extension.

       If the CTAP 2.1 FIDO_EXT_CRED_PROTECT extension is enabled on cred, then  the  fido_cred_prot()  function
       returns the protection of cred.  Otherwise, fido_cred_prot() returns zero.  See fido_cred_set_prot(3) for
       the protection policies understood by libfido2.

       The  fido_cred_fmt()  function  returns  a  pointer to a NUL-terminated string containing the attestation
       statement format identifier of cred, or NULL if cred does not have a format set.

       The fido_cred_rp_id(), fido_cred_rp_name(), fido_cred_user_name(), and fido_cred_display_name() functions
       return pointers to NUL-terminated strings holding the relying party ID, relying party  name,  user  name,
       and user display name attributes of cred, or NULL if the respective entry is not set.

       The      fido_cred_authdata_ptr(),     fido_cred_authdata_raw_ptr(),     fido_cred_clientdata_hash_ptr(),
       fido_cred_id_ptr(),   fido_cred_aaguid_ptr(),   fido_cred_largeblob_key_ptr(),    fido_cred_pubkey_ptr(),
       fido_cred_sig_ptr(),  fido_cred_user_id_ptr(), fido_cred_x5c_ptr(), and fido_cred_attstmt_ptr() functions
       return pointers to the CBOR-encoded and raw authenticator  data,  client  data  hash,  ID,  authenticator
       attestation  GUID, “largeBlobKey”, public key, signature, user ID, x509 leaf certificate, and attestation
       statement parts of cred, or NULL if the respective entry is not set.

       The corresponding length  can  be  obtained  by  fido_cred_authdata_len(),  fido_cred_authdata_raw_len(),
       fido_cred_clientdata_hash_len(),                fido_cred_id_len(),               fido_cred_aaguid_len(),
       fido_cred_largeblob_key_len(),  fido_cred_pubkey_len(),   fido_cred_sig_len(),   fido_cred_user_id_len(),
       fido_cred_x5c_len(), and fido_cred_attstmt_len().

       The  fido_cred_x5c_list_count() function returns the length of the x509 certificate chain in cred and the
       fido_cred_x5c_list_ptr() and fido_cred_x5c_list_len() functions return a pointer to  and  length  of  the
       x509  certificate  at  index  idx respectively.  Please note that the leaf certificate has an idx (index)
       value of 0 and calling fido_cred_x5c_list_ptr(cred, 0) and fido_cred_x5c_list_len(cred, 0) is  equivalent
       to  fido_cred_x5c_ptr(cred) and fido_cred_x5c_len(cred) respectively.  If idx exceeds the return value of
       fido_cred_x5c_list_count(), fido_cred_x5c_list_ptr() returns NULL and fido_cred_x5c_list_len() returns 0.

       The authenticator data, x509 certificate, and signature parts of a credential are typically passed  to  a
       FIDO2 server for verification.

       The fido_cred_type() function returns the COSE algorithm of cred.

       The fido_cred_flags() function returns the authenticator data flags of cred.

       The fido_cred_sigcount() function returns the authenticator data signature counter of cred.

RETURN VALUES

       The  authenticator  data  returned by fido_cred_authdata_ptr() is a CBOR-encoded byte string, as obtained
       from the authenticator.  To obtain the decoded byte string, use fido_cred_authdata_raw_ptr().

       If     not     NULL,     pointers     returned     by     fido_cred_fmt(),      fido_cred_authdata_ptr(),
       fido_cred_clientdata_hash_ptr(),                fido_cred_id_ptr(),               fido_cred_aaguid_ptr(),
       fido_cred_largeblob_key_ptr(), fido_cred_pubkey_ptr(), fido_cred_sig_ptr(), and  fido_cred_x5c_ptr()  are
       guaranteed to exist until any API function that takes cred without the const qualifier is invoked.

SEE ALSO

       fido_cred_exclude(3),   fido_cred_set_authdata(3),   fido_cred_set_pin_minlen(3),  fido_cred_set_prot(3),
       fido_cred_verify(3), fido_credman_metadata_new(3), fido_dev_largeblob_get(3), fido_dev_make_cred(3)

Debian                                            May 23, 2018                                  FIDO_CRED_NEW(3)