Как проверить COSE-подпись Cardano для конкретного запроса авторизации

Проверка может успешно подтвердить подпись не того сообщения. Восстановите подписанную структуру и отдельно проверьте, что кошелёк подписал запрос именно этой сессии.

Восстановите подписанные байты COSE

Для COSE_Sign1 сохраните исходные байты защищённых заголовков и способ представления нагрузки. Постройте CBOR Sig_structure с согласованными внешними дополнительными данными и проверьте подпись разрешённым алгоритмом по публичному ключу.

Sig_structure = [ "Signature1", protected_headers_bytes, external_aad, payload ]

Если сервер выдал nonce N2, а сообщение содержит N1, корректная подпись N1 не разрешает вход. Проверьте домен, срок и nonce, а также связь ключа с ожидаемым credential адреса по профилю подписания кошелька.

Разберите вложенную и отделённую нагрузку

Если внутри нет payload, нужны точные байты отдельного сообщения. При поддержке хешированной нагрузки примените правила профиля перед сравнением. Не пропускайте подписанные байты через текстовый форматтер, который может поменять нормализацию или переводы строк. cips.cardano.org Cardano CIP-8