Skip to content

feat(jans-fido2): decide whether to implement or formally drop android-safetynet attestation #14400

Description

@imran-ishaq

Is your feature request related to a problem? Please describe.
jans-fido2 does not actually support the android-safetynet attestation format. The only trace of it is an unused
Google sample class (google/safetynet/AttestationStatement.java) that nothing references — there is no
android-safetynet entry in the AttestationFormat enum, no processor, and no registration in the attestation processor
factory. As a result an android-safetynet attestation is effectively unhandled.

At the same time the format is being retired:

  • Google's SafetyNet Attestation API is deprecated and being discontinued in favour of the Play Integrity API.
  • Newer versions of the FIDO Conformance Test Tool have removed android-safetynet from the tested formats.

Because implementing a deprecated format is potentially throwaway work, whether we do anything here is a product decision
that needs to be made before any code is written.

Describe the solution you'd like
A decision on the path forward, driven by one question:

  1. Does the FIDO Conformance Test Tool version we are targeting still include android-safetynet test cases?
    (Confirming the target tool version determines whether the format is in scope at all.)
  2. If the target version does not test it (or we accept its deprecation): formally drop android-safetynet — remove the
    dead sample class and document that the format is unsupported — rather than carry a half-present, deprecated format.
  3. If the target version does require it: implement a full processor — validate the SafetyNet JWS response, verify its
    certificate chain to the Google attestation root, confirm nonce == hash(authenticatorData ‖ clientDataHash), and
    check the integrity verdict — accepting the dependency on a deprecated Google API.

Describe alternatives you've considered

  • Implement it proactively now — rejected for the moment: likely throwaway if the target tool version has dropped it,
    and it ties us to a deprecated Google API.
  • Leave the dead sample class as-is — rejected: it makes the format look partially supported, would fail conformance
    if the tool still tests it, and is confusing to maintainers.

Additional context
Part of the FIDO2 conformance effort (#9640). This is the one remaining conformance item that is a decision rather
than a coding task; it is best settled once the exact conformance-tool version is confirmed, since that determines
whether android-safetynet is in scope. Once decided, the follow-up is either a small "remove + document" change or a
new attestation processor.

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions