다중 언어 코드 생성
ASN.1에서 C/C++, C#, Java, Python, Go 언어 코드 생성
Objective Systems
ASN1C ASN.1 컴파일러는 ASN.1 및/또는 XML 스키마(XSD) 소스 사양을 C, C++(새 창에서 열림), C#(새 창에서 열림), Java(새 창에서 열림), Python(새 창에서 열림) 또는 Go(새 창에서 열림) 소스 코드로 변환합니다.
Overview
윈도우, 리눅스, 안드로이드, iOS, macOS, UNIX, Yocto, VxWorks, Desktop, Mobile, 3G/4G/5G/6G,..
Key capabilities
ASN.1에서 C/C++, C#, Java, Python, Go 언어 코드 생성
BER, CER, DER, OER, PER, UPER, JER(JSON), XER(XML)
BER/UPER Encode/Decode 예제 코드, makefile 또는 Project 파일을 자동 생성
Supported scope
대상 언어, 인코딩 규칙, 개발·배포 OS에 따라 적절한 ASN1C 제품 구성을 확인합니다.
Customer references
통신, 자동차, 전자, 공공·연구기관과 소프트웨어 분야의 국내 적용 사례 및 Objective Systems 글로벌 제품 고객 사례를 회사명으로 정리했습니다.
글로벌 목록은 Objective Systems 전체 제품의 고객 사례 중 일부이며 ASN1C 단독 사용 여부를 의미하지 않습니다. 공식 고객 자료 (새 창에서 열림)
Korean technical guide
ASN.1 표준, ASN1C 컴파일러, 인코딩 규칙과 3GPP API 적용 사례를 한 페이지에서 확인할 수 있습니다.
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 형식은 타입, 값, 제약 조건과 태그를 사용해 데이터 구조를 정의합니다. BER 계열의 인코딩 결과는 일반적으로 식별자(태그), 길이, 내용으로 구성됩니다. 태그는 Universal, Application, Context-specific, Private 클래스와 음이 아닌 태그 번호를 가지며, constructed 또는 primitive 여부를 나타냅니다. 길이는 definite 형식으로 명시하거나, 허용되는 경우 indefinite 형식을 사용하고 EOC(End-of-Contents)로 내용의 끝을 나타낼 수 있습니다.
ASN.1은 추상 데이터 구조를 정의하므로 네트워크로 전송하려면 인코딩 규칙을 적용해야 합니다. BER(Basic Encoding Rules)은 ASN.1 값을 바이트열로 인코딩하고 다시 복원하는 기본 규칙을 정의합니다.
DER(Distinguished Encoding Rules)은 BER의 제한된 형태로, 하나의 ASN.1 값이 항상 동일한 바이트열로 표현되도록 규칙을 엄격하게 정의합니다. 따라서 인증서와 전자서명처럼 결정적인 표현이 필요한 분야에 주로 사용됩니다.
BER은 여러 유효한 인코딩 표현을 허용할 수 있지만, DER은 그중 하나의 정규화된 표현만 허용합니다.
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 코드 생성 옵션은 각 언어 환경에 적합한 클래스와 인코딩/디코딩 인터페이스를 제공합니다. 세부 생성 파일과 지원 기능은 선택한 언어와 인코딩 규칙에 따라 달라질 수 있습니다.
DatexDataPacket ::= SEQUENCE
{
datex-Version-number ENUMERATED
{
experimental (0),
version1 (1),
...
},
datex-Data OCTET STRING ,
datex-Crc-nbr OCTET STRING (SIZE (2))
}
ASN.1 적용 사례: 5G NR 및 LTE-RRC 메시지 처리
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도 제공합니다.
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
| 구분 | 내용 |
|---|---|
| 제품 구성 1 | ASN1C 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. |
| 문서 1 | NAS/RRC C 애드온 문서 |
| 문서 2 | NAS 5GS Java 애드온 문서 This DLL provides a C language API for encoding and decoding 3GPP protocols defined in the above specifications. |
| 문서 3 | NAS/RRC C add-on documentation |
| 문서 4 | NAS 5GS Java add-on documentation |
참고: 아래 패키지는 ASN1C 설치 디렉터리의 c 하위 디렉터리에 압축을 해제해야 합니다.
New Radio (NR); Radio Resource Control (RRC); 프로토콜 사양
| 패키지 | Windows | Linux |
|---|---|---|
| LTE-RRC NR Release 15 C API (v15.17) | Windows | Linux |
| LTE-RRC NR Release 16 C API (v16.8) | Windows | Linux |
| LTE-RRC NR Release 17 C API (v17.0) | Windows | Linux |
New Radio (NR); E1 애플리케이션 프로토콜 (E1AP)
| 패키지 | Windows | Linux |
|---|---|---|
| E1AP Release 15 C API (v15.10) | Windows | Linux |
| E1AP Release 16 C API (v16.9) | Windows | Linux |
| E1AP Release 17 C API (v17.0) | Windows | Linux |
New Radio (NR); F1 애플리케이션 프로토콜 (F1AP)
| 패키지 | Windows | Linux |
|---|---|---|
| F1AP Release 15 C API (v15.16) | Windows | Linux |
| F1AP Release 16 C API (v16.9) | Windows | Linux |
| F1AP Release 17 C API (v17.0) | Windows | Linux |
| 패키지 | Windows | Linux |
|---|---|---|
| NGAP Release 15 C API (v15.13) | Windows | Linux |
| NGAP Release 16 C API (v16.9) | Windows | Linux |
| NGAP Release 17 C API (v17.0) | Windows | Linux |
New Radio (NR); Xn 애플리케이션 프로토콜 (XnAP)
| 패키지 | Windows | Linux |
|---|---|---|
| XnAP Release 15 C API (v15.15) | Windows | Linux |
| XnAP Release 16 C API (v16.9) | Windows | Linux |
| XnAP Release 17 C API (v17.0) | Windows | Linux |
New Radio (NR); Positioning Protocol A (NRPPa)
| 패키지 | Windows | Linux |
|---|---|---|
| NRPPa Release 15 C API (v15.4) | Windows | Linux |
| NRPPa Release 16 C API (v16.7) | Windows | Linux |
| NRPPa Release 17 C API (v17.0) | Windows | Linux |
NOTE: The packages below should be unzipped in the c subdirectory of your ASN1C installation.
Evolved Universal Terrestrial Radio Access Network (E-UTRAN); S1 애플리케이션 프로토콜 (S1AP)
| 패키지 | Windows | Linux |
|---|---|---|
| S1AP Release 15 C API (v15.11) | Windows | Linux |
| S1AP Release 16 C API (v16.9) | Windows | Linux |
| S1AP Release 17 C API (v17.0) | Windows | Linux |
Evolved Universal Terrestrial Radio Access Network (E-UTRAN); X2 애플리케이션 프로토콜 (X2AP)
| 패키지 | Windows | Linux |
|---|---|---|
| X2AP Release 15 C API (v15.13) | Windows | Linux |
| X2AP Release 16 C API (v16.9) | Windows | Linux |
| X2AP Release 17 C API (v17.0) | Windows | Linux |
Evolved Universal Terrestrial Radio Access Network (E-UTRAN); M2 애플리케이션 프로토콜 (M2AP)
| 패키지 | Windows | Linux |
|---|---|---|
| M2AP Release 15 C API (v15.0) | Windows | Linux |
| M2AP Release 16 C API (v16.1) | Windows | Linux |
| M2AP Release 17 C API (v17.0) | Windows | Linux |
Evolved Universal Terrestrial Radio Access Network (E-UTRAN); M3 애플리케이션 프로토콜 (M3AP)
| 패키지 | Windows | Linux |
|---|---|---|
| M3AP Release 15 C API (v15.0) | Windows | Linux |
| M3AP Release 16 C API (v16.0) | Windows | Linux |
| M3AP Release 17 C API (v17.0) | Windows | Linux |