home | help
FIDO_DEV_INFO_MANIFEST(3)    Library Functions Manual  FIDO_DEV_INFO_MANIFEST(3)

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 pro-
     vided.  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_prod-
     uct_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  al-
     located  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 discov-
     ery 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 correspond-
     ing device list.

FreeBSD ports 15.quarterly	 March 30, 2022        FIDO_DEV_INFO_MANIFEST(3)

home | help