Skip to content

Exercise all four required attestation formats against real fixtures #210

Description

@Bccorb

Part of #155. Session 6. Split out of #169.

Problem

#169 listed "all four required formats verify correctly" as acceptance, and that
part was not done. #168 and #169 wired attestation and the metadata service, but
nothing exercises the individual attestation statement formats.

FIDO Server Requirements v2.3 requires a server to support Packed, TPM, U2F and
Android SafetyNet. @simplewebauthn/server ships verifiers for all four plus
Apple and Android Key, and they are now reachable under
authenticator_policy.attestation: 'direct', but no test drives any of them.

This is currently recorded only in the body of the pull request that closed
#168 and #169, which is not somewhere work gets found.

Why it was deferred

Exercising a format end to end needs real attestation fixtures: a genuine
statement, its certificate chain, and a matching metadata entry. Hand-rolling
those is close to reimplementing the authenticator. The FIDO conformance tools
supply them, which is why this belongs beside #171 and #172 rather than in the
change that enabled attestation.

What to do

  • Take the attestation fixtures the conformance tools provide
  • Cover Packed, TPM, U2F and Android Key, each verifying and each failing
    correctly when tampered with
  • Cover a statement whose AAGUID is absent from the metadata service, in both
    requireKnownAuthenticator postures

Scope change: Android SafetyNet is out, Android Key is in

Amended 2026-09-03. SafetyNet cannot be covered, for two independent reasons
recorded in full in the comment below: the conformance tools no longer emit a
SafetyNet statement, and the verifier refuses any statement more than sixty
seconds old, so a committed fixture could only ever pass against a faked clock.

Android Key takes its place. It is a real attestation format with a real
statement from the same run, and covering it also pins the vendor root
certificate handling that #253 introduced.

If SafetyNet has to appear in the certification submission itself, that is a
question for the Certification Secretariat about what FIDO Server Requirements
v2.3 still expects in practice. It is not an engineering task in this repository.

Acceptance

  • Packed, TPM, U2F and Android Key are each exercised against a real statement
  • A tampered statement is refused
  • The metadata-absent path is covered in both postures

Depends on

#171, which brings in the conformance interface and the local metadata
statements those tools expect.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P0Highest: FIDO2 certification trackenhancementNew feature or requestfido2FIDO Functional Certification track, see #155

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions