WebAuthn,获取credentialPublicKey长度

WebAuthn, getting the credentialPublicKey length

在解析 CBOR attestationObject 之后,我现在正在尝试解析 authData

这包含:

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

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

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

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

但是credentialPublicKey有多长?

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

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

但是,如果您回头看看 authData,它可能在此之后包含 extensions 数据(如果 ED 标志为真)。


我发现证明概览图片对其中的大部分内容非常有用:

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

问题已被提出并回答:

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