2016-12-15 11 views

답변

0

원래 유형을 옥텟 스트림에서 복구하는 유일한 방법은 그것이오고 있음을 아는 것입니다. AFAIK, 귀하의 디코더는 주어진 상황에서 어떤 유형이 기대되는지에 대한 힌트를 제공해야하며, 가장 중요한 것은 암시 적으로 유형 맵에 태그를 붙인 기본 ASN.1 유형에 대한 힌트를 제공해야합니다.

this book을 확인해보십시오.

0

실제 질문은 "암시 적 태그가 사용될 때 BER 디코더가 어떻게해야 할지를 알고 이러한 태그가 디코딩되어야하는 ASN.1 유형을 알려주는 태그를 대체 할 수 있습니까?

디코더가 IMPLICIT 태그를 처리 할 수 ​​있는지 여부는 디코더에 필요한 컨텍스트를 제공하는 ASN.1 사양에 따라 정보가 제공되는지 여부에 따라 달라집니다. 디코더가 태그를 읽을 수 있고 어떤 구성 요소가 해독되어야하는지, 따라서 어떤 유형인지를 확인하기 위해 SEQUENCE, SET 및 CHOICE의 구성 요소에 부과 된 요구 사항이 있습니다. 이것은 ASN.1 명세의 지식을 필요로한다.

대조적으로, ASN.1 사양에 의해 알려지지 않은 일반 BER 디코더는 암시 적 태그에 문제가있을 수 있습니다. 암시 적 태그를 해석하는 데 필요한 컨텍스트가 없기 때문입니다.

0

일반적으로 BER 디코더는 지정된 사양 (스키마)을 기반으로하는 ASN.1 컴파일러에서 생성됩니다. 그런 다음 디코딩 중에 입력 된 인코딩 된 데이터와 함께 사용자는 디코딩 할 유형을 지정합니다. 형식 정보를 사용하면 디코더는 디코딩 할 내용을 알 수 있습니다. 다음과 같이

"암시 적 마커 진행 :

0

첫째, 나는 나 일리아 Etingof 다음 쇼 더 detaills을 보내"이기종 시스템 간의 ASN.1 통신 "의 책을 cheked 모든 다음

:. 명시 적으로 타입의 참조를 통해 언급 또는 간접적으로 도달 태그, 아래의 타입 T에 대해, 그래서 (명시 적 마커가 이전에 발생했을 경우는 제외) UNIVERSAL 클래스 태그 (포함) 다음 발생까지 를 무시됩니다 T :: = [1] IMPLICIT T1

T1 :: = [5] IMPLICIT T2 *

T2 :: = [APPLICATION 0] IMPLICIT INTEGER

태그 만이 [1]로 인코딩되어야한다. 암시 적 태깅의 개념 을 설명하는 또 다른 방법은 IMPLICIT라고 표시된 태그가 뒤에있는 태그 을 덮어 쓰는 것입니다 (반복적 인). 따라서 위의 예에서 tag [1]은 tag [5]를 덮어 쓰고, 은 INT30ER 유형의 기본 태그 [UNIVERSAL 2]를 대체하여 덮어 쓰는 [APPLICATION 0] 태그를 덮어 씁니다.

암시 적 모드에서 태그 유형

디코딩 할 수있는 경우에만 상기 수신 응용 ', 디코더는 인코더가 있었다 같은 ASN.1 모듈에서 생성 (및 왔다 즉 '추상 구문 알고 대부분의 경우입니다. "

그래서 (ASN1 사양)의 협상은 데이터 전송의 시작 부분에서 프레젠테이션 레이아웃에서 수행되어야합니다.