Object Identifier asn.1 인코딩 방법

반응형

OBJECT IDENTIFIER 데이터 유형은 0x06의 값을 갖는 Tag 값으로 시작되는 TLV 형태로 인코딩됩니다.

Object Identifier(OID) 내에서 각 점으로 구분되는 각 정수(=노드)는 다음 규칙에 따라 인코딩됩니다.

  • OID의 첫 두 노드는 1 바이트로 함께 인코딩됩니다. 첫번째 노드에 40을 곱한 값에 두번째 노드의 값을 더합니다.
  • 127 이하의 노드 값은 1 바이트로 인코딩됩니다.
  • 128 이상의 노드 값은 다수의 바이트로 인코딩됩니다. leftmost 바이트의 Bit 7이 1로 인코딩되며, 각 바이트의 Bit 0~6에 인코딩된 값이 포함됩니다.

 

다음은 인증서 요청(Certificate request) 메시지 내에 포함된 ClientId를 인코딩하는 예제입니다.

1.3.6.1.4.1.311.21.20이라는 OID가 0x2b0601040182371514로 인코딩된 것을 확인할 수 있습니다.

06 09                                ; OBJECT_ID (9 Bytes)
|  2b 06 01 04 01 82 37 15  14       ;   1.3.6.1.4.1.311.21.20 
31 4a                                ; SET (4a Bytes)
   30 48                             ; SEQUENCE (48 Bytes)
      02 01                          ; INTEGER (1 Bytes)
      |  09
      0c 23                          ; UTF8_STRING (23 Bytes)
      |  76 69 63 68 33 64 2e 6a     ;   vich3d.j
      |  64 6f 6d 63 73 63 2e 6e     ;   domcsc.n
      |  74 74 65 73 74 2e 6d 69     ;   ttest.mi
      |  63 72 6f 73 6f 66 74 2e     ;   crosoft.
      |  63 6f 6d                    ;   com
      0c 15                          ; UTF8_STRING (15 Bytes)
      |  4a 44 4f 4d 43 53 43 5c     ;   JDOMCSC\
      |  61 64 6d 69 6e 69 73 74     ;   administ
      |  72 61 74 6f 72              ;   rator
      0c 07                          ; UTF8_STRING (7 Bytes)
         63 65 72 74 72 65 71        ;   certreq

 

 

 

댓글

Designed by JB FACTORY