1FIDO_ASSERT_NEW(3)       BSD Library Functions Manual       FIDO_ASSERT_NEW(3)
2

NAME

4     fido_assert_new, fido_assert_free, fido_assert_count, fido_assert_rp_id,
5     fido_assert_user_display_name, fido_assert_user_icon,
6     fido_assert_user_name, fido_assert_authdata_ptr, fido_assert_blob_ptr,
7     fido_assert_clientdata_hash_ptr, fido_assert_hmac_secret_ptr,
8     fido_assert_largeblob_key_ptr, fido_assert_user_id_ptr,
9     fido_assert_sig_ptr, fido_assert_id_ptr, fido_assert_authdata_len,
10     fido_assert_blob_len, fido_assert_clientdata_hash_len,
11     fido_assert_hmac_secret_len, fido_assert_largeblob_key_len,
12     fido_assert_user_id_len, fido_assert_sig_len, fido_assert_id_len,
13     fido_assert_sigcount, fido_assert_flags — FIDO2 assertion API
14

SYNOPSIS

16     #include <fido.h>
17
18     fido_assert_t *
19     fido_assert_new(void);
20
21     void
22     fido_assert_free(fido_assert_t **assert_p);
23
24     size_t
25     fido_assert_count(const fido_assert_t *assert);
26
27     const char *
28     fido_assert_rp_id(const fido_assert_t *assert);
29
30     const char *
31     fido_assert_user_display_name(const fido_assert_t *assert, size_t idx);
32
33     const char *
34     fido_assert_user_icon(const fido_assert_t *assert, size_t idx);
35
36     const char *
37     fido_assert_user_name(const fido_assert_t *assert, size_t idx);
38
39     const unsigned char *
40     fido_assert_authdata_ptr(const fido_assert_t *assert, size_t idx);
41
42     const unsigned char *
43     fido_assert_clientdata_hash_ptr(const fido_assert_t *assert);
44
45     const unsigned char *
46     fido_assert_blob_ptr(const fido_assert_t *assert, size_t idx);
47
48     const unsigned char *
49     fido_assert_hmac_secret_ptr(const fido_assert_t *assert, size_t idx);
50
51     const unsigned char *
52     fido_assert_largeblob_key_ptr(const fido_assert_t *assert, size_t idx);
53
54     const unsigned char *
55     fido_assert_user_id_ptr(const fido_assert_t *assert, size_t idx);
56
57     const unsigned char *
58     fido_assert_sig_ptr(const fido_assert_t *assert, size_t idx);
59
60     const unsigned char *
61     fido_assert_id_ptr(const fido_assert_t *assert, size_t idx);
62
63     size_t
64     fido_assert_authdata_len(const fido_assert_t *assert, size_t idx);
65
66     size_t
67     fido_assert_clientdata_hash_len(const fido_assert_t *assert);
68
69     size_t
70     fido_assert_blob_len(const fido_assert_t *assert, size_t idx);
71
72     size_t
73     fido_assert_hmac_secret_len(const fido_assert_t *assert, size_t idx);
74
75     size_t
76     fido_assert_largeblob_key_len(const fido_assert_t *assert, size_t idx);
77
78     size_t
79     fido_assert_user_id_len(const fido_assert_t *assert, size_t idx);
80
81     size_t
82     fido_assert_sig_len(const fido_assert_t *assert, size_t idx);
83
84     size_t
85     fido_assert_id_len(const fido_assert_t *assert, size_t idx);
86
87     uint32_t
88     fido_assert_sigcount(const fido_assert_t *assert, size_t idx);
89
90     uint8_t
91     fido_assert_flags(const fido_assert_t *assert, size_t idx);
92

DESCRIPTION

