Provided by: libfido2-doc_1.12.0-2_all bug

NAME

     fido_dev_info_manifest, fido_dev_info_new, fido_dev_info_free, fido_dev_info_ptr,
     fido_dev_info_path, fido_dev_info_product, fido_dev_info_vendor,
     fido_dev_info_manufacturer_string, fido_dev_info_product_string, fido_dev_info_set — FIDO2
     device discovery functions

SYNOPSIS

     #include <fido.h>

     int
     fido_dev_info_manifest(fido_dev_info_t *devlist, size_t ilen, size_t *olen);

     fido_dev_info_t *
     fido_dev_info_new(size_t n);

     void
     fido_dev_info_free(fido_dev_info_t **devlist_p, size_t n);

     const fido_dev_info_t *
     fido_dev_info_ptr(const fido_dev_info_t *devlist, size_t i);

     const char *
     fido_dev_info_path(const fido_dev_info_t *di);

     int16_t
     fido_dev_info_product(const fido_dev_info_t *di);

     int16_t
     fido_dev_info_vendor(const fido_dev_info_t *di);

     const char *
     fido_dev_info_manufacturer_string(const fido_dev_info_t *di);

     const char *
     fido_dev_info_product_string(const fido_dev_info_t *di);

     int
     fido_dev_info_set(fido_dev_info_t *devlist, size_t i, const char *path,
         const char *manufacturer, const char *product, const fido_dev_io_t *io,
         const fido_dev_transport_t *transport);

DESCRIPTION

     The fido_dev_info_manifest() function fills devlist with up to ilen FIDO2 devices found by
     the underlying operating system.  Currently only USB HID devices are supported.  The number
     of discovered devices is returned in olen, where olen is an addressable pointer.

     The fido_dev_info_new() function returns a pointer to a newly allocated, empty device list
     with n available slots.  If memory is not available, NULL is returned.

     The fido_dev_info_free() function releases the memory backing *devlist_p, where *devlist_p
     must have been previously allocated by fido_dev_info_new().  The number n of allocated slots
     must also be provided.  On return, *devlist_p is set to NULL.  Either devlist_p or
     *devlist_p may be NULL, in which case fido_dev_info_free() is a NOP.

     The fido_dev_info_ptr() function returns a pointer to slot number i of devlist.  It is the
     caller's responsibility to ensure that i is bounded.  Please note that the first slot has
     index 0.

     The fido_dev_info_path() function returns the filesystem path or subsystem-specific
     identification string of di.

     The fido_dev_info_product() function returns the product ID of di.

     The fido_dev_info_vendor() function returns the vendor ID of di.

     The fido_dev_info_manufacturer_string() function returns the manufacturer string of di.  If
     di does not have an associated manufacturer string, fido_dev_info_manufacturer_string()
     returns an empty string.

     The fido_dev_info_product_string() function returns the product string of di.  If di does
     not have an associated product string, fido_dev_info_product_string() returns an empty
     string.

     An example of how to use the functions described in this document can be found in the
     examples/manifest.c file shipped with libfido2.

     The fido_dev_info_set() function initializes an entry in a device list allocated by
     fido_dev_info_new() with the specified path, manufacturer, and product strings, and with the
     specified I/O handlers and, optionally, transport functions, as described in
     fido_dev_set_io_functions(3).  The io argument must be specified; the transport argument may
     be NULL.  The path, I/O handlers, and transport functions will be used automatically by
     fido_dev_new_with_info(3) and fido_dev_open_with_info(3).  An application can use this, for
     example, to substitute mock FIDO2 devices in testing for the real ones that
     fido_dev_info_manifest() would discover.

RETURN VALUES

     The fido_dev_info_manifest() function always returns FIDO_OK.  If a discovery error occurs,
     the olen pointer is set to 0.

     On success, the fido_dev_info_set() function returns FIDO_OK.  On error, a different error
     code defined in <fido/err.h> is returned.

     The pointers returned by fido_dev_info_ptr(), fido_dev_info_path(),
     fido_dev_info_manufacturer_string(), and fido_dev_info_product_string() are guaranteed to
     exist until fido_dev_info_free() is called on the corresponding device list.