Pular para o conteúdo
ecdsa.com
OpenSSL 3.x CLI (asn1parse, d2i loaders)CLI do OpenSSL

Mensagem de erro

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

Reproduzido no OpenSSL 3.6; o OpenSSL 1.1.x imprime a mesma falha como “error:0D07209B:asn1 encoding routines:ASN1_get_object:too long”. O muito buscado “header too long” (error:0680007B no OpenSSL 3, error:0D07207B no 1.1.x) é um erro da mesma família: a entrada termina antes que o próprio cabeçalho de tag e comprimento esteja completo — um arquivo vazio ou de um byte, ou um cabeçalho cortado no meio do comprimento.

O que significa

O parser DER leu o que deveria ser um cabeçalho ASN.1 de tag e comprimento e obteve um comprimento maior que os dados disponíveis — o sintoma clássico de que “estes bytes não são DER”. Normalmente a entrada é texto base64, PEM ou dados truncados sendo interpretados como DER binário, e não uma estrutura com um defeito sutil.

Por que acontece

Como corrigir

  1. 1.

    Adequar o formato da entrada ao parser

    Decodifique o base64 primeiro ou informe à ferramenta que a entrada é PEM. O asn1parse espera entrada PEM por padrão; -inform der serve só para binário de verdade.

    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.

    Conferir os tamanhos antes do parsing

    Para uma assinatura ECDSA P-256 em DER, espere ~70–72 bytes começando com 0x30. Uma “assinatura” de 96 bytes provavelmente é base64; 64 bytes são r‖s raw, que não é DER de forma alguma.

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

    Se for uma assinatura raw r‖s, convertê-la

    O JWS e a WebCrypto geram assinaturas ECDSA raw de 64 bytes, que nenhum parser DER aceita. O conversor abaixo transforma raw em DER (e vice-versa) e mostra os inteiros r e s — cole os bytes e veja qual formato você tem de fato.

Erros relacionados

Ver toda a base de erros de assinatura