首页 > 解决方案 > WebAuthn - “凭证公钥”的字节长度

问题描述

在 WebAuthn 中,验证器数据包含可变长度,attested credential data后跟 (extensions如果有): WebAuthn 规范中的身份验证器数据架构

由于字段是 CBOR 映射,因此它是attested credential data可变的。credential public key

如果有扩展,如何提前知道该字段的字节长度,以便我可以将没有扩展的截断字段传递给 CBOR 库?

我正在使用的 CBOR 库似乎没有处理额外的字节,而且我对 CBOR 的了解还不够,无法知道是否有从第一个字节计算映射字节长度的技巧(或任何其他技巧)。

标签: bytepublic-keycborwebauthn

解决方案


据我了解,如果不首先使用支持“额外字节”的 CBOR 解码器(或 COSE 密钥解析器)来确定“凭证公钥数据”的结束位置和“扩展数据”的开始位置,就无法提前知道。

在WebAuthn Level 2 Draft中有一个额外的注释讨论了这一点。

确定被证明的凭证数据的长度是可变的,包括在给定前面 credentialId 的长度的情况下确定 credentialPublicKey 的开始位置,然后确定 credentialPublicKey 的长度(另见 [RFC8152] 的第 7 节)。

FWIW,在 WebAuthn 规范的 GitHub 问题中也讨论过https://github.com/w3c/webauthn/issues/1012


推荐阅读