Protocolo

O identificador do dispositivo é o thumbprint da chave pública, e mais nada. Nenhum sinal de navegador entra no cálculo. A implementação canônica mora em shared/; os vetores, em spec/vectors.json.

Três RFCs, uma implementação

  • JCS (RFC 8785). O payload da intent é canonicalizado antes do hash. Duas montagens do mesmo objeto com ordem ou número diferente produzem hash diferente, e o veredito vira payload_mismatch.
  • Thumbprint (RFC 7638). O deviceId é o hash da chave pública JWK, sem user-agent, idioma ou tela.
  • DPoP. Cada chamada do navegador prova posse da chave não exportável, amarrada ao método e à URL. Um hash de payload sem conferência contra a assinatura é pior do que não existir: a trilha afirmaria o que ninguém aprovou.

Os vetores em spec/vectors.json são neutros de linguagem. Qualquer implementação que os satisfaça fala o mesmo protocolo.

SDK do navegador · Rotas de servidor · Documentação