Перейти к содержимому
ecdsa.com
OpenSSL 3.x CLI (asn1parse, d2i loaders)OpenSSL CLI

Сообщение об ошибке

error:0680009B:asn1 encoding routines:ASN1_get_object:too long

Воспроизведено на OpenSSL 3.6; OpenSSL 1.1.x выводит ту же ошибку как «error:0D07209B:asn1 encoding routines:ASN1_get_object:too long». Ошибка «header too long», которую часто ищут (error:0680007B в OpenSSL 3, error:0D07207B в 1.1.x), — родственная: входные данные заканчиваются раньше, чем завершится сам заголовок с тегом и длиной. Так бывает с пустым или однобайтовым файлом либо с заголовком, оборванным посреди поля длины.

Что это означает

DER-парсер прочитал то, что должно быть заголовком ASN.1 (тег и длина), и получил длину, превышающую объём доступных данных, — классический признак того, что «эти байты не DER». Обычно входные данные — это текст base64, PEM или обрезанные данные, которые разбирают как двоичный DER, а не структура с едва заметной ошибкой.

Почему это происходит

Как исправить

  1. 1.

    Согласуйте формат входных данных с парсером

    Сначала декодируйте base64 или сообщите инструменту, что это PEM. По умолчанию asn1parse ожидает входные данные в формате PEM; -inform der нужен только для настоящих двоичных данных.

    bash
    # base64 signature/blob → DER, then parse
    openssl base64 -d -in sig.b64 | openssl asn1parse -inform der
    
    # PEM object: let asn1parse handle the armor itself
    openssl asn1parse -in cert.pem
  2. 2.

    Проверяйте размер перед разбором

    Подпись ECDSA P-256 в DER занимает около 70–72 байт и начинается с 0x30. 96-байтовая «подпись», скорее всего, закодирована в base64, а 64 байта — это формат raw r‖s, который вовсе не DER.

    bash
    wc -c < sig.der
    head -c 8 sig.der | xxd   # 30 44/45/46 ... → DER SEQUENCE
  3. 3.

    Если это подпись в формате raw r‖s, преобразуйте её

    JWS и WebCrypto выдают 64-байтовые подписи ECDSA в формате raw, которые не примет ни один DER-парсер. Конвертер ниже преобразует raw в DER (и обратно) и показывает целые числа r и s: вставьте байты и посмотрите, какой формат у вас на самом деле.

Связанные ошибки

Открыть всю базу ошибок подписей