1*2ccfa855SEd Maste.\" Copyright (c) 2018-2022 Yubico AB. All rights reserved. 20afa8e06SEd Maste.\" 3*2ccfa855SEd Maste.\" Redistribution and use in source and binary forms, with or without 4*2ccfa855SEd Maste.\" modification, are permitted provided that the following conditions are 5*2ccfa855SEd Maste.\" met: 6*2ccfa855SEd Maste.\" 7*2ccfa855SEd Maste.\" 1. Redistributions of source code must retain the above copyright 8*2ccfa855SEd Maste.\" notice, this list of conditions and the following disclaimer. 9*2ccfa855SEd Maste.\" 2. Redistributions in binary form must reproduce the above copyright 10*2ccfa855SEd Maste.\" notice, this list of conditions and the following disclaimer in 11*2ccfa855SEd Maste.\" the documentation and/or other materials provided with the 12*2ccfa855SEd Maste.\" distribution. 13*2ccfa855SEd Maste.\" 14*2ccfa855SEd Maste.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 15*2ccfa855SEd Maste.\" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 16*2ccfa855SEd Maste.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 17*2ccfa855SEd Maste.\" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 18*2ccfa855SEd Maste.\" HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19*2ccfa855SEd Maste.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 20*2ccfa855SEd Maste.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21*2ccfa855SEd Maste.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22*2ccfa855SEd Maste.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23*2ccfa855SEd Maste.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 24*2ccfa855SEd Maste.\" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25*2ccfa855SEd Maste.\" 26*2ccfa855SEd Maste.\" SPDX-License-Identifier: BSD-2-Clause 27*2ccfa855SEd Maste.\" 28*2ccfa855SEd Maste.Dd $Mdocdate: April 22 2022 $ 290afa8e06SEd Maste.Dt FIDO_CBOR_INFO_NEW 3 300afa8e06SEd Maste.Os 310afa8e06SEd Maste.Sh NAME 320afa8e06SEd Maste.Nm fido_cbor_info_new , 330afa8e06SEd Maste.Nm fido_cbor_info_free , 340afa8e06SEd Maste.Nm fido_dev_get_cbor_info , 350afa8e06SEd Maste.Nm fido_cbor_info_aaguid_ptr , 360afa8e06SEd Maste.Nm fido_cbor_info_extensions_ptr , 370afa8e06SEd Maste.Nm fido_cbor_info_protocols_ptr , 380afa8e06SEd Maste.Nm fido_cbor_info_transports_ptr , 390afa8e06SEd Maste.Nm fido_cbor_info_versions_ptr , 400afa8e06SEd Maste.Nm fido_cbor_info_options_name_ptr , 410afa8e06SEd Maste.Nm fido_cbor_info_options_value_ptr , 420afa8e06SEd Maste.Nm fido_cbor_info_algorithm_type , 430afa8e06SEd Maste.Nm fido_cbor_info_algorithm_cose , 440afa8e06SEd Maste.Nm fido_cbor_info_algorithm_count , 45*2ccfa855SEd Maste.Nm fido_cbor_info_certs_name_ptr , 46*2ccfa855SEd Maste.Nm fido_cbor_info_certs_value_ptr , 47*2ccfa855SEd Maste.Nm fido_cbor_info_certs_len , 480afa8e06SEd Maste.Nm fido_cbor_info_aaguid_len , 490afa8e06SEd Maste.Nm fido_cbor_info_extensions_len , 500afa8e06SEd Maste.Nm fido_cbor_info_protocols_len , 510afa8e06SEd Maste.Nm fido_cbor_info_transports_len , 520afa8e06SEd Maste.Nm fido_cbor_info_versions_len , 530afa8e06SEd Maste.Nm fido_cbor_info_options_len , 540afa8e06SEd Maste.Nm fido_cbor_info_maxmsgsiz , 553e696dfbSEd Maste.Nm fido_cbor_info_maxcredbloblen , 560afa8e06SEd Maste.Nm fido_cbor_info_maxcredcntlst , 570afa8e06SEd Maste.Nm fido_cbor_info_maxcredidlen , 58*2ccfa855SEd Maste.Nm fido_cbor_info_maxlargeblob , 59*2ccfa855SEd Maste.Nm fido_cbor_info_maxrpid_minpinlen , 60*2ccfa855SEd Maste.Nm fido_cbor_info_minpinlen , 61*2ccfa855SEd Maste.Nm fido_cbor_info_fwversion , 62*2ccfa855SEd Maste.Nm fido_cbor_info_uv_attempts , 63*2ccfa855SEd Maste.Nm fido_cbor_info_uv_modality , 64*2ccfa855SEd Maste.Nm fido_cbor_info_rk_remaining , 65*2ccfa855SEd Maste.Nm fido_cbor_info_new_pin_required 660afa8e06SEd Maste.Nd FIDO2 CBOR Info API 670afa8e06SEd Maste.Sh SYNOPSIS 680afa8e06SEd Maste.In fido.h 690afa8e06SEd Maste.Ft fido_cbor_info_t * 700afa8e06SEd Maste.Fn fido_cbor_info_new "void" 710afa8e06SEd Maste.Ft void 720afa8e06SEd Maste.Fn fido_cbor_info_free "fido_cbor_info_t **ci_p" 730afa8e06SEd Maste.Ft int 740afa8e06SEd Maste.Fn fido_dev_get_cbor_info "fido_dev_t *dev" "fido_cbor_info_t *ci" 750afa8e06SEd Maste.Ft const unsigned char * 760afa8e06SEd Maste.Fn fido_cbor_info_aaguid_ptr "const fido_cbor_info_t *ci" 770afa8e06SEd Maste.Ft char ** 780afa8e06SEd Maste.Fn fido_cbor_info_extensions_ptr "const fido_cbor_info_t *ci" 790afa8e06SEd Maste.Ft const uint8_t * 800afa8e06SEd Maste.Fn fido_cbor_info_protocols_ptr "const fido_cbor_info_t *ci" 810afa8e06SEd Maste.Ft char ** 820afa8e06SEd Maste.Fn fido_cbor_info_transports_ptr "const fido_cbor_info_t *ci" 830afa8e06SEd Maste.Ft char ** 840afa8e06SEd Maste.Fn fido_cbor_info_versions_ptr "const fido_cbor_info_t *ci" 850afa8e06SEd Maste.Ft char ** 860afa8e06SEd Maste.Fn fido_cbor_info_options_name_ptr "const fido_cbor_info_t *ci" 870afa8e06SEd Maste.Ft const bool * 880afa8e06SEd Maste.Fn fido_cbor_info_options_value_ptr "const fido_cbor_info_t *ci" 890afa8e06SEd Maste.Ft const char * 900afa8e06SEd Maste.Fn fido_cbor_info_algorithm_type "const fido_cbor_info_t *ci" "size_t idx" 910afa8e06SEd Maste.Ft int 920afa8e06SEd Maste.Fn fido_cbor_info_algorithm_cose "const fido_cbor_info_t *ci" "size_t idx" 930afa8e06SEd Maste.Ft size_t 940afa8e06SEd Maste.Fn fido_cbor_info_algorithm_count "const fido_cbor_info_t *ci" 95*2ccfa855SEd Maste.Ft char ** 96*2ccfa855SEd Maste.Fn fido_cbor_info_certs_name_ptr "const fido_cbor_info_t *ci" 97*2ccfa855SEd Maste.Ft const uint64_t * 98*2ccfa855SEd Maste.Fn fido_cbor_info_certs_value_ptr "const fido_cbor_info_t *ci" 99*2ccfa855SEd Maste.Ft size_t 100*2ccfa855SEd Maste.Fn fido_cbor_info_certs_len "const fido_cbor_info_t *ci" 1010afa8e06SEd Maste.Ft size_t 1020afa8e06SEd Maste.Fn fido_cbor_info_aaguid_len "const fido_cbor_info_t *ci" 1030afa8e06SEd Maste.Ft size_t 1040afa8e06SEd Maste.Fn fido_cbor_info_extensions_len "const fido_cbor_info_t *ci" 1050afa8e06SEd Maste.Ft size_t 1060afa8e06SEd Maste.Fn fido_cbor_info_protocols_len "const fido_cbor_info_t *ci" 1070afa8e06SEd Maste.Ft size_t 1080afa8e06SEd Maste.Fn fido_cbor_info_transports_len "const fido_cbor_info_t *ci" 1090afa8e06SEd Maste.Ft size_t 1100afa8e06SEd Maste.Fn fido_cbor_info_versions_len "const fido_cbor_info_t *ci" 1110afa8e06SEd Maste.Ft size_t 1120afa8e06SEd Maste.Fn fido_cbor_info_options_len "const fido_cbor_info_t *ci" 1130afa8e06SEd Maste.Ft uint64_t 1140afa8e06SEd Maste.Fn fido_cbor_info_maxmsgsiz "const fido_cbor_info_t *ci" 1150afa8e06SEd Maste.Ft uint64_t 1160afa8e06SEd Maste.Fn fido_cbor_info_maxcredbloblen "const fido_cbor_info_t *ci" 1170afa8e06SEd Maste.Ft uint64_t 1180afa8e06SEd Maste.Fn fido_cbor_info_maxcredcntlst "const fido_cbor_info_t *ci" 1190afa8e06SEd Maste.Ft uint64_t 1200afa8e06SEd Maste.Fn fido_cbor_info_maxcredidlen "const fido_cbor_info_t *ci" 1210afa8e06SEd Maste.Ft uint64_t 122*2ccfa855SEd Maste.Fn fido_cbor_info_maxlargeblob "const fido_cbor_info_t *ci" 123*2ccfa855SEd Maste.Ft uint64_t 124*2ccfa855SEd Maste.Fn fido_cbor_info_maxrpid_minpinlen "const fido_cbor_info_t *ci" 125*2ccfa855SEd Maste.Ft uint64_t 126*2ccfa855SEd Maste.Fn fido_cbor_info_minpinlen "const fido_cbor_info_t *ci" 127*2ccfa855SEd Maste.Ft uint64_t 1280afa8e06SEd Maste.Fn fido_cbor_info_fwversion "const fido_cbor_info_t *ci" 129*2ccfa855SEd Maste.Ft uint64_t 130*2ccfa855SEd Maste.Fn fido_cbor_info_uv_attempts "const fido_cbor_info_t *ci" 131*2ccfa855SEd Maste.Ft uint64_t 132*2ccfa855SEd Maste.Fn fido_cbor_info_uv_modality "const fido_cbor_info_t *ci" 133*2ccfa855SEd Maste.Ft int64_t 134*2ccfa855SEd Maste.Fn fido_cbor_info_rk_remaining "const fido_cbor_info_t *ci" 135*2ccfa855SEd Maste.Ft bool 136*2ccfa855SEd Maste.Fn fido_cbor_info_new_pin_required "const fido_cbor_info_t *ci" 1370afa8e06SEd Maste.Sh DESCRIPTION 1380afa8e06SEd MasteThe 1390afa8e06SEd Maste.Fn fido_cbor_info_new 1400afa8e06SEd Mastefunction returns a pointer to a newly allocated, empty 1410afa8e06SEd Maste.Vt fido_cbor_info_t 1420afa8e06SEd Mastetype. 1430afa8e06SEd MasteIf memory cannot be allocated, NULL is returned. 1440afa8e06SEd Maste.Pp 1450afa8e06SEd MasteThe 1460afa8e06SEd Maste.Fn fido_cbor_info_free 1470afa8e06SEd Mastefunction releases the memory backing 1480afa8e06SEd Maste.Fa *ci_p , 1490afa8e06SEd Mastewhere 1500afa8e06SEd Maste.Fa *ci_p 1510afa8e06SEd Mastemust have been previously allocated by 1520afa8e06SEd Maste.Fn fido_cbor_info_new . 1530afa8e06SEd MasteOn return, 1540afa8e06SEd Maste.Fa *ci_p 1550afa8e06SEd Masteis set to NULL. 1560afa8e06SEd MasteEither 1570afa8e06SEd Maste.Fa ci_p 1580afa8e06SEd Masteor 1590afa8e06SEd Maste.Fa *ci_p 1600afa8e06SEd Mastemay be NULL, in which case 1610afa8e06SEd Maste.Fn fido_cbor_info_free 1620afa8e06SEd Masteis a NOP. 1630afa8e06SEd Maste.Pp 1640afa8e06SEd MasteThe 1650afa8e06SEd Maste.Fn fido_dev_get_cbor_info 1660afa8e06SEd Mastefunction transmits a 1670afa8e06SEd Maste.Dv CTAP_CBOR_GETINFO 1680afa8e06SEd Mastecommand to 1690afa8e06SEd Maste.Fa dev 1700afa8e06SEd Masteand fills 1710afa8e06SEd Maste.Fa ci 1720afa8e06SEd Mastewith attributes retrieved from the command's response. 1730afa8e06SEd MasteThe 1740afa8e06SEd Maste.Fn fido_dev_get_cbor_info 1750afa8e06SEd Mastefunction may block. 1760afa8e06SEd Maste.Pp 1770afa8e06SEd MasteThe 1780afa8e06SEd Maste.Fn fido_cbor_info_aaguid_ptr , 1790afa8e06SEd Maste.Fn fido_cbor_info_extensions_ptr , 1800afa8e06SEd Maste.Fn fido_cbor_info_protocols_ptr , 1810afa8e06SEd Maste.Fn fido_cbor_info_transports_ptr , 1820afa8e06SEd Masteand 1830afa8e06SEd Maste.Fn fido_cbor_info_versions_ptr 1840afa8e06SEd Mastefunctions return pointers to the authenticator attestation GUID, 1850afa8e06SEd Mastesupported extensions, PIN protocol, transports, and CTAP version 1860afa8e06SEd Mastestrings of 1870afa8e06SEd Maste.Fa ci . 1880afa8e06SEd MasteThe corresponding length of a given attribute can be 1890afa8e06SEd Masteobtained by 1900afa8e06SEd Maste.Fn fido_cbor_info_aaguid_len , 1910afa8e06SEd Maste.Fn fido_cbor_info_extensions_len , 1920afa8e06SEd Maste.Fn fido_cbor_info_protocols_len , 1930afa8e06SEd Maste.Fn fido_cbor_info_transports_len , 1940afa8e06SEd Masteor 1950afa8e06SEd Maste.Fn fido_cbor_info_versions_len . 1960afa8e06SEd Maste.Pp 1970afa8e06SEd MasteThe 1980afa8e06SEd Maste.Fn fido_cbor_info_options_name_ptr 1990afa8e06SEd Masteand 2000afa8e06SEd Maste.Fn fido_cbor_info_options_value_ptr 2010afa8e06SEd Mastefunctions return pointers to the array of option names and their 2020afa8e06SEd Masterespective values 2030afa8e06SEd Mastein 2040afa8e06SEd Maste.Fa ci . 2050afa8e06SEd MasteThe length of the options array is returned by 2060afa8e06SEd Maste.Fn fido_cbor_info_options_len . 2070afa8e06SEd Maste.Pp 2080afa8e06SEd MasteThe 2090afa8e06SEd Maste.Fn fido_cbor_info_algorithm_count 2100afa8e06SEd Mastefunction returns the number of supported algorithms in 2110afa8e06SEd Maste.Fa ci . 2120afa8e06SEd MasteThe 2130afa8e06SEd Maste.Fn fido_cbor_info_algorithm_cose 2140afa8e06SEd Mastefunction returns the COSE identifier of algorithm 2150afa8e06SEd Maste.Fa idx 2160afa8e06SEd Mastein 2170afa8e06SEd Maste.Fa ci , 2180afa8e06SEd Masteor 0 if the COSE identifier is unknown or unset. 2190afa8e06SEd MasteThe 2200afa8e06SEd Maste.Fn fido_cbor_info_algorithm_type 2210afa8e06SEd Mastefunction returns the type of algorithm 2220afa8e06SEd Maste.Fa idx 2230afa8e06SEd Mastein 2240afa8e06SEd Maste.Fa ci , 2250afa8e06SEd Masteor NULL if the type is unset. 2260afa8e06SEd MastePlease note that the first algorithm in 2270afa8e06SEd Maste.Fa ci 2280afa8e06SEd Mastehas an 2290afa8e06SEd Maste.Fa idx 2300afa8e06SEd Maste(index) value of 0. 2310afa8e06SEd Maste.Pp 2320afa8e06SEd MasteThe 233*2ccfa855SEd Maste.Fn fido_cbor_info_certs_name_ptr 234*2ccfa855SEd Masteand 235*2ccfa855SEd Maste.Fn fido_cbor_info_certs_value_ptr 236*2ccfa855SEd Mastefunctions return pointers to the array of certification names and their 237*2ccfa855SEd Masterespective values 238*2ccfa855SEd Mastein 239*2ccfa855SEd Maste.Fa ci . 240*2ccfa855SEd MasteThe length of the certifications array is returned by 241*2ccfa855SEd Maste.Fn fido_cbor_info_certs_len . 242*2ccfa855SEd Maste.Pp 243*2ccfa855SEd MasteThe 2440afa8e06SEd Maste.Fn fido_cbor_info_maxmsgsiz 2450afa8e06SEd Mastefunction returns the maximum message size attribute of 2460afa8e06SEd Maste.Fa ci . 2470afa8e06SEd Maste.Pp 2480afa8e06SEd MasteThe 2490afa8e06SEd Maste.Fn fido_cbor_info_maxcredbloblen 2500afa8e06SEd Mastefunction returns the maximum 2510afa8e06SEd Maste.Dq credBlob 2520afa8e06SEd Mastelength in bytes supported by the authenticator as reported in 2530afa8e06SEd Maste.Fa ci . 2540afa8e06SEd Maste.Pp 2550afa8e06SEd MasteThe 2560afa8e06SEd Maste.Fn fido_cbor_info_maxcredcntlst 2570afa8e06SEd Mastefunction returns the maximum supported number of credentials in 2580afa8e06SEd Mastea single credential ID list as reported in 2590afa8e06SEd Maste.Fa ci . 2600afa8e06SEd Maste.Pp 2610afa8e06SEd MasteThe 2620afa8e06SEd Maste.Fn fido_cbor_info_maxcredidlen 2630afa8e06SEd Mastefunction returns the maximum supported length of a credential ID 2640afa8e06SEd Masteas reported in 2650afa8e06SEd Maste.Fa ci . 2660afa8e06SEd Maste.Pp 2670afa8e06SEd MasteThe 268*2ccfa855SEd Maste.Fn fido_cbor_info_maxrpid_minpinlen 269*2ccfa855SEd Mastefunction returns the maximum number of RP IDs that may be passed to 270*2ccfa855SEd Maste.Xr fido_dev_set_pin_minlen_rpid 3 , 271*2ccfa855SEd Masteas reported in 272*2ccfa855SEd Maste.Fa ci . 273*2ccfa855SEd MasteThe minimum PIN length attribute is a CTAP 2.1 addition. 274*2ccfa855SEd MasteIf the attribute is not advertised by the authenticator, the 275*2ccfa855SEd Maste.Fn fido_cbor_info_maxrpid_minpinlen 276*2ccfa855SEd Mastefunction returns zero. 277*2ccfa855SEd Maste.Pp 278*2ccfa855SEd MasteThe 279*2ccfa855SEd Maste.Fn fido_cbor_info_maxlargeblob 280*2ccfa855SEd Mastefunction returns the maximum length in bytes of an authenticator's 281*2ccfa855SEd Masteserialized largeBlob array as reported in 282*2ccfa855SEd Maste.Fa ci . 283*2ccfa855SEd Maste.Pp 284*2ccfa855SEd MasteThe 285*2ccfa855SEd Maste.Fn fido_cbor_info_minpinlen 286*2ccfa855SEd Mastefunction returns the minimum PIN length enforced by the 287*2ccfa855SEd Masteauthenticator as reported in 288*2ccfa855SEd Maste.Fa ci . 289*2ccfa855SEd MasteThe minimum PIN length attribute is a CTAP 2.1 addition. 290*2ccfa855SEd MasteIf the attribute is not advertised by the authenticator, the 291*2ccfa855SEd Maste.Fn fido_cbor_info_minpinlen 292*2ccfa855SEd Mastefunction returns zero. 293*2ccfa855SEd Maste.Pp 294*2ccfa855SEd MasteThe 2950afa8e06SEd Maste.Fn fido_cbor_info_fwversion 2960afa8e06SEd Mastefunction returns the firmware version attribute of 2970afa8e06SEd Maste.Fa ci . 2980afa8e06SEd Maste.Pp 299*2ccfa855SEd MasteThe 300*2ccfa855SEd Maste.Fn fido_cbor_info_uv_attempts 301*2ccfa855SEd Mastefunction returns the number of UV attempts that the platform may 302*2ccfa855SEd Masteattempt before falling back to PIN authentication. 303*2ccfa855SEd MasteIf 1, then all 304*2ccfa855SEd Maste.Xr fido_dev_get_uv_retry_count 3 305*2ccfa855SEd Masteretries are handled internally by the authenticator and the 306*2ccfa855SEd Masteplatform may only attempt non-PIN UV once. 307*2ccfa855SEd MasteThe UV attempts attribute is a CTAP 2.1 addition. 308*2ccfa855SEd MasteIf the attribute is not advertised by the authenticator, 309*2ccfa855SEd Mastethe 310*2ccfa855SEd Maste.Fn fido_cbor_info_uv_attempts 311*2ccfa855SEd Mastefunction returns zero. 312*2ccfa855SEd Maste.Pp 313*2ccfa855SEd MasteThe 314*2ccfa855SEd Maste.Fn fido_cbor_info_uv_modality 315*2ccfa855SEd Mastefunction returns a bitmask representing different UV modes 316*2ccfa855SEd Mastesupported by the authenticator, as defined in the FIDO Registry of 317*2ccfa855SEd MastePredefined Values and reported in 318*2ccfa855SEd Maste.Fa ci . 319*2ccfa855SEd MasteSee the 320*2ccfa855SEd Maste.Em FIDO_UV_MODE_* 321*2ccfa855SEd Mastedefinitions in 322*2ccfa855SEd Maste.In fido/param.h 323*2ccfa855SEd Mastefor the set of values defined by libfido2 and a brief description 324*2ccfa855SEd Masteof each. 325*2ccfa855SEd MasteThe UV modality attribute is a CTAP 2.1 addition. 326*2ccfa855SEd MasteIf the attribute is not advertised by the authenticator, the 327*2ccfa855SEd Maste.Fn fido_cbor_info_uv_modality 328*2ccfa855SEd Mastefunction returns zero. 329*2ccfa855SEd Maste.Pp 330*2ccfa855SEd MasteThe 331*2ccfa855SEd Maste.Fn fido_cbor_info_rk_remaining 332*2ccfa855SEd Mastefunction returns the estimated number of additional 333*2ccfa855SEd Masteresident/discoverable credentials that can be stored on the 334*2ccfa855SEd Masteauthenticator as reported in 335*2ccfa855SEd Maste.Fa ci . 336*2ccfa855SEd MasteThe estimated number of remaining resident credentials is a 337*2ccfa855SEd MasteCTAP 2.1 addition. 338*2ccfa855SEd MasteIf the attribute is not advertised by the authenticator, the 339*2ccfa855SEd Maste.Fn fido_cbor_info_rk_remaining 340*2ccfa855SEd Mastefunction returns -1. 341*2ccfa855SEd Maste.Pp 342*2ccfa855SEd MasteThe 343*2ccfa855SEd Maste.Fn fido_cbor_info_new_pin_required 344*2ccfa855SEd Mastefunction returns whether a new PIN is required by the authenticator 345*2ccfa855SEd Masteas reported in 346*2ccfa855SEd Maste.Fa ci . 347*2ccfa855SEd MasteIf 348*2ccfa855SEd Maste.Fn fido_cbor_info_new_pin_required 349*2ccfa855SEd Mastereturns true, operations requiring PIN authentication will fail 350*2ccfa855SEd Masteuntil a new PIN is set on the authenticator. 351*2ccfa855SEd MasteThe 352*2ccfa855SEd Maste.Xr fido_dev_set_pin 3 353*2ccfa855SEd Mastefunction can be used to set a new PIN. 354*2ccfa855SEd Maste.Pp 3550afa8e06SEd MasteA complete example of how to use these functions can be found in the 3560afa8e06SEd Maste.Pa example/info.c 3570afa8e06SEd Mastefile shipped with 3580afa8e06SEd Maste.Em libfido2 . 3590afa8e06SEd Maste.Sh RETURN VALUES 3600afa8e06SEd MasteThe 3610afa8e06SEd Maste.Fn fido_cbor_info_aaguid_ptr , 3620afa8e06SEd Maste.Fn fido_cbor_info_extensions_ptr , 3630afa8e06SEd Maste.Fn fido_cbor_info_protocols_ptr , 3640afa8e06SEd Maste.Fn fido_cbor_info_transports_ptr , 3650afa8e06SEd Maste.Fn fido_cbor_info_versions_ptr , 3660afa8e06SEd Maste.Fn fido_cbor_info_options_name_ptr , 3670afa8e06SEd Masteand 3680afa8e06SEd Maste.Fn fido_cbor_info_options_value_ptr 3690afa8e06SEd Mastefunctions return NULL if the respective field in 3700afa8e06SEd Maste.Fa ci 3710afa8e06SEd Masteis absent. 3720afa8e06SEd MasteIf not NULL, returned pointers are guaranteed to exist until any 3730afa8e06SEd MasteAPI function that takes 3740afa8e06SEd Maste.Fa ci 3750afa8e06SEd Mastewithout the 3760afa8e06SEd Maste.Em const 3770afa8e06SEd Mastequalifier is invoked. 3780afa8e06SEd Maste.Sh SEE ALSO 379*2ccfa855SEd Maste.Xr fido_dev_get_uv_retry_count 3 , 380*2ccfa855SEd Maste.Xr fido_dev_open 3 , 381*2ccfa855SEd Maste.Xr fido_dev_set_pin 3 , 382*2ccfa855SEd Maste.Xr fido_dev_set_pin_minlen_rpid 3 383*2ccfa855SEd Maste.Rs 384*2ccfa855SEd Maste.%D 2021-05-25 385*2ccfa855SEd Maste.%O Review Draft, Version 2.2 386*2ccfa855SEd Maste.%Q FIDO Alliance 387*2ccfa855SEd Maste.%R FIDO Registry of Predefined Values 388*2ccfa855SEd Maste.%U https://fidoalliance.org/specs/common-specs/fido-registry-v2.2-rd-20210525.html 389*2ccfa855SEd Maste.Re 390