Blame view

doc/README.asn1 1.38 KB
e2c04fafc   AKASHI Takahiro   doc: add README f...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  ASN1
  ====
  
  Abstract Syntax Notation One (or ASN1) is a standard by ITU-T and ISO/IEC
  and used as a description language for defining data structure in
  an independent manner.
  Any data described in ASN1 notation can be serialized (or encoded) and
  de-serialized (or decoded) with well-defined encoding rules.
  
  A combination of ASN1 compiler and ASN1 decoder library function will
  provide a function interface for parsing encoded binary into specific
  data structure:
  1) define data structure in a text file (*.asn1)
  2) define "action" routines for specific "tags" defined in (1)
  3) generate bytecode as a C file (*.asn1.[ch]) from *.asn1 file
     with ASN1 compiler (tools/asn1_compiler)
  4) call a ASN1 decoder (asn1_ber_decoder()) with bytecode and data
  
  Usage of ASN1 compiler
  ----------------------
    asn1_compiler [-v] [-d] <grammar-file> <c-file> <hdr-file>
  
    <grammar-file>:	ASN1 input file
    <c-file>:		generated C file
    <hdr-file>:		generated include file
  
  Usage of ASN1 decoder
  ---------------------
    int asn1_ber_decoder(const struct asn1_decoder *decoder, void *context,
  		       const unsigned char *data, size_t datalen);
  
    @decoder:		bytecode binary
    @context:		context for decoder
    @data:		data to be parsed
    @datalen:		size of data
  
  
  As of writing this, ASN1 compiler and decoder are used to implement
  X509 certificate parser, pcks7 message parser and RSA public key parser
  for UEFI secure boot.