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.
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/serverships verifiers for all four plusApple 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
correctly when tampered with
requireKnownAuthenticatorposturesScope 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
Depends on
#171, which brings in the conformance interface and the local metadata
statements those tools expect.