WebAuthn,获取凭据公钥长度



解析CBORattestationObject后,我现在正在尝试解析authData

这包含:

https://w3c.github.io/webauthn/#authenticator-data

  • 32 字节,rpIdHash
  • 1 字节,flags(包括ATED标志(
  • 4 字节,signCount
  • ? 字节,attestedCredentialData
  • ? 字节,extensions

假设AT标志为 true,则attestedCredentialData从字节 37 开始,并包含:

https://w3c.github.io/webauthn/#sctn-attested-credential-data

  • 16 字节,aaguid
  • 2 字节,credentialIdLength(字节 53 - 55,在许多实现中可见(
  • credentialIdLength bytes,credentialId
  • ? 字节,credentialPublicKey

这意味着我可以获取credentialIdLength,并提取credentialId

但是credentialPublicKey有多长?

我可以读到authData结尾;这就是他们在 https://webauthn.guide/上显示的内容:

const publicKeyBytes = authData.slice(55 + credentialIdLength);

但是,如果您回顾 authData,它可能会在此之后包含extensions数据(如果ED标志为 true(。


我发现证明概述图像对于其中大部分非常有用:

https://w3c.github.io/webauthn/#sctn-attestation

这个问题已经被提出并回答了: WebAuthn - "凭据公钥"的字节长度

简而言之:你无法知道长度。无论如何,解析它的一种方法是从 1(然后是 2、3,... 开始解析多个字节字节(,直到 CBOR 解析成功。

相关内容

  • 没有找到相关文章

最新更新