267 lines
9.7 KiB
HTML
Executable File
267 lines
9.7 KiB
HTML
Executable File
<?xml version="1.0" ?>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>openssl-asn1parse</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
|
<link rev="made" href="mailto:root@localhost" />
|
|
</head>
|
|
|
|
<body style="background-color: white">
|
|
|
|
|
|
<!-- INDEX BEGIN -->
|
|
<div name="index">
|
|
<p><a name="__index__"></a></p>
|
|
|
|
<ul>
|
|
|
|
<li><a href="#name">NAME</a></li>
|
|
<li><a href="#synopsis">SYNOPSIS</a></li>
|
|
<li><a href="#description">DESCRIPTION</a></li>
|
|
<li><a href="#options">OPTIONS</a></li>
|
|
<ul>
|
|
|
|
<li><a href="#output">Output</a></li>
|
|
</ul>
|
|
|
|
<li><a href="#notes">NOTES</a></li>
|
|
<li><a href="#examples">EXAMPLES</a></li>
|
|
<li><a href="#bugs">BUGS</a></li>
|
|
<li><a href="#see_also">SEE ALSO</a></li>
|
|
<li><a href="#copyright">COPYRIGHT</a></li>
|
|
</ul>
|
|
|
|
<hr name="index" />
|
|
</div>
|
|
<!-- INDEX END -->
|
|
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="name">NAME</a></h1>
|
|
<p>openssl-asn1parse - ASN.1 parsing tool</p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="synopsis">SYNOPSIS</a></h1>
|
|
<p><strong>openssl</strong> <strong>asn1parse</strong>
|
|
[<strong>-help</strong>]
|
|
[<strong>-inform</strong> <strong>DER</strong>|<strong>PEM</strong>]
|
|
[<strong>-in</strong> <em>filename</em>]
|
|
[<strong>-out</strong> <em>filename</em>]
|
|
[<strong>-noout</strong>]
|
|
[<strong>-offset</strong> <em>number</em>]
|
|
[<strong>-length</strong> <em>number</em>]
|
|
[<strong>-i</strong>]
|
|
[<strong>-oid</strong> <em>filename</em>]
|
|
[<strong>-dump</strong>]
|
|
[<strong>-dlimit</strong> <em>num</em>]
|
|
[<strong>-strparse</strong> <em>offset</em>]
|
|
[<strong>-genstr</strong> <em>string</em>]
|
|
[<strong>-genconf</strong> <em>file</em>]
|
|
[<strong>-strictpem</strong>]
|
|
[<strong>-item</strong> <em>name</em>]</p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="description">DESCRIPTION</a></h1>
|
|
<p>This command is a diagnostic utility that can parse ASN.1 structures.
|
|
It can also be used to extract data from ASN.1 formatted data.</p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="options">OPTIONS</a></h1>
|
|
<dl>
|
|
<dt><strong><a name="help" class="item"><strong>-help</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Print out a usage message.</p>
|
|
</dd>
|
|
<dt><strong><a name="inform_der_pem" class="item"><strong>-inform</strong> <strong>DER</strong>|<strong>PEM</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>The input format; the default is <strong>PEM</strong>.
|
|
See <em>openssl(1)/Format Options</em> for details.</p>
|
|
</dd>
|
|
<dt><strong><a name="in_filename" class="item"><strong>-in</strong> <em>filename</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>The input file, default is standard input.</p>
|
|
</dd>
|
|
<dt><strong><a name="out_filename" class="item"><strong>-out</strong> <em>filename</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Output file to place the DER encoded data into. If this
|
|
option is not present then no data will be output. This is most useful when
|
|
combined with the <strong>-strparse</strong> option.</p>
|
|
</dd>
|
|
<dt><strong><a name="noout" class="item"><strong>-noout</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Don't output the parsed version of the input file.</p>
|
|
</dd>
|
|
<dt><strong><a name="offset_number" class="item"><strong>-offset</strong> <em>number</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Starting offset to begin parsing, default is start of file.</p>
|
|
</dd>
|
|
<dt><strong><a name="length_number" class="item"><strong>-length</strong> <em>number</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Number of bytes to parse, default is until end of file.</p>
|
|
</dd>
|
|
<dt><strong><a name="i" class="item"><strong>-i</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Indents the output according to the "depth" of the structures.</p>
|
|
</dd>
|
|
<dt><strong><a name="oid_filename" class="item"><strong>-oid</strong> <em>filename</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>A file containing additional OBJECT IDENTIFIERs (OIDs). The format of this
|
|
file is described in the NOTES section below.</p>
|
|
</dd>
|
|
<dt><strong><a name="dump" class="item"><strong>-dump</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Dump unknown data in hex format.</p>
|
|
</dd>
|
|
<dt><strong><a name="dlimit_num" class="item"><strong>-dlimit</strong> <em>num</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Like <strong>-dump</strong>, but only the first <strong>num</strong> bytes are output.</p>
|
|
</dd>
|
|
<dt><strong><a name="strparse_offset" class="item"><strong>-strparse</strong> <em>offset</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Parse the contents octets of the ASN.1 object starting at <strong>offset</strong>. This
|
|
option can be used multiple times to "drill down" into a nested structure.</p>
|
|
</dd>
|
|
<dt><strong><a name="genstr_string_genconf_file" class="item"><strong>-genstr</strong> <em>string</em>, <strong>-genconf</strong> <em>file</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Generate encoded data based on <em>string</em>, <em>file</em> or both using
|
|
<em>ASN1_generate_nconf(3)</em> format. If <em>file</em> only is
|
|
present then the string is obtained from the default section using the name
|
|
<strong>asn1</strong>. The encoded data is passed through the ASN1 parser and printed out as
|
|
though it came from a file, the contents can thus be examined and written to a
|
|
file using the <strong>-out</strong> option.</p>
|
|
</dd>
|
|
<dt><strong><a name="strictpem" class="item"><strong>-strictpem</strong></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>If this option is used then <strong>-inform</strong> will be ignored. Without this option any
|
|
data in a PEM format input file will be treated as being base64 encoded and
|
|
processed whether it has the normal PEM BEGIN and END markers or not. This
|
|
option will ignore any data prior to the start of the BEGIN marker, or after an
|
|
END marker in a PEM file.</p>
|
|
</dd>
|
|
<dt><strong><a name="item_name" class="item"><strong>-item</strong> <em>name</em></a></strong></dt>
|
|
|
|
<dd>
|
|
<p>Attempt to decode and print the data as an <strong>ASN1_ITEM</strong> <em>name</em>. This can be
|
|
used to print out the fields of any supported ASN.1 structure if the type is
|
|
known.</p>
|
|
</dd>
|
|
</dl>
|
|
<p>
|
|
</p>
|
|
<h2><a name="output">Output</a></h2>
|
|
<p>The output will typically contain lines like this:</p>
|
|
<pre>
|
|
0:d=0 hl=4 l= 681 cons: SEQUENCE</pre>
|
|
<p>.....</p>
|
|
<pre>
|
|
229:d=3 hl=3 l= 141 prim: BIT STRING
|
|
373:d=2 hl=3 l= 162 cons: cont [ 3 ]
|
|
376:d=3 hl=3 l= 159 cons: SEQUENCE
|
|
379:d=4 hl=2 l= 29 cons: SEQUENCE
|
|
381:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Subject Key Identifier
|
|
386:d=5 hl=2 l= 22 prim: OCTET STRING
|
|
410:d=4 hl=2 l= 112 cons: SEQUENCE
|
|
412:d=5 hl=2 l= 3 prim: OBJECT :X509v3 Authority Key Identifier
|
|
417:d=5 hl=2 l= 105 prim: OCTET STRING
|
|
524:d=4 hl=2 l= 12 cons: SEQUENCE</pre>
|
|
<p>.....</p>
|
|
<p>This example is part of a self-signed certificate. Each line starts with the
|
|
offset in decimal. <code>d=XX</code> specifies the current depth. The depth is increased
|
|
within the scope of any SET or SEQUENCE. <code>hl=XX</code> gives the header length
|
|
(tag and length octets) of the current type. <code>l=XX</code> gives the length of
|
|
the contents octets.</p>
|
|
<p>The <strong>-i</strong> option can be used to make the output more readable.</p>
|
|
<p>Some knowledge of the ASN.1 structure is needed to interpret the output.</p>
|
|
<p>In this example the BIT STRING at offset 229 is the certificate public key.
|
|
The contents octets of this will contain the public key information. This can
|
|
be examined using the option <code>-strparse 229</code> to yield:</p>
|
|
<pre>
|
|
0:d=0 hl=3 l= 137 cons: SEQUENCE
|
|
3:d=1 hl=3 l= 129 prim: INTEGER :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
|
|
135:d=1 hl=2 l= 3 prim: INTEGER :010001</pre>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="notes">NOTES</a></h1>
|
|
<p>If an OID is not part of OpenSSL's internal table it will be represented in
|
|
numerical form (for example 1.2.3.4). The file passed to the <strong>-oid</strong> option
|
|
allows additional OIDs to be included. Each line consists of three columns,
|
|
the first column is the OID in numerical format and should be followed by white
|
|
space. The second column is the "short name" which is a single word followed
|
|
by white space. The final column is the rest of the line and is the
|
|
"long name". Example:</p>
|
|
<p><code>1.2.3.4 shortName A long name</code></p>
|
|
<p>For any OID with an associated short and long name, this command will display
|
|
the long name.</p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="examples">EXAMPLES</a></h1>
|
|
<p>Parse a file:</p>
|
|
<pre>
|
|
openssl asn1parse -in file.pem</pre>
|
|
<p>Parse a DER file:</p>
|
|
<pre>
|
|
openssl asn1parse -inform DER -in file.der</pre>
|
|
<p>Generate a simple UTF8String:</p>
|
|
<pre>
|
|
openssl asn1parse -genstr 'UTF8:Hello World'</pre>
|
|
<p>Generate and write out a UTF8String, don't print parsed output:</p>
|
|
<pre>
|
|
openssl asn1parse -genstr 'UTF8:Hello World' -noout -out utf8.der</pre>
|
|
<p>Generate using a config file:</p>
|
|
<pre>
|
|
openssl asn1parse -genconf asn1.cnf -noout -out asn1.der</pre>
|
|
<p>Example config file:</p>
|
|
<pre>
|
|
asn1=SEQUENCE:seq_sect</pre>
|
|
<pre>
|
|
[seq_sect]</pre>
|
|
<pre>
|
|
field1=BOOL:TRUE
|
|
field2=EXP:0, UTF8:some random string</pre>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="bugs">BUGS</a></h1>
|
|
<p>There should be options to change the format of output lines. The output of some
|
|
ASN.1 types is not well handled (if at all).</p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="see_also">SEE ALSO</a></h1>
|
|
<p><em>openssl(1)</em>,
|
|
<em>ASN1_generate_nconf(3)</em></p>
|
|
<p>
|
|
</p>
|
|
<hr />
|
|
<h1><a name="copyright">COPYRIGHT</a></h1>
|
|
<p>Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.</p>
|
|
<p>Licensed under the Apache License 2.0 (the "License"). You may not use
|
|
this file except in compliance with the License. You can obtain a copy
|
|
in the file LICENSE in the source distribution or at
|
|
<a href="https://www.openssl.org/source/license.html">https://www.openssl.org/source/license.html</a>.</p>
|
|
|
|
</body>
|
|
|
|
</html>
|