1FIDO_ASSERT_NEW(3) BSD Library Functions Manual FIDO_ASSERT_NEW(3)
2
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
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
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.
123
124 The fido_assert_authdata_ptr(), fido_assert_clientdata_hash_ptr(),
125 fido_assert_id_ptr(), fido_assert_user_id_ptr(), fido_assert_sig_ptr(),
126 fido_assert_sigcount(), and fido_assert_flags() functions return pointers
127 to the CBOR-encoded authenticator data, client data hash, credential ID,
128 user ID, signature, signature count, and authenticator data flags of
129 statement idx in assert.
130
131 The fido_assert_hmac_secret_ptr() function returns a pointer to the hmac-
132 secret attribute of statement idx in assert. The HMAC Secret Extension
133 (hmac-secret) is a CTAP 2.0 extension. Note that the resulting hmac-se‐
134 cret varies according to whether user verification was performed by the
135 authenticator.
136
137 The fido_assert_blob_ptr() and fido_assert_largeblob_key_ptr() functions
138 return pointers to the “credBlob” and “largeBlobKey” attributes of state‐
139 ment idx in assert. Credential Blob (credBlob) and Large Blob Key
140 (largeBlobKey) are CTAP 2.1 extensions.
141
142 The fido_assert_authdata_len(), fido_assert_clientdata_hash_len(),
143 fido_assert_id_len(), fido_assert_user_id_len(), fido_assert_sig_len(),
144 fido_assert_hmac_secret_len(), fido_assert_blob_len(), and
145 fido_assert_largeblob_key_len() functions return the length of a given
146 attribute.
147
148 Please note that the first statement in assert has an idx (index) value
149 of 0.
150
151 The authenticator data and signature parts of an assertion statement are
152 typically passed to a FIDO2 server for verification.
153
155 The authenticator data returned by fido_assert_authdata_ptr() is a CBOR-
156 encoded byte string, as obtained from the authenticator.
157
158 The fido_assert_rp_id(), fido_assert_user_display_name(),
159 fido_assert_user_icon(), fido_assert_user_name(),
160 fido_assert_authdata_ptr(), fido_assert_clientdata_hash_ptr(),
161 fido_assert_id_ptr(), fido_assert_user_id_ptr(), fido_assert_sig_ptr(),
162 fido_assert_hmac_secret_ptr(), fido_assert_blob_ptr(), and
163 fido_assert_largeblob_key_ptr() functions may return NULL if the respec‐
164 tive field in assert is not set. If not NULL, returned pointers are
165 guaranteed to exist until any API function that takes assert without the
166 const qualifier is invoked.
167
169 fido_assert_allow_cred(3), fido_assert_set_authdata(3),
170 fido_assert_verify(3), fido_dev_get_assert(3), fido_dev_largeblob_get(3)
171
172BSD April 27, 2022 BSD