Object Identifier asn.1 인코딩 방법
- 프로그래밍/C 프로그래밍
- 2021. 2. 11.
반응형
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
'프로그래밍 > C 프로그래밍' 카테고리의 다른 글
__attribute__((visibility("default"))) (0) | 2022.04.10 |
---|---|
빌드 에러 - undefined reference to mp_prime_is_prime (0) | 2021.03.25 |
실행 에러 - free(): invalid size (0) | 2021.03.24 |
빌드 에러 - undefined reference to log10f (0) | 2021.03.22 |
C 프로그래밍 : 두 GPS 좌표간 목적지 방위각(bearing) 계산하기 (0) | 2020.04.29 |
C 프로그래밍 : 두 GPS 좌표간 거리(distance) 구하기 (3) | 2020.04.29 |
C 프로그래밍 : 네트워크 인터페이스 MAC 주소 문자열을 바이트열로 변환 (2) | 2020.02.13 |
C 프로그래밍 : MAC 주소 출력 매크로 - MAC 주소 출력문을 간단하게. (0) | 2020.02.12 |