AuthenticatorGetInfo.java

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
Location : getExtensions
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getExtensions → SURVIVED

193

1.1
Location : getAaguid
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getAaguid → SURVIVED

202

1.1
Location : getOptions
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getOptions → SURVIVED

211

1.1
Location : getMaxMsgSize
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxMsgSize → SURVIVED

220

1.1
Location : getPinUvAuthProtocols
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getPinUvAuthProtocols → SURVIVED

229

1.1
Location : getMaxCredentialCountInList
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredentialCountInList → SURVIVED

238

1.1
Location : getMaxCredentialIdLength
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredentialIdLength → SURVIVED

247

1.1
Location : getTransports
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getTransports → SURVIVED

256

1.1
Location : getAlgorithms
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getAlgorithms → SURVIVED

265

1.1
Location : getMaxSerializedLargeBlobArray
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxSerializedLargeBlobArray → SURVIVED

274

1.1
Location : getForcePINChange
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getForcePINChange → SURVIVED

283

1.1
Location : getMinPINLength
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMinPINLength → SURVIVED

292

1.1
Location : getFirmwareVersion
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getFirmwareVersion → SURVIVED

301

1.1
Location : getMaxCredBlobLength
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxCredBlobLength → SURVIVED

310

1.1
Location : getMaxRPIDsForSetMinPINLength
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getMaxRPIDsForSetMinPINLength → SURVIVED

319

1.1
Location : getPreferredPlatformUvAttempts
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getPreferredPlatformUvAttempts → SURVIVED

328

1.1
Location : getUvModality
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getUvModality → SURVIVED

337

1.1
Location : getCertifications
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getCertifications → SURVIVED

346

1.1
Location : getRemainingDiscoverableCredentials
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getRemainingDiscoverableCredentials → SURVIVED

355

1.1
Location : getVendorPrototypeConfigCommands
Killed by : none
replaced return value with Optional.empty for com/yubico/fido/metadata/AuthenticatorGetInfo::getVendorPrototypeConfigCommands → SURVIVED

364

1.1
Location : deserialize
Killed by : com.yubico.fido.metadata.JsonIoSpec
replaced return value with Collections.emptySet for com/yubico/fido/metadata/AuthenticatorGetInfo$SetFromIntJsonDeserializer::deserialize → KILLED

365

1.1
Location : lambda$deserialize$0
Killed by : com.yubico.fido.metadata.JsonIoSpec
Replaced bitwise AND with OR → KILLED

2.2
Location : lambda$deserialize$0
Killed by : com.yubico.fido.metadata.JsonIoSpec
negated conditional → KILLED

3.3
Location : lambda$deserialize$0
Killed by : com.yubico.fido.metadata.JsonIoSpec
replaced boolean return with true for com/yubico/fido/metadata/AuthenticatorGetInfo$SetFromIntJsonDeserializer::lambda$deserialize$0 → KILLED

376

1.1
Location : serialize
Killed by : com.yubico.fido.metadata.JsonIoSpec
removed call to com/fasterxml/jackson/core/JsonGenerator::writeNumber → KILLED

377

1.1
Location : lambda$serialize$1
Killed by : none
Replaced bitwise OR with AND → NO_COVERAGE

2.2
Location : lambda$serialize$0
Killed by : com.yubico.fido.metadata.JsonIoSpec
replaced Integer return value with 0 for com/yubico/fido/metadata/AuthenticatorGetInfo$IntFromSetJsonSerializer::lambda$serialize$0 → KILLED

3.3
Location : lambda$serialize$1
Killed by : none
replaced Integer return value with 0 for com/yubico/fido/metadata/AuthenticatorGetInfo$IntFromSetJsonSerializer::lambda$serialize$1 → NO_COVERAGE

4.4
Location : lambda$serialize$0
Killed by : com.yubico.fido.metadata.JsonIoSpec
Replaced bitwise OR with AND → KILLED

Active mutators

Tests examined


Report generated by PIT 1.15.0