WebAuthn - длина байта открытого ключа доступа

В WebAuthn данные аутентификатора содержат переменную длину attested credential data с последующим extensions если есть:

attested credential data делается переменным из-за credential public key поле, которое является картой CBOR.

В случае, если есть расширения, как заранее узнать длину байта этого поля, чтобы я мог передать это поле обрезанным без расширений в библиотеку CBOR?

Библиотека CBOR, которую я использую, похоже, не обрабатывает лишние байты, и я недостаточно знаю CBOR, чтобы знать, есть ли хитрость для вычисления длины в байтах карты из ее первых байтов (или любой другой хитрости).

1 ответ

Решение

Из того, что я понимаю, нет способа узнать заранее без использования декодера CBOR (или анализатора ключей COSE), поддерживающего сначала "дополнительные байты", чтобы определить, где заканчиваются "данные открытого ключа учетных данных" и где начинаются "данные расширения".

Существует дополнительная записка, в которой обсуждается именно это в проекте редакции (еще не в рекомендации кандидата).

Определение длины аттестованных учетных данных, которая является переменной, включает в себя определение начального местоположения credentialPublicKey с учетом длины предыдущего credentialId, а затем определение длины credentialPublicKey (см. Также Раздел 7 в [RFC8152]).

FWIW, также обсуждаемый в выпуске GitHub спецификации WebAuthn https://github.com/w3c/webauthn/issues/1012

Другие вопросы по тегам