Objective Systems

ASN1C ASN.1 Compiler

ASN1C ASN.1 컴파일러는 ASN.1 및/또는 XML 스키마(XSD) 소스 사양을 C, C++(새 창에서 열림), C#(새 창에서 열림), Java(새 창에서 열림), Python(새 창에서 열림) 또는 Go(새 창에서 열림) 소스 코드로 변환합니다.

ASN.1 및 XSD 사양을 C, C++, C#, Java, Python, Go 코드로 변환하는 ASN1C 구성도

Overview

서로 다른 Platforms 표준 보안 통신 지원

윈도우, 리눅스, 안드로이드, iOS, macOS, UNIX, Yocto, VxWorks, Desktop, Mobile, 3G/4G/5G/6G,..

  • ITU-T/ISO 인코딩 규칙(BER, CER, DER, OER, PER, UPER, JER(JSON) 또는 XER(XML))을 적용하여 구조체/객체를 완성된 ASN.1 메시지로 변환하거나 그 반대로 변환할 수 있습니다.
  • ASN1C에는 XSD 사양을 ASN.1 사양으로, 또는 그 반대로 변환하는 도구도 포함되어 있습니다.
ASN1C가 데이터 구조와 애플리케이션 코드를 연결해 ASN.1, JSON 또는 XML 메시지를 인코딩하고 디코딩하는 과정

Key capabilities

Platform 빌드 자동화 처리

01

다중 언어 코드 생성

ASN.1에서 C/C++, C#, Java, Python, Go 언어 코드 생성

02

주요 인코딩 규칙

BER, CER, DER, OER, PER, UPER, JER(JSON), XER(XML)

03

자동화 친화적

BER/UPER Encode/Decode 예제 코드, makefile 또는 Project 파일을 자동 생성

Supported scope

프로젝트별 구성

대상 언어, 인코딩 규칙, 개발·배포 OS에 따라 적절한 ASN1C 제품 구성을 확인합니다.

InputASN.1 Schema
OutputPlatform Encode/Decode source code, makefile, Project
RulesBER · PER · OER · XML · JSON
License플랫폼별 상담

Customer references

주요 고객

통신, 자동차, 전자, 공공·연구기관과 소프트웨어 분야의 국내 적용 사례 및 Objective Systems 글로벌 제품 고객 사례를 회사명으로 정리했습니다.

국내 주요 고객·적용 사례

  • ETRI
  • TTA
  • 한국도로공사
  • 한국건설기술연구원
  • 현대오토에버
  • 현대모비스
  • SK텔레콤
  • SK주식회사 C&C
  • KETI
  • 코스콤
  • LG전자
  • LG유플러스
  • LG CNS
  • 삼성전자
  • 삼성SDS
  • 한국전자 인증
  • 포스데이타
  • 한국자동차연구원
  • 오토크립트
  • 한국항공우주연구원
  • AP위성
  • 이씨스
  • 티머니
  • 펜타시스템
  • 이노와이어리스
  • 에이투지오토노머스
  • 큐셀
  • 한컴MDS
  • 서울특별시
  • 제주특별자치도
  • 광주광역시
  • 세종특별자치시
  • K-City
  • 에이블컴
  • 엠큐닉
  • 넥서스커뮤니티
  • 지미션
  • 싸인텔레콤
  • 코스텍시스템
  • 엔제로
  • 보고텍
  • 웨이즈원
  • 클레버로직
  • 라이드플럭스
  • 유비앤에스
  • 아이티코어스
  • 아이티텔레콤
  • 시옷
  • 텔러스
  • 유캐스트
  • 오비고
  • 서돌전자
  • 인텔리빅스
  • 삼지전자
  • 메타빌드
  • 카네비컴
  • 비츠로시스
  • 건아정보기술
  • 네스랩
  • 콘텔라
  • 한솔인티큐브
  • 스파이어테크놀러지
  • 솔루텔리아 아시아
  • SMEC
  • 한솔리드텍
  • 라온텍
  • 모디엠
  • 뱀부스
  • 엘앤씨넷시스
  • 텔레큐브
  • 아이넷테크
  • 에드원
  • 아이네스
  • 아리텔
  • LG화학

