1 | package com.yubico.fido.metadata; | |
2 | ||
3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | |
4 | import com.fasterxml.jackson.core.JsonGenerator; | |
5 | import com.fasterxml.jackson.core.JsonParser; | |
6 | import com.fasterxml.jackson.databind.DeserializationContext; | |
7 | import com.fasterxml.jackson.databind.JsonDeserializer; | |
8 | import com.fasterxml.jackson.databind.JsonSerializer; | |
9 | import com.fasterxml.jackson.databind.SerializerProvider; | |
10 | import com.fasterxml.jackson.databind.annotation.JsonDeserialize; | |
11 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; | |
12 | import com.yubico.webauthn.data.AuthenticatorTransport; | |
13 | import com.yubico.webauthn.data.PublicKeyCredentialParameters; | |
14 | import com.yubico.webauthn.extension.uvm.UserVerificationMethod; | |
15 | import java.io.IOException; | |
16 | import java.util.Arrays; | |
17 | import java.util.List; | |
18 | import java.util.Map; | |
19 | import java.util.Optional; | |
20 | import java.util.Set; | |
21 | import java.util.stream.Collectors; | |
22 | import lombok.Builder; | |
23 | import lombok.NonNull; | |
24 | import lombok.Value; | |
25 | import lombok.extern.jackson.Jacksonized; | |
26 | ||
27 | /** | |
28 | * This dictionary describes supported versions, extensions, AAGUID of the device and its | |
29 | * capabilities. | |
30 | * | |
31 | * <p>See: <a | |
32 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
33 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
34 | * | |
35 | * @see <a | |
36 | * href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#authenticatorgetinfo-dictionary">FIDO | |
37 | * Metadata Statement §3.12. AuthenticatorGetInfo dictionary</a> | |
38 | * @see <a | |
39 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
40 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
41 | */ | |
42 | @Value | |
43 | @Builder(toBuilder = true) | |
44 | @Jacksonized | |
45 | @JsonIgnoreProperties({ | |
46 | "maxAuthenticatorConfigLength", | |
47 | "defaultCredProtect" | |
48 | }) // Present in example but not defined | |
49 | public class AuthenticatorGetInfo { | |
50 | ||
51 | /** | |
52 | * @see <a | |
53 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
54 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
55 | */ | |
56 | @NonNull Set<CtapVersion> versions; | |
57 | ||
58 | /** | |
59 | * @see <a | |
60 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
61 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
62 | */ | |
63 | Set<String> extensions; | |
64 | ||
65 | /** | |
66 | * @see <a | |
67 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
68 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
69 | */ | |
70 | AAGUID aaguid; | |
71 | ||
72 | /** | |
73 | * @see <a | |
74 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
75 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
76 | */ | |
77 | SupportedCtapOptions options; | |
78 | ||
79 | /** | |
80 | * @see <a | |
81 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
82 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
83 | */ | |
84 | Integer maxMsgSize; | |
85 | ||
86 | /** | |
87 | * @see <a | |
88 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
89 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
90 | */ | |
91 | Set<CtapPinUvAuthProtocolVersion> pinUvAuthProtocols; | |
92 | ||
93 | /** | |
94 | * @see <a | |
95 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
96 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
97 | */ | |
98 | Integer maxCredentialCountInList; | |
99 | ||
100 | /** | |
101 | * @see <a | |
102 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
103 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
104 | */ | |
105 | Integer maxCredentialIdLength; | |
106 | ||
107 | /** | |
108 | * @see <a | |
109 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
110 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
111 | */ | |
112 | Set<AuthenticatorTransport> transports; | |
113 | ||
114 | /** | |
115 | * @see <a | |
116 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
117 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
118 | */ | |
119 | List<PublicKeyCredentialParameters> algorithms; | |
120 | ||
121 | /** | |
122 | * @see <a | |
123 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
124 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
125 | */ | |
126 | Integer maxSerializedLargeBlobArray; | |
127 | ||
128 | /** | |
129 | * @see <a | |
130 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
131 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
132 | */ | |
133 | Boolean forcePINChange; | |
134 | ||
135 | /** | |
136 | * @see <a | |
137 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
138 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
139 | */ | |
140 | Integer minPINLength; | |
141 | ||
142 | /** | |
143 | * @see <a | |
144 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
145 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
146 | */ | |
147 | Integer firmwareVersion; | |
148 | ||
149 | /** | |
150 | * @see <a | |
151 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
152 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
153 | */ | |
154 | Integer maxCredBlobLength; | |
155 | ||
156 | /** | |
157 | * @see <a | |
158 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
159 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
160 | */ | |
161 | Integer maxRPIDsForSetMinPINLength; | |
162 | ||
163 | /** | |
164 | * @see <a | |
165 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
166 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
167 | */ | |
168 | Integer preferredPlatformUvAttempts; | |
169 | ||
170 | @JsonDeserialize(using = SetFromIntJsonDeserializer.class) | |
171 | @JsonSerialize(contentUsing = IntFromSetJsonSerializer.class) | |
172 | Set<UserVerificationMethod> uvModality; | |
173 | ||
174 | Map<CtapCertificationId, Integer> certifications; | |
175 | Integer remainingDiscoverableCredentials; | |
176 | Set<Integer> vendorPrototypeConfigCommands; | |
177 | ||
178 | /** | |
179 | * @see <a | |
180 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
181 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
182 | */ | |
183 | public Optional<Set<String>> getExtensions() { | |
184 |
1
1. getExtensions : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getExtensions → SURVIVED |
return Optional.ofNullable(extensions); |
185 | } | |
186 | ||
187 | /** | |
188 | * @see <a | |
189 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
190 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
191 | */ | |
192 | public Optional<AAGUID> getAaguid() { | |
193 |
1
1. getAaguid : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getAaguid → SURVIVED |
return Optional.ofNullable(aaguid); |
194 | } | |
195 | ||
196 | /** | |
197 | * @see <a | |
198 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
199 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
200 | */ | |
201 | public Optional<SupportedCtapOptions> getOptions() { | |
202 |
1
1. getOptions : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getOptions → SURVIVED |
return Optional.ofNullable(options); |
203 | } | |
204 | ||
205 | /** | |
206 | * @see <a | |
207 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
208 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
209 | */ | |
210 | public Optional<Integer> getMaxMsgSize() { | |
211 |
1
1. getMaxMsgSize : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxMsgSize → SURVIVED |
return Optional.ofNullable(maxMsgSize); |
212 | } | |
213 | ||
214 | /** | |
215 | * @see <a | |
216 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
217 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
218 | */ | |
219 | public Optional<Set<CtapPinUvAuthProtocolVersion>> getPinUvAuthProtocols() { | |
220 |
1
1. getPinUvAuthProtocols : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getPinUvAuthProtocols → SURVIVED |
return Optional.ofNullable(pinUvAuthProtocols); |
221 | } | |
222 | ||
223 | /** | |
224 | * @see <a | |
225 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
226 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
227 | */ | |
228 | public Optional<Integer> getMaxCredentialCountInList() { | |
229 |
1
1. getMaxCredentialCountInList : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredentialCountInList → SURVIVED |
return Optional.ofNullable(maxCredentialCountInList); |
230 | } | |
231 | ||
232 | /** | |
233 | * @see <a | |
234 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
235 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
236 | */ | |
237 | public Optional<Integer> getMaxCredentialIdLength() { | |
238 |
1
1. getMaxCredentialIdLength : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredentialIdLength → SURVIVED |
return Optional.ofNullable(maxCredentialIdLength); |
239 | } | |
240 | ||
241 | /** | |
242 | * @see <a | |
243 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
244 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
245 | */ | |
246 | public Optional<Set<AuthenticatorTransport>> getTransports() { | |
247 |
1
1. getTransports : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getTransports → SURVIVED |
return Optional.ofNullable(transports); |
248 | } | |
249 | ||
250 | /** | |
251 | * @see <a | |
252 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
253 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
254 | */ | |
255 | public Optional<List<PublicKeyCredentialParameters>> getAlgorithms() { | |
256 |
1
1. getAlgorithms : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getAlgorithms → SURVIVED |
return Optional.ofNullable(algorithms); |
257 | } | |
258 | ||
259 | /** | |
260 | * @see <a | |
261 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
262 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
263 | */ | |
264 | public Optional<Integer> getMaxSerializedLargeBlobArray() { | |
265 |
1
1. getMaxSerializedLargeBlobArray : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxSerializedLargeBlobArray → SURVIVED |
return Optional.ofNullable(maxSerializedLargeBlobArray); |
266 | } | |
267 | ||
268 | /** | |
269 | * @see <a | |
270 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
271 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
272 | */ | |
273 | public Optional<Boolean> getForcePINChange() { | |
274 |
1
1. getForcePINChange : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getForcePINChange → SURVIVED |
return Optional.ofNullable(forcePINChange); |
275 | } | |
276 | ||
277 | /** | |
278 | * @see <a | |
279 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
280 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
281 | */ | |
282 | public Optional<Integer> getMinPINLength() { | |
283 |
1
1. getMinPINLength : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMinPINLength → SURVIVED |
return Optional.ofNullable(minPINLength); |
284 | } | |
285 | ||
286 | /** | |
287 | * @see <a | |
288 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
289 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
290 | */ | |
291 | public Optional<Integer> getFirmwareVersion() { | |
292 |
1
1. getFirmwareVersion : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getFirmwareVersion → SURVIVED |
return Optional.ofNullable(firmwareVersion); |
293 | } | |
294 | ||
295 | /** | |
296 | * @see <a | |
297 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
298 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
299 | */ | |
300 | public Optional<Integer> getMaxCredBlobLength() { | |
301 |
1
1. getMaxCredBlobLength : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredBlobLength → SURVIVED |
return Optional.ofNullable(maxCredBlobLength); |
302 | } | |
303 | ||
304 | /** | |
305 | * @see <a | |
306 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
307 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
308 | */ | |
309 | public Optional<Integer> getMaxRPIDsForSetMinPINLength() { | |
310 |
1
1. getMaxRPIDsForSetMinPINLength : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxRPIDsForSetMinPINLength → SURVIVED |
return Optional.ofNullable(maxRPIDsForSetMinPINLength); |
311 | } | |
312 | ||
313 | /** | |
314 | * @see <a | |
315 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
316 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
317 | */ | |
318 | public Optional<Integer> getPreferredPlatformUvAttempts() { | |
319 |
1
1. getPreferredPlatformUvAttempts : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getPreferredPlatformUvAttempts → SURVIVED |
return Optional.ofNullable(preferredPlatformUvAttempts); |
320 | } | |
321 | ||
322 | /** | |
323 | * @see <a | |
324 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
325 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
326 | */ | |
327 | public Optional<Set<UserVerificationMethod>> getUvModality() { | |
328 |
1
1. getUvModality : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getUvModality → SURVIVED |
return Optional.ofNullable(uvModality); |
329 | } | |
330 | ||
331 | /** | |
332 | * @see <a | |
333 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
334 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
335 | */ | |
336 | public Optional<Map<CtapCertificationId, Integer>> getCertifications() { | |
337 |
1
1. getCertifications : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getCertifications → SURVIVED |
return Optional.ofNullable(certifications); |
338 | } | |
339 | ||
340 | /** | |
341 | * @see <a | |
342 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
343 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
344 | */ | |
345 | public Optional<Integer> getRemainingDiscoverableCredentials() { | |
346 |
1
1. getRemainingDiscoverableCredentials : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getRemainingDiscoverableCredentials → SURVIVED |
return Optional.ofNullable(remainingDiscoverableCredentials); |
347 | } | |
348 | ||
349 | /** | |
350 | * @see <a | |
351 | * href="https://fidoalliance.org/specs/fido-v2.1-ps-20210615/fido-client-to-authenticator-protocol-v2.1-ps-20210615.html#authenticatorGetInfo">Client | |
352 | * to Authenticator Protocol (CTAP) §6.4. authenticatorGetInfo (0x04)</a> | |
353 | */ | |
354 | public Optional<Set<Integer>> getVendorPrototypeConfigCommands() { | |
355 |
1
1. getVendorPrototypeConfigCommands : replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getVendorPrototypeConfigCommands → SURVIVED |
return Optional.ofNullable(vendorPrototypeConfigCommands); |
356 | } | |
357 | ||
358 | private static class SetFromIntJsonDeserializer | |
359 | extends JsonDeserializer<Set<UserVerificationMethod>> { | |
360 | @Override | |
361 | public Set<UserVerificationMethod> deserialize(JsonParser p, DeserializationContext ctxt) | |
362 | throws IOException { | |
363 | final int bitset = p.getNumberValue().intValue(); | |
364 |
1
1. deserialize : replaced return value with Collections.emptySet for com/yubico/fido/metadata/AuthenticatorGetInfo$SetFromIntJsonDeserializer::deserialize → KILLED |
return Arrays.stream(UserVerificationMethod.values()) |
365 |
3
1. lambda$deserialize$0 : Replaced bitwise AND with OR → KILLED 2. lambda$deserialize$0 : negated conditional → KILLED 3. lambda$deserialize$0 : replaced boolean return with true for com/yubico/fido/metadata/AuthenticatorGetInfo$SetFromIntJsonDeserializer::lambda$deserialize$0 → KILLED |
.filter(uvm -> (uvm.getValue() & bitset) != 0) |
366 | .collect(Collectors.toSet()); | |
367 | } | |
368 | } | |
369 | ||
370 | private static class IntFromSetJsonSerializer | |
371 | extends JsonSerializer<Set<UserVerificationMethod>> { | |
372 | @Override | |
373 | public void serialize( | |
374 | Set<UserVerificationMethod> value, JsonGenerator gen, SerializerProvider serializers) | |
375 | throws IOException { | |
376 |
1
1. serialize : removed call to com/fasterxml/jackson/core/JsonGenerator::writeNumber → KILLED |
gen.writeNumber( |
377 |
4
1. lambda$serialize$1 : Replaced bitwise OR with AND → NO_COVERAGE 2. lambda$serialize$1 : replaced Integer return value with 0 for com/yubico/fido/metadata/AuthenticatorGetInfo$IntFromSetJsonSerializer::lambda$serialize$1 → NO_COVERAGE 3. lambda$serialize$0 : replaced Integer return value with 0 for com/yubico/fido/metadata/AuthenticatorGetInfo$IntFromSetJsonSerializer::lambda$serialize$0 → KILLED 4. lambda$serialize$0 : Replaced bitwise OR with AND → KILLED |
value.stream().reduce(0, (acc, next) -> acc | next.getValue(), (a, b) -> a | b)); |
378 | } | |
379 | } | |
380 | } | |
Mutations | ||
184 |
1.1 |
|
193 |
1.1 |
|
202 |
1.1 |
|
211 |
1.1 |
|
220 |
1.1 |
|
229 |
1.1 |
|
238 |
1.1 |
|
247 |
1.1 |
|
256 |
1.1 |
|
265 |
1.1 |
|
274 |
1.1 |
|
283 |
1.1 |
|
292 |
1.1 |
|
301 |
1.1 |
|
310 |
1.1 |
|
319 |
1.1 |
|
328 |
1.1 |
|
337 |
1.1 |
|
346 |
1.1 |
|
355 |
1.1 |
|
364 |
1.1 |
|
365 |
1.1 2.2 3.3 |
|
376 |
1.1 |
|
377 |
1.1 2.2 3.3 4.4 |