The data contained in this repository can be downloaded to your computer using one of several clients.
Please see the documentation of your version control software client for more information.

Please select the desired protocol below to get the URL.

This URL has Read-Only access.

Statistics
| Branch: | Revision:

main_repo / deps / openssl / openssl / doc / apps / asn1parse.pod @ aa3b4b4d

History | View | Annotate | Download (5.07 KB)

1
=pod
2

    
3
=head1 NAME
4

    
5
asn1parse - ASN.1 parsing tool
6

    
7
=head1 SYNOPSIS
8

    
9
B<openssl> B<asn1parse>
10
[B<-inform PEM|DER>]
11
[B<-in filename>]
12
[B<-out filename>]
13
[B<-noout>]
14
[B<-offset number>]
15
[B<-length number>]
16
[B<-i>]
17
[B<-oid filename>]
18
[B<-dump>]
19
[B<-dlimit num>]
20
[B<-strparse offset>]
21
[B<-genstr string>]
22
[B<-genconf file>]
23

    
24
=head1 DESCRIPTION
25

    
26
The B<asn1parse> command is a diagnostic utility that can parse ASN.1
27
structures. It can also be used to extract data from ASN.1 formatted data.
28

    
29
=head1 OPTIONS
30

    
31
=over 4
32

    
33
=item B<-inform> B<DER|PEM>
34

    
35
the input format. B<DER> is binary format and B<PEM> (the default) is base64
36
encoded.
37

    
38
=item B<-in filename>
39

    
40
the input file, default is standard input
41

    
42
=item B<-out filename>
43

    
44
output file to place the DER encoded data into. If this
45
option is not present then no data will be output. This is most useful when
46
combined with the B<-strparse> option.
47

    
48
=item B<-noout>
49

    
50
don't output the parsed version of the input file.
51

    
52
=item B<-offset number>
53

    
54
starting offset to begin parsing, default is start of file.
55

    
56
=item B<-length number>
57

    
58
number of bytes to parse, default is until end of file.
59

    
60
=item B<-i>
61

    
62
indents the output according to the "depth" of the structures.
63

    
64
=item B<-oid filename>
65

    
66
a file containing additional OBJECT IDENTIFIERs (OIDs). The format of this
67
file is described in the NOTES section below.
68

    
69
=item B<-dump>
70

    
71
dump unknown data in hex format.
72

    
73
=item B<-dlimit num>
74

    
75
like B<-dump>, but only the first B<num> bytes are output.
76

    
77
=item B<-strparse offset>
78

    
79
parse the contents octets of the ASN.1 object starting at B<offset>. This
80
option can be used multiple times to "drill down" into a nested structure.
81

    
82
=item B<-genstr string>, B<-genconf file>
83

    
84
generate encoded data based on B<string>, B<file> or both using
85
L<ASN1_generate_nconf(3)|ASN1_generate_nconf(3)> format. If B<file> only is
86
present then the string is obtained from the default section using the name
87
B<asn1>. The encoded data is passed through the ASN1 parser and printed out as
88
though it came from a file, the contents can thus be examined and written to a
89
file using the B<out> option. 
90

    
91
=back
92

    
93
=head2 OUTPUT
94

    
95
The output will typically contain lines like this:
96

    
97
  0:d=0  hl=4 l= 681 cons: SEQUENCE          
98

    
99
.....
100

    
101
  229:d=3  hl=3 l= 141 prim: BIT STRING        
102
  373:d=2  hl=3 l= 162 cons: cont [ 3 ]        
103
  376:d=3  hl=3 l= 159 cons: SEQUENCE          
104
  379:d=4  hl=2 l=  29 cons: SEQUENCE          
105
  381:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Subject Key Identifier
106
  386:d=5  hl=2 l=  22 prim: OCTET STRING      
107
  410:d=4  hl=2 l= 112 cons: SEQUENCE          
108
  412:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Authority Key Identifier
109
  417:d=5  hl=2 l= 105 prim: OCTET STRING      
110
  524:d=4  hl=2 l=  12 cons: SEQUENCE          
111

    
112
.....
113

    
114
This example is part of a self signed certificate. Each line starts with the
115
offset in decimal. B<d=XX> specifies the current depth. The depth is increased
116
within the scope of any SET or SEQUENCE. B<hl=XX> gives the header length
117
(tag and length octets) of the current type. B<l=XX> gives the length of
118
the contents octets.
119

    
120
The B<-i> option can be used to make the output more readable.
121

    
122
Some knowledge of the ASN.1 structure is needed to interpret the output. 
123

    
124
In this example the BIT STRING at offset 229 is the certificate public key.
125
The contents octets of this will contain the public key information. This can
126
be examined using the option B<-strparse 229> to yield:
127

    
128
    0:d=0  hl=3 l= 137 cons: SEQUENCE          
129
    3:d=1  hl=3 l= 129 prim: INTEGER           :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
130
  135:d=1  hl=2 l=   3 prim: INTEGER           :010001
131

    
132
=head1 NOTES
133

    
134
If an OID is not part of OpenSSL's internal table it will be represented in
135
numerical form (for example 1.2.3.4). The file passed to the B<-oid> option 
136
allows additional OIDs to be included. Each line consists of three columns,
137
the first column is the OID in numerical format and should be followed by white
138
space. The second column is the "short name" which is a single word followed
139
by white space. The final column is the rest of the line and is the
140
"long name". B<asn1parse> displays the long name. Example:
141

    
142
C<1.2.3.4	shortName	A long name>
143

    
144
=head1 EXAMPLES
145

    
146
Parse a file:
147

    
148
 openssl asn1parse -in file.pem
149

    
150
Parse a DER file:
151

    
152
 openssl asn1parse -inform DER -in file.der
153

    
154
Generate a simple UTF8String:
155

    
156
 openssl asn1parse -genstr 'UTF8:Hello World'
157

    
158
Generate and write out a UTF8String, don't print parsed output:
159

    
160
 openssl asn1parse -genstr 'UTF8:Hello World' -noout -out utf8.der
161

    
162
Generate using a config file:
163

    
164
 openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
165

    
166
Example config file:
167

    
168
 asn1=SEQUENCE:seq_sect
169

    
170
 [seq_sect]
171

    
172
 field1=BOOL:TRUE
173
 field2=EXP:0, UTF8:some random string
174

    
175

    
176
=head1 BUGS
177

    
178
There should be options to change the format of output lines. The output of some
179
ASN.1 types is not well handled (if at all).
180

    
181
=head1 SEE ALSO
182

    
183
L<ASN1_generate_nconf(3)|ASN1_generate_nconf(3)>
184

    
185
=cut