Objective Systems 글로벌 제품 고객 사례

  • Apple
  • Boeing
  • Broadcom
  • Cisco Systems
  • Ericsson
  • Google
  • Honeywell
  • Intel
  • Microsoft
  • Motorola
  • Nokia
  • Qualcomm
  • Samsung Electronics
  • Siemens
  • Sony
  • Vodafone

글로벌 목록은 Objective Systems 전체 제품의 고객 사례 중 일부이며 ASN1C 단독 사용 여부를 의미하지 않습니다. 공식 고객 자료 (새 창에서 열림)

Korean technical guide

ASN1C ASN.1 Compiler

ASN.1 표준, ASN1C 컴파일러, 인코딩 규칙과 3GPP API 적용 사례를 한 페이지에서 확인할 수 있습니다.

5G New Radio 네트워크와 ASN1C 지원 언어 이미지

ASN.1 개요 및 필요성

ASN.1(Abstract Syntax Notation One)은 정보의 데이터 구조를 특정 프로그래밍 언어나 플랫폼에 종속되지 않도록 기술하는 국제 표준 표기법입니다. 기본 표기법은 ITU-T X.680 | ISO/IEC 8824-1에 규정되어 있습니다.

서로 다른 시스템은 정수, 문자열, 레코드와 같은 데이터를 서로 다른 방식으로 표현할 수 있습니다. ASN.1은 송신자와 수신자가 공유할 수 있는 추상 데이터 모델을 정의하여 시스템 간 메시지 구조의 일관성을 높입니다.

ASN.1은 INTEGER, OCTET STRING, SEQUENCE, SET, CHOICE 등의 형식을 제공하며, 정의된 데이터는 BER, DER, PER, OER, XER, JER 등 목적에 맞는 인코딩 규칙을 사용해 전송 형식으로 변환할 수 있습니다.

ASN.1 구문의 기본 형식

ASN.1 형식은 타입, 값, 제약 조건과 태그를 사용해 데이터 구조를 정의합니다. BER 계열의 인코딩 결과는 일반적으로 식별자(태그), 길이, 내용으로 구성됩니다. 태그는 Universal, Application, Context-specific, Private 클래스와 음이 아닌 태그 번호를 가지며, constructed 또는 primitive 여부를 나타냅니다. 길이는 definite 형식으로 명시하거나, 허용되는 경우 indefinite 형식을 사용하고 EOC(End-of-Contents)로 내용의 끝을 나타낼 수 있습니다.

BER과 DER

ASN.1은 추상 데이터 구조를 정의하므로 네트워크로 전송하려면 인코딩 규칙을 적용해야 합니다. BER(Basic Encoding Rules)은 ASN.1 값을 바이트열로 인코딩하고 다시 복원하는 기본 규칙을 정의합니다.

DER(Distinguished Encoding Rules)은 BER의 제한된 형태로, 하나의 ASN.1 값이 항상 동일한 바이트열로 표현되도록 규칙을 엄격하게 정의합니다. 따라서 인증서와 전자서명처럼 결정적인 표현이 필요한 분야에 주로 사용됩니다.

BER은 여러 유효한 인코딩 표현을 허용할 수 있지만, DER은 그중 하나의 정규화된 표현만 허용합니다.

ASN1C ASN.1 Compiler

ASN1C는 ASN.1 또는 XML Schema(XSD) 사양을 입력받아 C, C++, C#, Java, Python 또는 Go 소스 코드를 생성하는 컴파일러입니다. 제품 옵션에 따라 BER, CER, DER, PER, UPER, OER, COER, XER(XML), JER(JSON) 등의 인코더와 디코더, 데이터 구조 및 런타임 라이브러리를 생성합니다.

생성된 코드와 런타임 라이브러리를 함께 사용하면 ASN.1 메시지의 인코딩과 디코딩을 애플리케이션에 통합할 수 있습니다. C/C++ 출력은 다양한 운영체제와 임베디드 플랫폼으로 이식할 수 있도록 구성할 수 있습니다.

C++ 및 Java 코드 생성 옵션은 각 언어 환경에 적합한 클래스와 인코딩/디코딩 인터페이스를 제공합니다. 세부 생성 파일과 지원 기능은 선택한 언어와 인코딩 규칙에 따라 달라질 수 있습니다.

ASN1C의 주요 특징은 다음과 같습니다.

  • 생성된 코드에는 별도의 런타임 로열티가 부과되지 않습니다. 단, 구체적인 배포 조건은 구매한 라이선스 계약을 따릅니다.
  • 다양한 플랫폼으로 이식할 수 있는 런타임 라이브러리 소스 코드를 제공합니다.
  • ITU-T X.680 계열에 정의된 ASN.1 구문을 처리합니다.
  • Information Object Specification(X.681)과 Parameterization of ASN.1 Specifications(X.683)을 지원합니다.
  • BER, CER, DER, PER, UPER, OER, COER, XER, JER 등 주요 인코딩 규칙을 지원합니다. 지원 범위는 대상 언어와 제품 옵션에 따라 달라질 수 있습니다.
  • 이전 ASN.1 사양과의 호환이 필요한 경우 제품 문서의 하위 호환성 범위를 확인할 수 있습니다.

ASN1C 8.0

  • C, C++, C#, Java, Python, Go 언어 코드 생성을 지원합니다.
  • Windows, Linux 및 UNIX 계열 환경에서 사용할 수 있는 크로스 플랫폼 도구를 제공합니다. 세부 지원 플랫폼은 제품 버전과 라이선스 옵션에 따라 확인해야 합니다.
  • XML 및 JSON을 포함한 텍스트 기반 인코딩 규칙을 지원합니다.
  • C++용 클래스와 스트림 기반 인터페이스를 제공합니다.
  • Visual Studio 프로젝트 파일 및 명령줄 기반 빌드 작업을 지원합니다.
  • DER(Distinguished Encoding Rules)을 지원합니다.
  • X.509, PKIX, PKCS 등 ASN.1 기반 보안 사양을 위한 코드 생성을 지원합니다.
  • 5G NR 및 LTE 등 3GPP ASN.1 사양을 처리하는 코드 생성에 활용할 수 있습니다.
  • 32비트를 초과하는 대형 정수 형식을 지원합니다.
  • 임베디드 환경을 위한 최적화 및 소형 런타임 옵션을 제공합니다. 평가판과 지원 플랫폼은 제조사 또는 국내 공급사에 문의하십시오.

ASN1C 주요 특징

  • PER(Packed Encoding Rules) 및 UPER(Unaligned PER)을 지원합니다.
  • 런타임 라이브러리 소스 코드를 이용해 다양한 운영 환경에 맞게 이식하거나 사용자 정의할 수 있습니다.
  • 표준 준수: 최신 ITU-T ASN.1 표준과 필요한 범위의 이전 표준을 지원합니다.
  • 유연한 구조: 생성된 소스 코드와 런타임 코드를 다양한 플랫폼에 맞게 구성할 수 있습니다.
  • ASN1C는 ASN.1의 논리적 데이터 모델에 대응하는 언어별 데이터 구조와 인코딩/디코딩 코드를 생성합니다.

ASN1C ASN.1 SDK 적용 사례

TELEMATICS(텔레매틱스)

  • ISO TC204 (Transport Information/Control)
  • C-ITS (차세대 지능형 교통체계)
  • V2X (SAE International Standard J2735)
  • ITS (지능형 교통 시스템)
  • ISO 14827 (ISO14827-MESSAGE)
  • ISO 15784 (ISO15784-MESSAGE)
  • ISO 14906 (EfcModule)
  • Hi-pass 단말기 (DSRC/OBU)
  • 노변기지국 (LCU 안테나)
  • 기지국 (RSE/MCU)
  • 교통정보센터 등 ASN.1 으로 정의된 DATEX-ASN (DatexDataPacket)
  • ITS WAVE : IEEE Standard 1609™ Family (Std 1609.1,1609.2,1609.3,1609.4)

예) ASN.1 Syntax 사용 사례

DatexDataPacket ::= SEQUENCE
{
  datex-Version-number ENUMERATED
  {
    experimental (0),
    version1 (1),
    ...
  },
  datex-Data OCTET STRING ,
  datex-Crc-nbr OCTET STRING (SIZE (2))
}
기본교통정보 교환 기술기준의 교통정보센터와 신호제어 구성도

TELEPHONY(전화 통신)

ASN.1 적용 사례: 5G NR 및 LTE-RRC 메시지 처리

Android 환경에서 LTE-RRC 메시지를 파싱한 결과 화면
-> Android 지원
  • 5G NR (NAS, LTE-RRC, S1AP, X2AP Release 15/16/17)
  • LTE-Advanced (NAS, LTE-RRC, S1AP, X2AP Release 10/11/12/13/14)
  • 3GPP(NBAP, RANAP, RNSAP, RRC Release 10/11/12/13/14/15/16/17)
  • ECMA CSTAp1 / CSTAp2 / CSTAp3
  • IETF PKIX
  • ITU-T H.323
  • GSM TAP3 (Transferred Account Procedure)
  • NGTP
  • TTON
  • Internet FAX T.38
  • Security X.509
  • PKI
  • Network Management SNMP/CMIP
  • Aeronautical Telecommunications Networks 등

3GPP API

3GPP 애플리케이션 프로그래밍 인터페이스(API)는 3GPP 표준 문서에 정의된 프로토콜 메시지를 인코딩하고 디코딩하기 위한 사전 컴파일 및 최적화된 C 함수 라이브러리입니다.

5G NR(LTE-NR-RRC, E1AP, F1AP, NGAP, XnAP, NRPPa) 및 LTE(EUTRA-RRC, S1AP, X2AP, M2AP, M3AP)의 ASN.1 기반 프로토콜을 위한 API를 제공합니다.

LTE/5GS NAS, UTRAN, GERAN 등 ASN.1을 사용하지 않는 일부 Layer 3 프로토콜용 API도 제공합니다.

NAS 및 비(非) ASN.1 API

5G NR ASN.1 API

4G LTE ASN.1 API

NAS(Non-Access Stratum): LTE, 5GS 및 GERAN-RRC

3GPP TS 24.007 24.008 24.011 24.301 24.501 44.018

이동통신 무선 인터페이스 Layer 3: 일반 사항, 코어 네트워크 프로토콜, RRC 및 SMS

NAS/RRC 제공 방식과 문서
구분내용
제품 구성 1ASN1C SDK용 NAS/RRC 애드온: 3GPP 사양으로 정의된 프로토콜의 인코딩 및 디코딩용 C 또는 Java 코드를 생성합니다.
제품 구성 2보안 처리를 포함한 NAS/RRC 독립형 C 기반 DLL: 3GPP 프로토콜 인코딩 및 디코딩용 C 언어 API를 제공합니다. This add-on allows C or Java code to be generated for encoding and decoding 3GPP protocols defined in the above specifications.
문서 1NAS/RRC C 애드온 문서
문서 2NAS 5GS Java 애드온 문서 This DLL provides a C language API for encoding and decoding 3GPP protocols defined in the above specifications.
문서 3NAS/RRC C add-on documentation
문서 4NAS 5GS Java add-on documentation

5G New Radio(NR) API

참고: 아래 패키지는 ASN1C 설치 디렉터리의 c 하위 디렉터리에 압축을 해제해야 합니다.

