MetadataStatement.java

1
package com.yubico.fido.metadata;
2
3
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
4
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
5
import com.yubico.internal.util.CollectionUtil;
6
import com.yubico.webauthn.extension.uvm.KeyProtectionType;
7
import com.yubico.webauthn.extension.uvm.MatcherProtectionType;
8
import java.security.cert.X509Certificate;
9
import java.util.List;
10
import java.util.Map;
11
import java.util.Optional;
12
import java.util.Set;
13
import lombok.Builder;
14
import lombok.NonNull;
15
import lombok.Value;
16
import lombok.extern.jackson.Jacksonized;
17
18
/**
19
 * Relying Parties can learn a subset of verifiable information for authenticators certified by the
20
 * FIDO Alliance with an Authenticator Metadata statement. The Metadata statement can be acquired
21
 * from the Metadata BLOB that is hosted on the Metadata Service [<a
22
 * href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#biblio-fidometadataservice">FIDOMetadataService</a>].
23
 *
24
 * <p>This class does not include the field <code>ecdaaTrustAnchors</code> since ECDAA is deprecated
25
 * in WebAuthn Level 2.
26
 *
27
 * @see <a
28
 *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
29
 *     Metadata Statement</a>
30
 */
31
@Value
32
@Builder(toBuilder = true)
33
@Jacksonized
34
public class MetadataStatement {
35
36
  /**
37
   * @see <a
38
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
39
   *     Metadata Statement</a>
40
   */
41
  String legalHeader;
42
43
  /**
44
   * @see <a
45
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
46
   *     Metadata Statement</a>
47
   */
48
  AAID aaid;
49
50
  /**
51
   * @see <a
52
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
53
   *     Metadata Statement</a>
54
   */
55
  AAGUID aaguid;
56
57
  /**
58
   * @see <a
59
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
60
   *     Metadata Statement</a>
61
   */
62
  Set<String> attestationCertificateKeyIdentifiers;
63
64
  /**
65
   * @since 2.9.0
66
   * @see <a
67
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-friendlynames">FIDO
68
   *     Metadata Statement</a>
69
   */
70
  Map<String, String> friendlyNames;
71
72
  /**
73
   * @see <a
74
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
75
   *     Metadata Statement</a>
76
   */
77
  String description;
78
79
  /**
80
   * @see <a
81
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
82
   *     Metadata Statement</a>
83
   */
84
  AlternativeDescriptions alternativeDescriptions;
85
86
  /**
87
   * @see <a
88
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
89
   *     Metadata Statement</a>
90
   */
91
  long authenticatorVersion;
92
93
  /**
94
   * @see <a
95
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
96
   *     Metadata Statement</a>
97
   */
98
  @NonNull ProtocolFamily protocolFamily;
99
100
  /**
101
   * @see <a
102
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
103
   *     Metadata Statement</a>
104
   */
105
  int schema;
106
107
  /**
108
   * @see <a
109
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
110
   *     Metadata Statement</a>
111
   */
112
  @NonNull Set<Version> upv;
113
114
  /**
115
   * @see <a
116
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
117
   *     Metadata Statement</a>
118
   */
119
  @NonNull Set<AuthenticationAlgorithm> authenticationAlgorithms;
120
121
  /**
122
   * @see <a
123
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
124
   *     Metadata Statement</a>
125
   */
126
  @NonNull Set<PublicKeyRepresentationFormat> publicKeyAlgAndEncodings;
127
128
  /**
129
   * @see <a
130
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
131
   *     Metadata Statement</a>
132
   */
133
  @NonNull Set<AuthenticatorAttestationType> attestationTypes;
134
135
  /**
136
   * @see <a
137
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
138
   *     Metadata Statement</a>
139
   */
140
  @NonNull Set<Set<VerificationMethodDescriptor>> userVerificationDetails;
141
142
  /**
143
   * @see <a
144
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
145
   *     Metadata Statement</a>
146
   */
147
  @NonNull Set<KeyProtectionType> keyProtection;
148
149
  /**
150
   * @see <a
151
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
152
   *     Metadata Statement</a>
153
   */
154
  Boolean isKeyRestricted;
155
156
  /**
157
   * @see <a
158
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
159
   *     Metadata Statement</a>
160
   */
161
  Boolean isFreshUserVerificationRequired;
162
163
  /**
164
   * @see <a
165
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
166
   *     Metadata Statement</a>
167
   */
168
  @NonNull Set<MatcherProtectionType> matcherProtection;
169
170
  /**
171
   * @see <a
172
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
173
   *     Metadata Statement</a>
174
   */
175
  Integer cryptoStrength;
176
177
  /**
178
   * @see <a
179
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
180
   *     Metadata Statement</a>
181
   */
182
  Set<AttachmentHint> attachmentHint;
183
184
  /**
185
   * @see <a
186
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
187
   *     Metadata Statement</a>
188
   */
189
  @NonNull Set<TransactionConfirmationDisplayType> tcDisplay;
190
191
  /**
192
   * @see <a
193
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
194
   *     Metadata Statement</a>
195
   */
196
  String tcDisplayContentType;
197
198
  /**
199
   * @see <a
200
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
201
   *     Metadata Statement</a>
202
   */
203
  List<DisplayPNGCharacteristicsDescriptor> tcDisplayPNGCharacteristics;
204
205
  /**
206
   * @see <a
207
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
208
   *     Metadata Statement</a>
209
   */
210
  @NonNull
211
  @JsonDeserialize(contentConverter = CertFromBase64Converter.class)
212
  @JsonSerialize(contentConverter = CertToBase64Converter.class)
213
  Set<X509Certificate> attestationRootCertificates;
214
215
  /**
216
   * @see <a
217
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
218
   *     Metadata Statement</a>
219
   */
220
  String icon;
221
222
  /**
223
   * @since 2.9.0
224
   * @see <a
225
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-icondark">FIDO
226
   *     Metadata Statement</a>
227
   */
228
  String iconDark;
229
230
  /**
231
   * @since 2.9.0
232
   * @see <a
233
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-providerlogolight">FIDO
234
   *     Metadata Statement</a>
235
   */
236
  String providerLogoLight;
237
238
  /**
239
   * @since 2.9.0
240
   * @see <a
241
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-providerlogodark">FIDO
242
   *     Metadata Statement</a>
243
   */
244
  String providerLogoDark;
245
246
  /**
247
   * @see <a
248
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
249
   *     Metadata Statement</a>
250
   */
251
  Set<ExtensionDescriptor> supportedExtensions;
252
253
  /**
254
   * @since 2.9.0
255
   * @see <a
256
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-keyscope">FIDO
257
   *     Metadata Statement</a>
258
   */
259
  String keyScope;
260
261
  /**
262
   * @since 2.9.0
263
   * @see <a
264
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-multidevicecredentialsupport">FIDO
265
   *     Metadata Statement</a>
266
   */
267
  String multiDeviceCredentialSupport;
268
269
  /**
270
   * @see <a
271
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
272
   *     Metadata Statement</a>
273
   */
274
  AuthenticatorGetInfo authenticatorGetInfo;
275
276
  /**
277
   * @since 2.9.0
278
   * @see <a
279
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-cxpconfigurl">FIDO
280
   *     Metadata Statement</a>
281
   */
282
  String cxpConfigURL;
283
284
  public MetadataStatement(
285
      String legalHeader,
286
      AAID aaid,
287
      AAGUID aaguid,
288
      Set<String> attestationCertificateKeyIdentifiers,
289
      Map<String, String> friendlyNames,
290
      String description,
291
      AlternativeDescriptions alternativeDescriptions,
292
      long authenticatorVersion,
293 1 1. <init> : negated conditional → KILLED
      @NonNull ProtocolFamily protocolFamily,
294
      int schema,
295 1 1. <init> : negated conditional → KILLED
      @NonNull Set<Version> upv,
296 1 1. <init> : negated conditional → KILLED
      @NonNull Set<AuthenticationAlgorithm> authenticationAlgorithms,
297 1 1. <init> : negated conditional → KILLED
      @NonNull Set<PublicKeyRepresentationFormat> publicKeyAlgAndEncodings,
298 1 1. <init> : negated conditional → KILLED
      @NonNull Set<AuthenticatorAttestationType> attestationTypes,
299 1 1. <init> : negated conditional → KILLED
      @NonNull Set<Set<VerificationMethodDescriptor>> userVerificationDetails,
300 1 1. <init> : negated conditional → KILLED
      @NonNull Set<KeyProtectionType> keyProtection,
301
      Boolean isKeyRestricted,
302
      Boolean isFreshUserVerificationRequired,
303 1 1. <init> : negated conditional → KILLED
      @NonNull Set<MatcherProtectionType> matcherProtection,
304
      Integer cryptoStrength,
305
      Set<AttachmentHint> attachmentHint,
306 1 1. <init> : negated conditional → KILLED
      @NonNull Set<TransactionConfirmationDisplayType> tcDisplay,
307
      String tcDisplayContentType,
308
      List<DisplayPNGCharacteristicsDescriptor> tcDisplayPNGCharacteristics,
309 1 1. <init> : negated conditional → KILLED
      @NonNull Set<X509Certificate> attestationRootCertificates,
310
      String icon,
311
      String iconDark,
312
      String providerLogoLight,
313
      String providerLogoDark,
314
      Set<ExtensionDescriptor> supportedExtensions,
315
      String keyScope,
316
      String multiDeviceCredentialSupport,
317
      AuthenticatorGetInfo authenticatorGetInfo,
318
      String cxpConfigURL) {
319
    this.legalHeader = legalHeader;
320
    this.aaid = aaid;
321
    this.aaguid = aaguid;
322
    this.attestationCertificateKeyIdentifiers =
323
        CollectionUtil.immutableSetOrEmpty(attestationCertificateKeyIdentifiers);
324
    this.friendlyNames = CollectionUtil.immutableMapOrEmpty(friendlyNames);
325
    this.description = description;
326
    this.alternativeDescriptions = alternativeDescriptions;
327
    this.authenticatorVersion = authenticatorVersion;
328
    this.protocolFamily = protocolFamily;
329
    this.schema = schema;
330
    this.upv = upv;
331
    this.authenticationAlgorithms = authenticationAlgorithms;
332
    this.publicKeyAlgAndEncodings = publicKeyAlgAndEncodings;
333
    this.attestationTypes = attestationTypes;
334
    this.userVerificationDetails = userVerificationDetails;
335
    this.keyProtection = keyProtection;
336
    this.isKeyRestricted = isKeyRestricted;
337
    this.isFreshUserVerificationRequired = isFreshUserVerificationRequired;
338
    this.matcherProtection = matcherProtection;
339
    this.cryptoStrength = cryptoStrength;
340
    this.attachmentHint = attachmentHint;
341
    this.tcDisplay = tcDisplay;
342
    this.tcDisplayContentType = tcDisplayContentType;
343
    this.tcDisplayPNGCharacteristics = tcDisplayPNGCharacteristics;
344
    this.attestationRootCertificates = attestationRootCertificates;
345
    this.icon = icon;
346
    this.iconDark = iconDark;
347
    this.providerLogoLight = providerLogoLight;
348
    this.providerLogoDark = providerLogoDark;
349
    this.supportedExtensions = supportedExtensions;
350
    this.keyScope = keyScope;
351
    this.multiDeviceCredentialSupport = multiDeviceCredentialSupport;
352
    this.authenticatorGetInfo = authenticatorGetInfo;
353
    this.cxpConfigURL = cxpConfigURL;
354
  }
355
356
  /**
357
   * @see <a
358
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
359
   *     Metadata Statement</a>
360
   */
361
  public Optional<String> getLegalHeader() {
362 1 1. getLegalHeader : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getLegalHeader → SURVIVED
    return Optional.ofNullable(this.legalHeader);
363
  }
364
365
  /**
366
   * @see <a
367
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
368
   *     Metadata Statement</a>
369
   */
370
  public Optional<AAID> getAaid() {
371 1 1. getAaid : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getAaid → SURVIVED
    return Optional.ofNullable(this.aaid);
372
  }
373
374
  /**
375
   * @see <a
376
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
377
   *     Metadata Statement</a>
378
   */
379
  public Optional<AAGUID> getAaguid() {
380 1 1. getAaguid : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getAaguid → SURVIVED
    return Optional.ofNullable(this.aaguid);
381
  }
382
383
  /**
384
   * @see <a
385
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
386
   *     Metadata Statement</a>
387
   */
388
  public Optional<String> getDescription() {
389 1 1. getDescription : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getDescription → SURVIVED
    return Optional.ofNullable(this.description);
390
  }
391
392
  /**
393
   * @see <a
394
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
395
   *     Metadata Statement</a>
396
   */
397
  public Optional<AlternativeDescriptions> getAlternativeDescriptions() {
398 1 1. getAlternativeDescriptions : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getAlternativeDescriptions → SURVIVED
    return Optional.ofNullable(this.alternativeDescriptions);
399
  }
400
401
  /**
402
   * @see <a
403
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
404
   *     Metadata Statement</a>
405
   */
406
  public Optional<Boolean> getIsKeyRestricted() {
407 1 1. getIsKeyRestricted : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getIsKeyRestricted → SURVIVED
    return Optional.ofNullable(this.isKeyRestricted);
408
  }
409
410
  /**
411
   * @see <a
412
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
413
   *     Metadata Statement</a>
414
   */
415
  public Optional<Boolean> getIsFreshUserVerificationRequired() {
416 1 1. getIsFreshUserVerificationRequired : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getIsFreshUserVerificationRequired → SURVIVED
    return Optional.ofNullable(this.isFreshUserVerificationRequired);
417
  }
418
419
  /**
420
   * @see <a
421
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
422
   *     Metadata Statement</a>
423
   */
424
  public Optional<Integer> getCryptoStrength() {
425 1 1. getCryptoStrength : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getCryptoStrength → SURVIVED
    return Optional.ofNullable(this.cryptoStrength);
426
  }
427
428
  /**
429
   * @see <a
430
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
431
   *     Metadata Statement</a>
432
   */
433
  public Optional<Set<AttachmentHint>> getAttachmentHint() {
434 1 1. getAttachmentHint : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getAttachmentHint → SURVIVED
    return Optional.ofNullable(this.attachmentHint);
435
  }
436
437
  /**
438
   * @see <a
439
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
440
   *     Metadata Statement</a>
441
   */
442
  public Optional<String> getTcDisplayContentType() {
443 1 1. getTcDisplayContentType : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getTcDisplayContentType → SURVIVED
    return Optional.ofNullable(this.tcDisplayContentType);
444
  }
445
446
  /**
447
   * @see <a
448
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
449
   *     Metadata Statement</a>
450
   */
451
  public Optional<List<DisplayPNGCharacteristicsDescriptor>> getTcDisplayPNGCharacteristics() {
452 1 1. getTcDisplayPNGCharacteristics : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getTcDisplayPNGCharacteristics → SURVIVED
    return Optional.ofNullable(this.tcDisplayPNGCharacteristics);
453
  }
454
455
  /**
456
   * @see <a
457
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
458
   *     Metadata Statement</a>
459
   */
460
  public Optional<String> getIcon() {
461 1 1. getIcon : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getIcon → SURVIVED
    return Optional.ofNullable(this.icon);
462
  }
463
464
  /**
465
   * @since 2.9.0
466
   * @see <a
467
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-icondark">FIDO
468
   *     Metadata Statement</a>
469
   */
470
  public Optional<String> getIconDark() {
471 1 1. getIconDark : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getIconDark → SURVIVED
    return Optional.ofNullable(this.iconDark);
472
  }
473
474
  /**
475
   * @since 2.9.0
476
   * @see <a
477
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-providerlogolight">FIDO
478
   *     Metadata Statement</a>
479
   */
480
  public Optional<String> getProviderLogoLight() {
481 1 1. getProviderLogoLight : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getProviderLogoLight → SURVIVED
    return Optional.ofNullable(this.providerLogoLight);
482
  }
483
484
  /**
485
   * @since 2.9.0
486
   * @see <a
487
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-providerlogodark">FIDO
488
   *     Metadata Statement</a>
489
   */
490
  public Optional<String> getProviderLogoDark() {
491 1 1. getProviderLogoDark : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getProviderLogoDark → SURVIVED
    return Optional.ofNullable(this.providerLogoDark);
492
  }
493
494
  /**
495
   * @see <a
496
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
497
   *     Metadata Statement</a>
498
   */
499
  public Optional<Set<ExtensionDescriptor>> getSupportedExtensions() {
500 1 1. getSupportedExtensions : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getSupportedExtensions → SURVIVED
    return Optional.ofNullable(this.supportedExtensions);
501
  }
502
503
  /**
504
   * @since 2.9.0
505
   * @see <a
506
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-keyscope">FIDO
507
   *     Metadata Statement</a>
508
   */
509
  public Optional<String> getKeyScope() {
510 1 1. getKeyScope : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getKeyScope → SURVIVED
    return Optional.ofNullable(this.keyScope);
511
  }
512
513
  /**
514
   * @since 2.9.0
515
   * @see <a
516
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-multidevicecredentialsupport">FIDO
517
   *     Metadata Statement</a>
518
   */
519
  public Optional<String> getMultiDeviceCredentialSupport() {
520 1 1. getMultiDeviceCredentialSupport : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getMultiDeviceCredentialSupport → SURVIVED
    return Optional.ofNullable(this.multiDeviceCredentialSupport);
521
  }
522
523
  /**
524
   * @see <a
525
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.0-ps-20210518.html#metadata-statement-format">FIDO
526
   *     Metadata Statement</a>
527
   */
528
  public Optional<AuthenticatorGetInfo> getAuthenticatorGetInfo() {
529 1 1. getAuthenticatorGetInfo : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getAuthenticatorGetInfo → SURVIVED
    return Optional.ofNullable(this.authenticatorGetInfo);
530
  }
531
532
  /**
533
   * @since 2.9.0
534
   * @see <a
535
   *     href="https://fidoalliance.org/specs/mds/fido-metadata-statement-v3.1-ps-20250521.html#dom-metadatastatement-cxpconfigurl">FIDO
536
   *     Metadata Statement</a>
537
   */
538
  public Optional<String> getCxpConfigURL() {
539 1 1. getCxpConfigURL : replaced return value with Optional.empty for com/yubico/fido/metadata/MetadataStatement::getCxpConfigURL → SURVIVED
    return Optional.ofNullable(this.cxpConfigURL);
540
  }
541
}

Mutations

293

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

295

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

296

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

297

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

298

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

299

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

300

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

303

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

306

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

309

1.1
Location : <init>
Killed by : com.yubico.fido.metadata.FidoMds3Spec
negated conditional → KILLED

362

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

371

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

380

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

389

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

398

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

407

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

416

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

425

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

434

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

443

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

452

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

461

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

471

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

481

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

491

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

500

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

510

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

520

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

529

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

539

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

Active mutators

Tests examined


Report generated by PIT 1.15.0