WebAuthn Attestation Format Reference

WebAuthn attestation statement formats — packed, tpm, apple, android — with trust model.

Reference for WebAuthn attestation statement formats including packed, tpm, android-key, android-safetynet, fido-u2f, apple and none, with their trust anchor and verification flow.

What is a WebAuthn attestation statement?

It is a signed object an authenticator returns during registration that lets the relying party verify the authenticator's make and model and that the new key pair was generated on genuine hardware. The format is named in the fmt field of the CBOR attestation object, with the signature and certificates in attStmt.

WebAuthn attestation formats

During WebAuthn registration an authenticator can return an attestation statement proving its make, model and that the key was generated in genuine hardware. The fmt field of the CBOR attestation object names the format. This reference covers every standard format, its trust model, and how a relying party verifies it.

How it works

The authenticator returns an attestation object with three parts:

{
  fmt:      "packed",            // the statement format name
  authData: <bytes>,            // RP ID hash, flags, counter, AAGUID, credential
  attStmt:  { alg, sig, x5c }   // format-specific signature + cert chain
}

The relying party hashes the client data, concatenates it with authData, and verifies sig over that data using either the credential public key (self attestation) or the attestation certificate in x5c, then walks the certificate chain to a trusted root (basic / AttCA). The AAGUID in authData identifies the authenticator model and can be matched against the FIDO Metadata Service.

Tips and notes

  • For most consumer sign-ins, request attestation none — it avoids cert verification and the privacy risk of identifying the exact device.
  • packed with x5c is the common enterprise choice when you must confirm an approved authenticator model via the FIDO MDS.
  • tpm attestation carries TPM-specific structures (certInfo, pubArea) and needs a TPM-aware verifier.
  • Always verify the signature and the certificate path; a valid signature from an untrusted cert proves nothing about the hardware.