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