3GPP TS 38.331

New Radio (NR); Radio Resource Control (RRC); 프로토콜 사양

LTE-RRC NR C API
패키지WindowsLinux
LTE-RRC NR Release 15 C API (v15.17)WindowsLinux
LTE-RRC NR Release 16 C API (v16.8)WindowsLinux
LTE-RRC NR Release 17 C API (v17.0)WindowsLinux
3GPP TS 37.483 (formerly 38.463)

New Radio (NR); E1 애플리케이션 프로토콜 (E1AP)

E1AP C API
패키지WindowsLinux
E1AP Release 15 C API (v15.10)WindowsLinux
E1AP Release 16 C API (v16.9)WindowsLinux
E1AP Release 17 C API (v17.0)WindowsLinux
3GPP TS 38.473

New Radio (NR); F1 애플리케이션 프로토콜 (F1AP)

F1AP C API
패키지WindowsLinux
F1AP Release 15 C API (v15.16)WindowsLinux
F1AP Release 16 C API (v16.9)WindowsLinux
F1AP Release 17 C API (v17.0)WindowsLinux
3GPP TS 38.413 New Radio (NR); NG 애플리케이션 프로토콜 (NGAP)
NGAP C API
패키지WindowsLinux
NGAP Release 15 C API (v15.13)WindowsLinux
NGAP Release 16 C API (v16.9)WindowsLinux
NGAP Release 17 C API (v17.0)WindowsLinux
3GPP TS 38.423

New Radio (NR); Xn 애플리케이션 프로토콜 (XnAP)

XnAP C API
패키지WindowsLinux
XnAP Release 15 C API (v15.15)WindowsLinux
XnAP Release 16 C API (v16.9)WindowsLinux
XnAP Release 17 C API (v17.0)WindowsLinux
3GPP TS 38.455

New Radio (NR); Positioning Protocol A (NRPPa)

NRPPa C API
패키지WindowsLinux
NRPPa Release 15 C API (v15.4)WindowsLinux
NRPPa Release 16 C API (v16.7)WindowsLinux
NRPPa Release 17 C API (v17.0)WindowsLinux

LTE API

NOTE: The packages below should be unzipped in the c subdirectory of your ASN1C installation.

3GPP TS 36.413

Evolved Universal Terrestrial Radio Access Network (E-UTRAN); S1 애플리케이션 프로토콜 (S1AP)

S1AP C API
패키지WindowsLinux
S1AP Release 15 C API (v15.11)WindowsLinux
S1AP Release 16 C API (v16.9)WindowsLinux
S1AP Release 17 C API (v17.0)WindowsLinux
3GPP TS 36.423

Evolved Universal Terrestrial Radio Access Network (E-UTRAN); X2 애플리케이션 프로토콜 (X2AP)

X2AP C API
패키지WindowsLinux
X2AP Release 15 C API (v15.13)WindowsLinux
X2AP Release 16 C API (v16.9)WindowsLinux
X2AP Release 17 C API (v17.0)WindowsLinux
3GPP TS 36.443

Evolved Universal Terrestrial Radio Access Network (E-UTRAN); M2 애플리케이션 프로토콜 (M2AP)

M2AP C API
패키지WindowsLinux
M2AP Release 15 C API (v15.0)WindowsLinux
M2AP Release 16 C API (v16.1)WindowsLinux
M2AP Release 17 C API (v17.0)WindowsLinux
3GPP TS 36.444

Evolved Universal Terrestrial Radio Access Network (E-UTRAN); M3 애플리케이션 프로토콜 (M3AP)

M3AP C API
패키지WindowsLinux
M3AP Release 15 C API (v15.0)WindowsLinux
M3AP Release 16 C API (v16.0)WindowsLinux
M3AP Release 17 C API (v17.0)WindowsLinux

ASN.1 개발 시간을 줄여보세요.

스키마와 목표 언어를 알려주시면 적합한 평가 구성을 안내합니다.