id-ce-cRLDistributionPoints Pregunta de codificación ASN.1 / DER

0

Tengo un archivo - test.pem - con el siguiente contenido:

-----BEGIN CERTIFICATE-----
MBIwEKAOoAwwCqMIMAZhBEFCQ0Q=
-----END CERTIFICATE-----

openssl asn1parse -inform PEM -in test.pem -i devuelve lo siguiente:

    0:d=0  hl=2 l=  18 cons: SEQUENCE
    2:d=1  hl=2 l=  16 cons:  SEQUENCE
    4:d=2  hl=2 l=  14 cons:   cont [ 0 ]
    6:d=3  hl=2 l=  12 cons:    cont [ 0 ]
    8:d=4  hl=2 l=  10 cons:     SEQUENCE
   10:d=5  hl=2 l=   8 cons:      cont [ 3 ]
   12:d=6  hl=2 l=   6 cons:       SEQUENCE
   14:d=7  hl=2 l=   4 cons:        appl [ 1 ]
Error in encoding
19480:error:0D07209B:asn1 encoding routines:ASN1_get_object:too long:asn1_lib.c:142:

Esto es a lo que corresponde en hexadecimal:

00000000  30:10:30:0e:a0:0c:a0:0a:30:08:a3:06:30:04:61:02  0.0.....0...0.a.
00000010  58:58                                            XX

Descodificándolo a mano, obtengo esto:

SEQUENCE {
  SEQUENCE {
    [0] {
      [0] {
        SEQUENCE {
          [3] {
            SEQUENCE {
              [APPLICATION 1] XX
            }
          }
        }
      }
    }
  }
}

Así me parece que funciona. ¿Por qué no le gusta asn1parse? Aquí está el mapeo ASN.1 al que corresponde:

enlace

    
pregunta compcert 14.02.2012 - 14:08
fuente

1 respuesta

2

Las definiciones publicadas aquí a través del enlace están incompletas, pero después de proporcionar definiciones para todos los tipos no definidos, recibo un mensaje de error similar de la utilidad OSS Nokalva ASN.1 Studio. El último byte que muestra aquí es una longitud (58 hex 88 decimal), pero según el segundo byte (hex 10, dec 16), la longitud total de la codificación es 16, por lo que no se pueden encontrar 88 bytes más en el búfer basado en esa longitud exterior, por lo tanto, el mensaje de error al encontrar esa longitud de 88.

Paul

    
respondido por el Paul Thorpe 15.02.2012 - 21:47
fuente

Lea otras preguntas en las etiquetas