94     A FIDO2 assertion is a collection of statements, each statement a map be‐
95     tween a challenge, a credential, a signature, and ancillary attributes.
96     In libfido2, a FIDO2 assertion is abstracted by the fido_assert_t type.
97     The functions described in this page allow a fido_assert_t type to be al‐
98     located, deallocated, and inspected.  For other operations on
99     fido_assert_t, please refer to fido_assert_set_authdata(3),
100     fido_assert_allow_cred(3), fido_assert_verify(3), and
101     fido_dev_get_assert(3).
102
103     The fido_assert_new() function returns a pointer to a newly allocated,
104     empty fido_assert_t type.  If memory cannot be allocated, NULL is re‐
105     turned.
106
107     The fido_assert_free() function releases the memory backing *assert_p,
108     where *assert_p must have been previously allocated by fido_assert_new().
109     On return, *assert_p is set to NULL.  Either assert_p or *assert_p may be
110     NULL, in which case fido_assert_free() is a NOP.
111
112     The fido_assert_count() function returns the number of statements in
113     assert.
114
115     The fido_assert_rp_id() function returns a pointer to a NUL-terminated
116     string holding the relying party ID of assert.
117
118     The fido_assert_user_display_name(), fido_assert_user_icon(), and
119     fido_assert_user_name(), functions return pointers to the user display
120     name, icon, and name attributes of statement idx in assert.  If not NULL,
121     the values returned by these functions point to NUL-terminated UTF-8
122     strings.  The user display name, icon, and name attributes will typically
123     only be returned by the authenticator if user verification was performed
124     by the authenticator and multiple resident/discoverable credentials were
125     involved in the assertion.
126
127     The fido_assert_authdata_ptr(), fido_assert_clientdata_hash_ptr(),
128     fido_assert_id_ptr(), fido_assert_user_id_ptr(), fido_assert_sig_ptr(),
129     fido_assert_sigcount(), and fido_assert_flags() functions return pointers
130     to the CBOR-encoded authenticator data, client data hash, credential ID,
131     user ID, signature, signature count, and authenticator data flags of
132     statement idx in assert.
133
134     The fido_assert_hmac_secret_ptr() function returns a pointer to the hmac-
135     secret attribute of statement idx in assert.  The HMAC Secret Extension
136     (hmac-secret) is a CTAP 2.0 extension.  Note that the resulting hmac-se‐
137     cret varies according to whether user verification was performed by the
138     authenticator.
139
140     The fido_assert_blob_ptr() and fido_assert_largeblob_key_ptr() functions
141     return pointers to the “credBlob” and “largeBlobKey” attributes of state‐
142     ment idx in assert.  Credential Blob (credBlob) and Large Blob Key
143     (largeBlobKey) are CTAP 2.1 extensions.
144
145     The fido_assert_authdata_len(), fido_assert_clientdata_hash_len(),
146     fido_assert_id_len(), fido_assert_user_id_len(), fido_assert_sig_len(),
147     fido_assert_hmac_secret_len(), fido_assert_blob_len(), and
148     fido_assert_largeblob_key_len() functions return the length of a given
149     attribute.
150
151     Please note that the first statement in assert has an idx (index) value
152     of 0.
153
154     The authenticator data and signature parts of an assertion statement are
155     typically passed to a FIDO2 server for verification.
156

RETURN VALUES

158     The authenticator data returned by fido_assert_authdata_ptr() is a CBOR-
159     encoded byte string, as obtained from the authenticator.
160
161     The fido_assert_rp_id(), fido_assert_user_display_name(),
162     fido_assert_user_icon(), fido_assert_user_name(),
163     fido_assert_authdata_ptr(), fido_assert_clientdata_hash_ptr(),
164     fido_assert_id_ptr(), fido_assert_user_id_ptr(), fido_assert_sig_ptr(),
165     fido_assert_hmac_secret_ptr(), fido_assert_blob_ptr(), and
166     fido_assert_largeblob_key_ptr() functions may return NULL if the respec‐
167     tive field in assert is not set.  If not NULL, returned pointers are
168     guaranteed to exist until any API function that takes assert without the
169     const qualifier is invoked.
170

SEE ALSO

172     fido_assert_allow_cred(3), fido_assert_set_authdata(3),
173     fido_assert_verify(3), fido_dev_get_assert(3), fido_dev_largeblob_get(3)
174
175BSD                             April 27, 2022                             BSD
Impressum