3.1 Regras gerais para codificação


A codificação de um valor de todos os tipos, exceto os externos deve- ra consistir de 4 componentes que deverão aparecer na seguinte ordem:

3.1.1. Os octetos de identificação indicam a classe e número:

       Bits   8   7   6   5   4   3   2   1
            /-------------------------------\
            |   |   |   |   |   |   |   |   |
            |___|___|___|___|___|___|___|___|
            |classe-| | |--numero do rotulo-|
                |     \--------\ 
                |              |
   Universal              00   \--- 0-codificação primitiva
   Application            01        1-codificação complexa
   Especifica ao contexto 10
   Privada                11
   

octetos subsequentes

Quando o número do rótulo não puder ser expresso com apenas 5 bits, usa-se a forma seguinte:

   Bits   8  7  6                                     8
         /---------------\   /-------------\         /-------------\
         | | | |1|1|1|1|1|   |1| | | | | | |   ...   |0| | | | | | |
         \---------------/   \-------------/         \-------------/
            | |               |
       classe |               0-ultimo      numero do rotulo
   codificação|               1-não ultimo  
    primitiva 0
    complexa  1

   
3.1.2. Octetos de comprimento Poderão ser indicados de duas maneiras:

  1. um ou mais octetos indicando o comprimento do conteúdo

    Neste caso, se o comprimento for menor do que 127 o formato será:

       8 7 
      /-----------------\
      |0| comprimento   |
      \-----------------/ 
    

    se o comprimento for maior do que 127

       8 7                     1      8 7         1    8           1
      /--------------------------\   /--------------\ /--------------\
      |1|n octetos subsequentes  |...| | |          | | |            | 
      \--------------------------/   \--------------/ \--------------/  
                                     |-------- comprimento ----------|
       
  2. indicando apenas o final do campo, da seguinte maneira:
       8 7           1
      /---------------\
      |1|0|0|0|0|0|0|0| 
      \---------------/ 
       
    Isto indica que o final do conteudo sera sinalizado por um octeto de fim-de-conteudo.

3.1.3. Octetos de conteúdo

Zero ou mais octetos codificando os valores sendo transmitidos.

3.1.4. Octetos de fim-de-conteudo

Dois octetos zero. Este campo somente estará presente quando o comprimento do conteúdo não for conhecido ao ser iniciada sua transmissão; neste caso, no octeto de comprimento será sinalizada esta forma de delimitação de conteúdo (opção b acima)