A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | keyword | Type code | Tag | Source syntax | Binary structure | Origin | Binary content size | Binary content description | |||||||||||||||||||||
2 | End of content | 00 | none | none | None | X.690 | 0 bytes | This indicates the end of an object with subobjects | |||||||||||||||||||||
3 | Boolean | 01 | #t or #f | tag only | Bytes | X.690 | 1 byte | 00 is false, FF is true | |||||||||||||||||||||
4 | Fixed integer | 02 | none | Scheme integer | Bytes | X.690 | 1 or more bytes | Big-endian | |||||||||||||||||||||
5 | Bit string | 03 | #bits | tagged bytevector | Bytes | X.690 | 1 or more bytes | 1st byte is number of unused bits, remainder is big-endian bits | |||||||||||||||||||||
6 | Bytevector | 04 | none | hex digits in braces | Bytes | X.690 | 0 or more bytes | Raw bytes | |||||||||||||||||||||
7 | Null | 05 | #n | tag only | Bytes | X.690 | 0 bytes | Note: a unique object, not the same as empty list or false | |||||||||||||||||||||
8 | OID | 06 | #oid | tagged list | Bytes | X.690 | 1 or more bytes | See below | |||||||||||||||||||||
9 | Decimal float | 09 | #dec | Inexact number | Bytes | X.690 | 0 or more bytes | See below | |||||||||||||||||||||
10 | String | 0C | none | basic string | Bytes | X.690 | 0 or more bytes | UTF-8 encoding | |||||||||||||||||||||
11 | Relative OID | 13 | #roid | tagged list | Bytes | X.690 | 0 or more bytes | See below | |||||||||||||||||||||
12 | 8601 datetime | 18 | #date | tagged string | Bytes | X.690 | 15 or more bytes | yyyymddhhmmss[.s+]Z | |||||||||||||||||||||
13 | ISO 8601 time | 1F 20 | #time | string | Bytes | X.690 | 0 or more bytes | hhmmss[.s+] | |||||||||||||||||||||
14 | 8601 duration | 1F 22 | #dur | tagged string | Bytes | X.690 | 2 or more bytes | YnMnWnDnTHnMnSn[.n+] | |||||||||||||||||||||
15 | List (sequence) | 20 | none | tagged list | Subobjects | X.690 | 0 or more objects | List elements in order | |||||||||||||||||||||
16 | Set | 21 | #set | tagged list | Subobjects | X.690 | 0 or more objects | Elements in any order (violation of DER) | |||||||||||||||||||||
17 | Private use | 80 to 9E | (user-defined) | tagged any | Bytes | X.690 | 0 or more bytes | User-specified | |||||||||||||||||||||
18 | Private use | 9F 1F to 9F 7F | (user-defined) | tagged any | Bytes | X.690 | 0 or more bytes | User-specified | |||||||||||||||||||||
19 | Private use | A0 to BE | (user-defined) | tagged any | Subobjects | X.690 | 0 or more objects | User-specified | |||||||||||||||||||||
20 | Private use | BF 1F to BF 7F | (user-defined) | tagged any | Subobjects | X.690 | 0 or more objects | User-specified | |||||||||||||||||||||
21 | undefined | C0 | #u | tag only | Subobjects | 0 objects | Undefined value | ||||||||||||||||||||||
22 | s8vector | C1 | #s8 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
23 | u16vector | C2 | #u16 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
24 | s16vector | C3 | #s16 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
25 | u32vector | C4 | #u32 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
26 | s32vector | C5 | #s32 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
27 | u64vector | C6 | #u64 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
28 | s64vector | C7 | #s64 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
29 | f32vector | C8 | #f32 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
30 | f64vector | C9 | #f64 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers | |||||||||||||||||||||
31 | c64vector | CA | #c64 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers, real before imaginary | |||||||||||||||||||||
32 | c128vector | CB | #c128 | tagged list | Bytes | Local | 0 or more bytes | Raw numbers, real before imaginary | |||||||||||||||||||||
33 | IRI | D8 | #iri | tagged string | Bytes | Local | 1 or more bytes | IRI | |||||||||||||||||||||
34 | URI | D9 | #uri | tagged string | Bytes | Local | 1 or more bytes | URI | |||||||||||||||||||||
35 | IEEE binary32 float | DA | none | float with E or no marker | Bytes | Local | 4 bytes | Big-endian | |||||||||||||||||||||
36 | IEEE binary64 float | DB | none | float with F marker | Bytes | Local | 8 bytes | Big-endian | |||||||||||||||||||||
37 | Keyword | DC | #kw | tagged symbol | Bytes | Local | 0 or more bytes | UTF-8 encoding. Does not include colon | |||||||||||||||||||||
38 | Symbol | DD | none | symbol | Bytes | Local | 0 or more bytes | UTF-8 encoding | |||||||||||||||||||||
39 | Character | DE | #char | tagged string | Bytes | Local | 1 to 4 bytes | UTF-8 encoding | |||||||||||||||||||||
40 | Vector | E0 | # | tagged list | Subobjects | Local | 0 or more objects | Vector elements in order | |||||||||||||||||||||
41 | Improper list | E1 | #imp | tagged list | Subobjects | Local | 2 or more objects | The members of the list in order, followed by the tail | |||||||||||||||||||||
42 | Fraction | E2 | #frac | tagged list | Subobjects | Local | 2 objects | Numerator, denominator are integral types: 02, EA, or EB | |||||||||||||||||||||
43 | Complex number | E3 | #cplx | tagged list | Subobjects | Local | 2 objects | Real, imaginary parts are real types: 02, DB, EA, or EB | |||||||||||||||||||||
44 | Dictionary | E4 | #dict | tagged list | Subobjects | Local | 0, 2, ... objects | Keys alternate with values, and either one can be any object | |||||||||||||||||||||
45 | Record/structure | E5 | #rec | tagged list | Subobjects | Local | 1, 3, ... objects | 1st element is type symbol, followed by symbol/value pairs as in mapping | |||||||||||||||||||||
46 | Bag | E6 | #bag | tagged list | Subobjects | Local | 0 or more objects | Objects in any order | |||||||||||||||||||||
47 | Column table | E7 | #table | tagged list | Subobjects | Local | 0 or more objects | Symbols alternate with vectors: name of column, objects of column | |||||||||||||||||||||
48 | Ordered set | E8 | #oset | tagged list | Subobjects | Local | 0 or more objects | Objects in inherent order | |||||||||||||||||||||
49 | MIME-typed data | E9 | #mime | tagged list | Subobjects | Local | 2 objects | Media type as string followed by bytevector | |||||||||||||||||||||
50 | Complex symbol | EA | #cs | tagged list | Subobjects | Local | 2 symbols | Complex symbol like foo:bar (CL) or foo/bar (Clojure) | |||||||||||||||||||||
51 | Array | EB | #arr | tagged list | Subobjects | Local | 1 integer, 1 list | Array: number of dimensions followed by rectangular nested list | |||||||||||||||||||||
52 | Note: Single-letter tags have no following S-expression | ||||||||||||||||||||||||||||
53 | Note: Space is required between a tag and a symbol | ||||||||||||||||||||||||||||
54 | |||||||||||||||||||||||||||||
55 | Alternative X.690 types accepted on input only: | ||||||||||||||||||||||||||||
56 | Numeric string | 0D | none | string | Bytes | X.690 | 0 or more bytes | ASCII digits only | |||||||||||||||||||||
57 | Printable string | 13 | none | string | Bytes | X.690 | 0 or more bytes | ASCII characters only | |||||||||||||||||||||
58 | T.61 string | 14 | none | string | Bytes | X.690 | 0 or more bytes | Encoded in T.61 (code page 1036) | |||||||||||||||||||||
59 | iA5 string | 16 | none | string | Bytes | X.690 | 0 or more bytes | ASCII characters only | |||||||||||||||||||||
60 | Graphic string | 19 | none | string | Bytes | X.690 | 0 or more bytes | ASCII characters only | |||||||||||||||||||||
61 | Visible string | 1A | none | string | Bytes | X.690 | 0 or more bytes | ASCII characters only | |||||||||||||||||||||
62 | Universal string | 1C | none | string | Bytes | X.690 | 0 or more bytes | Encoded in UTF32-BE | |||||||||||||||||||||
63 | BMP string | 1E | none | string | Bytes | X.690 | 0 or more bytes | Encoded in UTF16-BE | |||||||||||||||||||||
64 | ISO 8601 date | 1F 1F | #date | string | Bytes | X.690 | 0 or more bytes | yyyymmdd | |||||||||||||||||||||
65 | ISO 8601 datetime | 1F 21 | #date | string | Bytes | X.690 | 0 or more bytes | same as type 18 but with explicit precision | |||||||||||||||||||||
66 | |||||||||||||||||||||||||||||
67 | |||||||||||||||||||||||||||||
68 | Encoding a #dec (type 09) float per X.690: | ||||||||||||||||||||||||||||
69 | 0.0 | 0 bytes | |||||||||||||||||||||||||||
70 | 00 followed by ASCII | integer | 2 or more bytes | ||||||||||||||||||||||||||
71 | 01 followed by ASCII | decimal | 2 or more bytes | ||||||||||||||||||||||||||
72 | 02 followed by ASCII | exponent | 2 or more bytes | ||||||||||||||||||||||||||
73 | 80 | +inf.0 | 1 byte | ||||||||||||||||||||||||||
74 | 81 | -inf.0 | 1 byte | ||||||||||||||||||||||||||
75 | 82 (not X.690) | +nan.0 | 1 byte | ||||||||||||||||||||||||||
76 | |||||||||||||||||||||||||||||
77 | |||||||||||||||||||||||||||||
78 | OIDs and relative OIDs are represented as concatenated length-encoded unsigned integers, | ||||||||||||||||||||||||||||
79 | except that the first integer of an OID is f * 40 + s, where f is the first element of the OID | ||||||||||||||||||||||||||||
80 | and s is the second element. | ||||||||||||||||||||||||||||
81 | |||||||||||||||||||||||||||||
82 | |||||||||||||||||||||||||||||
83 | |||||||||||||||||||||||||||||
84 | |||||||||||||||||||||||||||||
85 | |||||||||||||||||||||||||||||
86 | |||||||||||||||||||||||||||||
87 | |||||||||||||||||||||||||||||
88 | |||||||||||||||||||||||||||||
89 | |||||||||||||||||||||||||||||
90 | |||||||||||||||||||||||||||||
91 | |||||||||||||||||||||||||||||
92 | |||||||||||||||||||||||||||||
93 | |||||||||||||||||||||||||||||
94 | |||||||||||||||||||||||||||||
95 | |||||||||||||||||||||||||||||
96 | |||||||||||||||||||||||||||||
97 | |||||||||||||||||||||||||||||
98 | |||||||||||||||||||||||||||||
99 | |||||||||||||||||||||||||||||
100 |