ABCDEFGHIJKLMNOPQRSTUVWXYZAAAB
1
keywordType codeTagSource syntax
Binary structure
Origin
Binary content size
Binary content description
2
End of content00nonenoneNoneX.6900 bytesThis indicates the end of an object with subobjects
3
Boolean01#t or #ftag onlyBytesX.6901 byte00 is false, FF is true
4
Fixed integer02noneScheme integerBytesX.6901 or more bytesBig-endian
5
Bit string03#bitstagged bytevectorBytesX.6901 or more bytes1st byte is number of unused bits, remainder is big-endian bits
6
Bytevector04nonehex digits in bracesBytesX.6900 or more bytesRaw bytes
7
Null05#ntag onlyBytesX.6900 bytesNote: a unique object, not the same as empty list or false
8
OID06#oidtagged listBytesX.6901 or more bytesSee below
9
Decimal float09#decInexact numberBytesX.6900 or more bytesSee below
10
String0Cnonebasic stringBytesX.6900 or more bytesUTF-8 encoding
11
Relative OID13#roidtagged listBytesX.6900 or more bytesSee below
12
8601 datetime18#datetagged stringBytesX.69015 or more bytesyyyymddhhmmss[.s+]Z
13
ISO 8601 time1F 20#timestringBytesX.6900 or more byteshhmmss[.s+]
14
8601 duration1F 22#durtagged stringBytesX.6902 or more bytesYnMnWnDnTHnMnSn[.n+]
15
List (sequence)20nonetagged list
Subobjects
X.6900 or more objectsList elements in order
16
Set21#settagged list
Subobjects
X.6900 or more objectsElements in any order (violation of DER)
17
Private use80 to 9E(user-defined)tagged anyBytesX.6900 or more bytesUser-specified
18
Private use
9F 1F to 9F 7F
(user-defined)tagged anyBytesX.6900 or more bytesUser-specified
19
Private useA0 to BE(user-defined)tagged any
Subobjects
X.6900 or more objectsUser-specified
20
Private use
BF 1F to BF 7F
(user-defined)tagged any
Subobjects
X.6900 or more objectsUser-specified
21
undefinedC0#utag only
Subobjects
0 objectsUndefined value
22
s8vectorC1#s8tagged listBytesLocal0 or more bytesRaw numbers
23
u16vectorC2#u16tagged listBytesLocal0 or more bytesRaw numbers
24
s16vectorC3#s16tagged listBytesLocal0 or more bytesRaw numbers
25
u32vectorC4#u32tagged listBytesLocal0 or more bytesRaw numbers
26
s32vectorC5#s32tagged listBytesLocal0 or more bytesRaw numbers
27
u64vectorC6#u64tagged listBytesLocal0 or more bytesRaw numbers
28
s64vectorC7#s64tagged listBytesLocal0 or more bytesRaw numbers
29
f32vectorC8#f32tagged listBytesLocal0 or more bytesRaw numbers
30
f64vectorC9#f64tagged listBytesLocal0 or more bytesRaw numbers
31
c64vectorCA#c64tagged listBytesLocal0 or more bytesRaw numbers, real before imaginary
32
c128vectorCB#c128tagged listBytesLocal0 or more bytesRaw numbers, real before imaginary
33
IRID8#iritagged stringBytesLocal1 or more bytesIRI
34
URID9#uritagged stringBytesLocal1 or more bytesURI
35
IEEE binary32 float
DAnone
float with E or no marker
BytesLocal4 bytesBig-endian
36
IEEE binary64 float
DBnonefloat with F markerBytesLocal8 bytesBig-endian
37
KeywordDC#kwtagged symbolBytesLocal0 or more bytesUTF-8 encoding. Does not include colon
38
SymbolDDnonesymbolBytesLocal0 or more bytesUTF-8 encoding
39
CharacterDE#chartagged stringBytesLocal1 to 4 bytesUTF-8 encoding
40
VectorE0#tagged list
Subobjects
Local0 or more objectsVector elements in order
41
Improper listE1#imptagged list
Subobjects
Local2 or more objectsThe members of the list in order, followed by the tail
42
FractionE2#fractagged list
Subobjects
Local2 objectsNumerator, denominator are integral types: 02, EA, or EB
43
Complex numberE3#cplxtagged list
Subobjects
Local2 objectsReal, imaginary parts are real types: 02, DB, EA, or EB
44
DictionaryE4#dicttagged list
Subobjects
Local0, 2, ... objectsKeys alternate with values, and either one can be any object
45
Record/structureE5#rectagged list
Subobjects
Local1, 3, ... objects1st element is type symbol, followed by symbol/value pairs as in mapping
46
BagE6#bagtagged list
Subobjects
Local0 or more objectsObjects in any order
47
Column tableE7#tabletagged list
Subobjects
Local0 or more objectsSymbols alternate with vectors: name of column, objects of column
48
Ordered setE8#osettagged list
Subobjects
Local0 or more objectsObjects in inherent order
49
MIME-typed dataE9#mimetagged list
Subobjects
Local2 objectsMedia type as string followed by bytevector
50
Complex symbolEA#cstagged list
Subobjects
Local2 symbolsComplex symbol like foo:bar (CL) or foo/bar (Clojure)
51
ArrayEB#arrtagged list
Subobjects
Local1 integer, 1 listArray: 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 string0DnonestringBytesX.6900 or more bytesASCII digits only
57
Printable string13nonestringBytesX.6900 or more bytesASCII characters only
58
T.61 string14nonestringBytesX.6900 or more bytesEncoded in T.61 (code page 1036)
59
iA5 string16nonestringBytesX.6900 or more bytesASCII characters only
60
Graphic string19nonestringBytesX.6900 or more bytesASCII characters only
61
Visible string1AnonestringBytesX.6900 or more bytesASCII characters only
62
Universal string1CnonestringBytesX.6900 or more bytesEncoded in UTF32-BE
63
BMP string1EnonestringBytesX.6900 or more bytesEncoded in UTF16-BE
64
ISO 8601 date1F 1F#datestringBytesX.6900 or more bytesyyyymmdd
65
ISO 8601 datetime
1F 21#datestringBytesX.6900 or more bytessame as type 18 but with explicit precision
66
67
68
Encoding a #dec (type 09) float per X.690:
69
0.00 bytes
70
00 followed by ASCII
integer2 or more bytes
71
01 followed by ASCII
decimal2 or more bytes
72
02 followed by ASCII
exponent2 or more bytes
73
80+inf.01 byte
74
81-inf.01 byte
75
82 (not X.690)+nan.01 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