Home | History | Annotate | Line # | Download | only in man1
      1  1.1  christos =pod
      2  1.1  christos {- OpenSSL::safe::output_do_not_edit_headers(); -}
      3  1.1  christos 
      4  1.1  christos =head1 NAME
      5  1.1  christos 
      6  1.1  christos openssl-asn1parse - ASN.1 parsing command
      7  1.1  christos 
      8  1.1  christos =head1 SYNOPSIS
      9  1.1  christos 
     10  1.1  christos B<openssl> B<asn1parse>
     11  1.1  christos [B<-help>]
     12  1.1  christos [B<-inform> B<DER>|B<PEM>]
     13  1.1  christos [B<-in> I<filename>]
     14  1.1  christos [B<-out> I<filename>]
     15  1.1  christos [B<-noout>]
     16  1.1  christos [B<-offset> I<number>]
     17  1.1  christos [B<-length> I<number>]
     18  1.1  christos [B<-i>]
     19  1.1  christos [B<-oid> I<filename>]
     20  1.1  christos [B<-dump>]
     21  1.1  christos [B<-dlimit> I<num>]
     22  1.1  christos [B<-strparse> I<offset>]
     23  1.1  christos [B<-genstr> I<string>]
     24  1.1  christos [B<-genconf> I<file>]
     25  1.1  christos [B<-strictpem>]
     26  1.1  christos [B<-item> I<name>]
     27  1.1  christos 
     28  1.1  christos =head1 DESCRIPTION
     29  1.1  christos 
     30  1.1  christos This command is a diagnostic utility that can parse ASN.1 structures.
     31  1.1  christos It can also be used to extract data from ASN.1 formatted data.
     32  1.1  christos 
     33  1.1  christos =head1 OPTIONS
     34  1.1  christos 
     35  1.1  christos =over 4
     36  1.1  christos 
     37  1.1  christos =item B<-help>
     38  1.1  christos 
     39  1.1  christos Print out a usage message.
     40  1.1  christos 
     41  1.1  christos =item B<-inform> B<DER>|B<PEM>
     42  1.1  christos 
     43  1.1  christos The input format; the default is B<PEM>.
     44  1.1  christos See L<openssl-format-options(1)> for details.
     45  1.1  christos 
     46  1.1  christos =item B<-in> I<filename>
     47  1.1  christos 
     48  1.1  christos The input file, default is standard input.
     49  1.1  christos 
     50  1.1  christos =item B<-out> I<filename>
     51  1.1  christos 
     52  1.1  christos Output file to place the DER encoded data into. If this
     53  1.1  christos option is not present then no data will be output. This is most useful when
     54  1.1  christos combined with the B<-strparse> option.
     55  1.1  christos 
     56  1.1  christos =item B<-noout>
     57  1.1  christos 
     58  1.1  christos Don't output the parsed version of the input file.
     59  1.1  christos 
     60  1.1  christos =item B<-offset> I<number>
     61  1.1  christos 
     62  1.1  christos Starting offset to begin parsing, default is start of file.
     63  1.1  christos 
     64  1.1  christos =item B<-length> I<number>
     65  1.1  christos 
     66  1.1  christos Number of bytes to parse, default is until end of file.
     67  1.1  christos 
     68  1.1  christos =item B<-i>
     69  1.1  christos 
     70  1.1  christos Indents the output according to the "depth" of the structures.
     71  1.1  christos 
     72  1.1  christos =item B<-oid> I<filename>
     73  1.1  christos 
     74  1.1  christos A file containing additional OBJECT IDENTIFIERs (OIDs). The format of this
     75  1.1  christos file is described in the NOTES section below.
     76  1.1  christos 
     77  1.1  christos =item B<-dump>
     78  1.1  christos 
     79  1.1  christos Dump unknown data in hex format.
     80  1.1  christos 
     81  1.1  christos =item B<-dlimit> I<num>
     82  1.1  christos 
     83  1.1  christos Like B<-dump>, but only the first B<num> bytes are output.
     84  1.1  christos 
     85  1.1  christos =item B<-strparse> I<offset>
     86  1.1  christos 
     87  1.1  christos Parse the contents octets of the ASN.1 object starting at B<offset>. This
     88  1.1  christos option can be used multiple times to "drill down" into a nested structure.
     89  1.1  christos 
     90  1.1  christos =item B<-genstr> I<string>, B<-genconf> I<file>
     91  1.1  christos 
     92  1.1  christos Generate encoded data based on I<string>, I<file> or both using
     93  1.1  christos L<ASN1_generate_nconf(3)> format. If I<file> only is
     94  1.1  christos present then the string is obtained from the default section using the name
     95  1.1  christos B<asn1>. The encoded data is passed through the ASN1 parser and printed out as
     96  1.1  christos though it came from a file, the contents can thus be examined and written to a
     97  1.1  christos file using the B<-out> option.
     98  1.1  christos 
     99  1.1  christos =item B<-strictpem>
    100  1.1  christos 
    101  1.1  christos If this option is used then B<-inform> will be ignored. Without this option any
    102  1.1  christos data in a PEM format input file will be treated as being base64 encoded and
    103  1.1  christos processed whether it has the normal PEM BEGIN and END markers or not. This
    104  1.1  christos option will ignore any data prior to the start of the BEGIN marker, or after an
    105  1.1  christos END marker in a PEM file.
    106  1.1  christos 
    107  1.1  christos =item B<-item> I<name>
    108  1.1  christos 
    109  1.1  christos Attempt to decode and print the data as an B<ASN1_ITEM> I<name>. This can be
    110  1.1  christos used to print out the fields of any supported ASN.1 structure if the type is
    111  1.1  christos known.
    112  1.1  christos 
    113  1.1  christos =back
    114  1.1  christos 
    115  1.1  christos =head2 Output
    116  1.1  christos 
    117  1.1  christos The output will typically contain lines like this:
    118  1.1  christos 
    119  1.1  christos   0:d=0  hl=4 l= 681 cons: SEQUENCE
    120  1.1  christos 
    121  1.1  christos .....
    122  1.1  christos 
    123  1.1  christos   229:d=3  hl=3 l= 141 prim: BIT STRING
    124  1.1  christos   373:d=2  hl=3 l= 162 cons: cont [ 3 ]
    125  1.1  christos   376:d=3  hl=3 l= 159 cons: SEQUENCE
    126  1.1  christos   379:d=4  hl=2 l=  29 cons: SEQUENCE
    127  1.1  christos   381:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Subject Key Identifier
    128  1.1  christos   386:d=5  hl=2 l=  22 prim: OCTET STRING
    129  1.1  christos   410:d=4  hl=2 l= 112 cons: SEQUENCE
    130  1.1  christos   412:d=5  hl=2 l=   3 prim: OBJECT            :X509v3 Authority Key Identifier
    131  1.1  christos   417:d=5  hl=2 l= 105 prim: OCTET STRING
    132  1.1  christos   524:d=4  hl=2 l=  12 cons: SEQUENCE
    133  1.1  christos 
    134  1.1  christos .....
    135  1.1  christos 
    136  1.1  christos This example is part of a self-signed certificate. Each line starts with the
    137  1.1  christos offset in decimal. C<d=XX> specifies the current depth. The depth is increased
    138  1.1  christos within the scope of any SET or SEQUENCE. C<hl=XX> gives the header length
    139  1.1  christos (tag and length octets) of the current type. C<l=XX> gives the length of
    140  1.1  christos the contents octets.
    141  1.1  christos 
    142  1.1  christos The B<-i> option can be used to make the output more readable.
    143  1.1  christos 
    144  1.1  christos Some knowledge of the ASN.1 structure is needed to interpret the output.
    145  1.1  christos 
    146  1.1  christos In this example the BIT STRING at offset 229 is the certificate public key.
    147  1.1  christos The contents octets of this will contain the public key information. This can
    148  1.1  christos be examined using the option C<-strparse 229> to yield:
    149  1.1  christos 
    150  1.1  christos     0:d=0  hl=3 l= 137 cons: SEQUENCE
    151  1.1  christos     3:d=1  hl=3 l= 129 prim: INTEGER           :E5D21E1F5C8D208EA7A2166C7FAF9F6BDF2059669C60876DDB70840F1A5AAFA59699FE471F379F1DD6A487E7D5409AB6A88D4A9746E24B91D8CF55DB3521015460C8EDE44EE8A4189F7A7BE77D6CD3A9AF2696F486855CF58BF0EDF2B4068058C7A947F52548DDF7E15E96B385F86422BEA9064A3EE9E1158A56E4A6F47E5897
    152  1.1  christos   135:d=1  hl=2 l=   3 prim: INTEGER           :010001
    153  1.1  christos 
    154  1.1  christos =head1 NOTES
    155  1.1  christos 
    156  1.1  christos If an OID is not part of OpenSSL's internal table it will be represented in
    157  1.1  christos numerical form (for example 1.2.3.4). The file passed to the B<-oid> option
    158  1.1  christos allows additional OIDs to be included. Each line consists of three columns,
    159  1.1  christos the first column is the OID in numerical format and should be followed by white
    160  1.1  christos space. The second column is the "short name" which is a single word followed
    161  1.1  christos by whitespace. The final column is the rest of the line and is the
    162  1.1  christos "long name". Example:
    163  1.1  christos 
    164  1.1  christos C<1.2.3.4       shortName       A long name>
    165  1.1  christos 
    166  1.1  christos For any OID with an associated short and long name, this command will display
    167  1.1  christos the long name.
    168  1.1  christos 
    169  1.1  christos =head1 EXAMPLES
    170  1.1  christos 
    171  1.1  christos Parse a file:
    172  1.1  christos 
    173  1.1  christos  openssl asn1parse -in file.pem
    174  1.1  christos 
    175  1.1  christos Parse a DER file:
    176  1.1  christos 
    177  1.1  christos  openssl asn1parse -inform DER -in file.der
    178  1.1  christos 
    179  1.1  christos Generate a simple UTF8String:
    180  1.1  christos 
    181  1.1  christos  openssl asn1parse -genstr 'UTF8:Hello World'
    182  1.1  christos 
    183  1.1  christos Generate and write out a UTF8String, don't print parsed output:
    184  1.1  christos 
    185  1.1  christos  openssl asn1parse -genstr 'UTF8:Hello World' -noout -out utf8.der
    186  1.1  christos 
    187  1.1  christos Generate using a config file:
    188  1.1  christos 
    189  1.1  christos  openssl asn1parse -genconf asn1.cnf -noout -out asn1.der
    190  1.1  christos 
    191  1.1  christos Example config file:
    192  1.1  christos 
    193  1.1  christos  asn1=SEQUENCE:seq_sect
    194  1.1  christos 
    195  1.1  christos  [seq_sect]
    196  1.1  christos 
    197  1.1  christos  field1=BOOL:TRUE
    198  1.1  christos  field2=EXP:0, UTF8:some random string
    199  1.1  christos 
    200  1.1  christos 
    201  1.1  christos =head1 BUGS
    202  1.1  christos 
    203  1.1  christos There should be options to change the format of output lines. The output of some
    204  1.1  christos ASN.1 types is not well handled (if at all).
    205  1.1  christos 
    206  1.1  christos =head1 SEE ALSO
    207  1.1  christos 
    208  1.1  christos L<openssl(1)>,
    209  1.1  christos L<ASN1_generate_nconf(3)>
    210  1.1  christos 
    211  1.1  christos =head1 COPYRIGHT
    212  1.1  christos 
    213  1.1  christos Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved.
    214  1.1  christos 
    215  1.1  christos Licensed under the Apache License 2.0 (the "License").  You may not use
    216  1.1  christos this file except in compliance with the License.  You can obtain a copy
    217  1.1  christos in the file LICENSE in the source distribution or at
    218  1.1  christos L<https://www.openssl.org/source/license.html>.
    219  1.1  christos 
    220  1.1  christos =cut
    221