| .\"t |
| .\" Automatically generated by Pandoc 1.19.2.1 |
| .\" |
| .ad l |
| .TH "asn1c" "1" "2017\-09\-01" "ASN.1 Compiler" "Version 0.9.29" |
| .nh \" Turn off hyphenation by default. |
| .SH NAME |
| .PP |
| asn1c \-\- the ASN.1 Compiler |
| .SH SYNOPSIS |
| .PP |
| asn1c [\f[B]\-E\f[] [\f[B]\-F\f[]] | \f[B]\-P\f[] | \f[B]\-R\f[]] |
| .PD 0 |
| .P |
| .PD |
| [\f[B]\-S\f[]\f[I]dir\f[]] [\f[B]\-X\f[]] |
| .PD 0 |
| .P |
| .PD |
| [\f[B]\-W\f[]\f[I]debug\-\f[]...] [\f[B]\-f\f[]\f[I]option\f[]] |
| [\f[B]\-gen\-\f[]\f[I]option\f[]] |
| [\f[B]\-pdu\f[]={\f[B]all\f[]|\f[B]auto\f[]|\f[I]Type\f[]}] |
| .PD 0 |
| .P |
| .PD |
| [\f[B]\-print\-\f[]\f[I]option\f[]] |
| .PD 0 |
| .P |
| .PD |
| \f[I]input\-filenames\f[]... |
| .SH DESCRIPTION |
| .PP |
| asn1c compiles ASN.1 specifications into a set of target language |
| (C/C++) encoders and decoders for BER, DER, PER, XER, OER and other |
| encoding rules. |
| .SH OPTIONS |
| .SS Stage Selection Options |
| .TP |
| .B \-E |
| Run the parsing stage only. |
| Print the reconstructed ASN.1 text. |
| .RS |
| .RE |
| .TP |
| .B \-F |
| Used together with \f[B]\-E\f[], instructs the compiler to stop after |
| the ASN.1 syntax tree fixing stage and dump the reconstructed ASN.1 |
| specification to the standard output. |
| .RS |
| .RE |
| .TP |
| .B \-P |
| Dump the compiled output to the standard output instead of creating the |
| target language files on disk. |
| .RS |
| .RE |
| .TP |
| .B \-R |
| Restrict the compiler to generate only the ASN.1 tables, omitting the |
| usual support code. |
| .RS |
| .RE |
| .TP |
| .B \-S \f[I]directory\f[] |
| Use the specified directory with ASN.1 skeleton files. |
| .RS |
| .RE |
| .TP |
| .B \-X |
| Generate an XML DTD schema for the specified ASN.1 files. |
| .RS |
| .RE |
| .SS Warning Options |
| .TP |
| .B \-Werror |
| Treat warnings as errors; abort if any warning is produced. |
| .RS |
| .RE |
| .TP |
| .B \-Wdebug\-lexer |
| Enable lexer debugging during the ASN.1 parsing stage. |
| .RS |
| .RE |
| .TP |
| .B \-Wdebug\-fixer |
| Enable ASN.1 syntax tree fixer debugging during the fixing stage. |
| .RS |
| .RE |
| .TP |
| .B \-Wdebug\-compiler |
| Enable debugging during the actual compile time. |
| .RS |
| .RE |
| .SS Language Options |
| .TP |
| .B \-fbless\-SIZE |
| Allow \f[C]SIZE()\f[] constraint for \f[C]INTEGER\f[], |
| \f[C]ENUMERATED\f[], and other types for which this constraint is |
| normally prohibited by the standard. |
| This is a violation of ASN.1 standard, and the compiler may fail to |
| produce a meaningful code. |
| .RS |
| .RE |
| .TP |
| .B \-fcompound\-names |
| Using this option prevents name collisions in the target source code by |
| using complex names for target language structures. |
| (Name collisions may occur if the ASN.1 module reuses the same |
| identifiers in multiple contexts). |
| .RS |
| .RE |
| .TP |
| .B \-findirect\-choice |
| When generating code for a \f[C]CHOICE\f[] type, compile the |
| \f[C]CHOICE\f[] members as indirect pointers instead of declaring them |
| inline. |
| Consider using this option together with \f[B]\-fno\-include\-deps\f[] |
| to prevent circular references. |
| .RS |
| .RE |
| .TP |
| .B \-fincludes\-quoted |
| Refer to header files in \f[C]#include\f[]s using |
| \f[B]"\f[]double\f[B]"\f[] instead of \f[B]<\f[]angle\f[B]>\f[] quotes. |
| .RS |
| .RE |
| .TP |
| .B \-fknown\-extern\-type=\f[I]name\f[] |
| Pretend the specified type is known. |
| The compiler will assume the target language source files for the given |
| type have been provided manually. |
| .RS |
| .RE |
| .TP |
| .B \-fline\-refs |
| Include ASN.1 module\[aq]s line numbers in generated code comments. |
| .RS |
| .RE |
| .TP |
| .B \-fno\-constraints |
| Do not generate ASN.1 subtype constraint checking code. |
| This may make a shorter executable. |
| .RS |
| .RE |
| .TP |
| .B \-fno\-include\-deps |
| Do not generate courtesy #include lines for non\-critical type |
| dependencies. |
| Helps prevent namespace collisions. |
| .RS |
| .RE |
| .TP |
| .B \-funnamed\-unions |
| Enable unnamed unions in the definitions of target language\[aq]s |
| structures. |
| .RS |
| .RE |
| .TP |
| .B \-fwide\-types |
| Use the unbounded size data types (\f[C]INTEGER_t\f[], |
| \f[C]ENUMERATED_t\f[], \f[C]REAL_t\f[]) by default, instead of using the |
| native machine\[aq]s data types (long, double). |
| .RS |
| .RE |
| .SS Codecs Generation Options |
| .TP |
| .B \-gen\-OER |
| Generate the Octet Encoding Rules (OER) support code. |
| .RS |
| .RE |
| .TP |
| .B \-gen\-PER |
| Generate the Packed Encoding Rules (PER) support code. |
| .RS |
| .RE |
| .TP |
| .B \-pdu={all|auto|\f[I]Type\f[]} |
| Create a PDU table for specified types, or discover Protocol Data Units |
| automatically. |
| In case of \f[B]\-pdu=all\f[], all ASN.1 types defined in all modules |
| will form a PDU table. |
| In case of \f[B]\-pdu=auto\f[], all types not referenced by any other |
| type will form a PDU table. |
| If \f[I]Type\f[] is an ASN.1 type identifier, the identifier is added to |
| the generated PDU table. |
| The last form may be specified multiple times to add any number of PDUs. |
| .RS |
| .RE |
| .SS Output Options |
| .TP |
| .B \-print\-constraints |
| When \f[B]\-EF\f[] options are also specified, this option forces the |
| compiler to explain its internal understanding of subtype constraints. |
| .RS |
| .RE |
| .TP |
| .B \-print\-lines |
| Generate "\f[C]\-\-\ #line\f[]" comments in \f[B]\-E\f[] output. |
| .RS |
| .RE |
| .SH TRANSFER SYNTAXES |
| .PP |
| The ASN.1 family of standards define a number of ways to encode data, |
| including byte\-oriented (e.g., BER), bit\-oriented (e.g., PER), and |
| textual (e.g., XER). |
| Some encoding variants (e.g., DER) are just stricter variants of the |
| more general encodings (e.g., BER). |
| .PP |
| The interoperability table below specifies which API functions can be |
| used to exchange data in a compatible manner. |
| If you need to \f[I]produce\f[] data conforming to the standard |
| specified in the column 1, use the API function in the column 2. |
| If you need to \f[I]process\f[] data conforming to the standard(s) |
| specified in the column 3, use the API function specified in column 4. |
| See the \f[C]asn1c\-usage.pdf\f[] for details. |
| .PP |
| .TS |
| tab(@); |
| lw(14.6n) lw(18.5n) lw(13.6n) lw(13.6n). |
| T{ |
| Encoding |
| T}@T{ |
| API function |
| T}@T{ |
| Understood by |
| T}@T{ |
| API function |
| T} |
| _ |
| T{ |
| BER |
| T}@T{ |
| der_encode() |
| T}@T{ |
| BER |
| T}@T{ |
| ber_decode() |
| T} |
| T{ |
| DER |
| T}@T{ |
| der_encode() |
| T}@T{ |
| DER, BER |
| T}@T{ |
| ber_decode() |
| T} |
| T{ |
| CER |
| T}@T{ |
| \f[I]not supported\f[] |
| T}@T{ |
| CER, BER |
| T}@T{ |
| ber_decode() |
| T} |
| T{ |
| BASIC\-OER |
| T}@T{ |
| oer_encode() |
| T}@T{ |
| *\-OER |
| T}@T{ |
| oer_decode() |
| T} |
| T{ |
| CANONICAL\-OER |
| T}@T{ |
| oer_encode() |
| T}@T{ |
| *\-OER |
| T}@T{ |
| oer_decode() |
| T} |
| T{ |
| BASIC\-UPER |
| T}@T{ |
| uper_encode() |
| T}@T{ |
| *\-UPER |
| T}@T{ |
| uper_decode() |
| T} |
| T{ |
| CANONICAL\-UPER |
| T}@T{ |
| uper_encode() |
| T}@T{ |
| *\-UPER |
| T}@T{ |
| uper_decode() |
| T} |
| T{ |
| *\-APER |
| T}@T{ |
| \f[I]not supported\f[] |
| T}@T{ |
| *\-APER |
| T}@T{ |
| \f[I]not supported\f[] |
| T} |
| T{ |
| BASIC\-XER |
| T}@T{ |
| xer_encode(...) |
| T}@T{ |
| *\-XER |
| T}@T{ |
| xer_decode() |
| T} |
| T{ |
| CANONICAL\-XER |
| T}@T{ |
| xer_encode (XER_F_CANONICAL) |
| T}@T{ |
| *\-XER |
| T}@T{ |
| xer_decode() |
| T} |
| .TE |
| .PP |
| *) Asterisk means both BASIC and CANONICAL variants. |
| .SH SEE ALSO |
| .PP |
| \f[C]unber\f[](1), \f[C]enber\f[](1). |
| .SH AUTHORS |
| Lev Walkin <vlm@lionet.info>. |