2011-10-15 21 views
8

estoy encontrando una gran cantidad de información contradictoria con respecto al valor de etiqueta para la secuencia (DE) ASN.1 tipo de datos:ASN.1 SECUENCIA (DE) valor de la etiqueta real de

Wikipedia afirma que es a la vez 0x10 y 0x30:

http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One -> 0x30

http://en.wikipedia.org/wiki/Basic_Encoding_Rules -> 0x10

de acuerdo con Microsoft es 0x30:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb540799%28v=VS.85%29.aspx

Y en las fuentes BouncyCastle uno puede encontrar:

public const int Sequence = 0x10; 

Por lo tanto, es básicamente un empate entre 0x10 y 0x30. ¿Sabes que el valor real es o me falta algo?

Respuesta

13

A BER "etiqueta" codificada se compone de varios campos de bits:

 
--------------------------------- 
| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 
--------------------------------- 
|Class |P/C| Tag Number  | 
--------------------------------- 
  • El número de etiqueta para una secuencia (en la clase universal) es 0x10.
  • Una secuencia es un tipo construido, haciendo que el P/bit 1
  • Class C Universal es 0
  • Esto hace que todo el octeto 0x30

nota que hay muchas maneras de codificar una secuencia en la BER/DER/CER, depende de la ASN.1 exacta utilizada. p.ej. algunos protocolos pueden anular la clase y especificar una secuencia como clase específica de la aplicación, y/o puede especificar su propio número de etiqueta si se utiliza el etiquetado implícito.

Puede leer la especificación de codificación BER here

+0

Gracias por la explicación detallada! – Krassi

Cuestiones relacionadas