1 | =pod
|
---|
2 |
|
---|
3 | =head1 NAME
|
---|
4 |
|
---|
5 | ASN1_tag2str, ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print
|
---|
6 | - ASN1_STRING output routines
|
---|
7 |
|
---|
8 | =head1 SYNOPSIS
|
---|
9 |
|
---|
10 | #include <openssl/asn1.h>
|
---|
11 |
|
---|
12 | int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags);
|
---|
13 | int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags);
|
---|
14 | int ASN1_STRING_print(BIO *out, const ASN1_STRING *str);
|
---|
15 |
|
---|
16 | const char *ASN1_tag2str(int tag);
|
---|
17 |
|
---|
18 | =head1 DESCRIPTION
|
---|
19 |
|
---|
20 | These functions output an B<ASN1_STRING> structure. B<ASN1_STRING> is used to
|
---|
21 | represent all the ASN1 string types.
|
---|
22 |
|
---|
23 | ASN1_STRING_print_ex() outputs B<str> to B<out>, the format is determined by
|
---|
24 | the options B<flags>. ASN1_STRING_print_ex_fp() is identical except it outputs
|
---|
25 | to B<fp> instead.
|
---|
26 |
|
---|
27 | ASN1_STRING_print() prints B<str> to B<out> but using a different format to
|
---|
28 | ASN1_STRING_print_ex(). It replaces unprintable characters (other than CR, LF)
|
---|
29 | with '.'.
|
---|
30 |
|
---|
31 | ASN1_tag2str() returns a human-readable name of the specified ASN.1 B<tag>.
|
---|
32 |
|
---|
33 | =head1 NOTES
|
---|
34 |
|
---|
35 | ASN1_STRING_print() is a deprecated function which should be avoided; use
|
---|
36 | ASN1_STRING_print_ex() instead.
|
---|
37 |
|
---|
38 | Although there are a large number of options frequently B<ASN1_STRFLGS_RFC2253> is
|
---|
39 | suitable, or on UTF8 terminals B<ASN1_STRFLGS_RFC2253 & ~ASN1_STRFLGS_ESC_MSB>.
|
---|
40 |
|
---|
41 | The complete set of supported options for B<flags> is listed below.
|
---|
42 |
|
---|
43 | Various characters can be escaped. If B<ASN1_STRFLGS_ESC_2253> is set the characters
|
---|
44 | determined by RFC2253 are escaped. If B<ASN1_STRFLGS_ESC_CTRL> is set control
|
---|
45 | characters are escaped. If B<ASN1_STRFLGS_ESC_MSB> is set characters with the
|
---|
46 | MSB set are escaped: this option should B<not> be used if the terminal correctly
|
---|
47 | interprets UTF8 sequences.
|
---|
48 |
|
---|
49 | Escaping takes several forms.
|
---|
50 |
|
---|
51 | If the character being escaped is a 16 bit character then the form "\UXXXX" is used
|
---|
52 | using exactly four characters for the hex representation. If it is 32 bits then
|
---|
53 | "\WXXXXXXXX" is used using eight characters of its hex representation. These forms
|
---|
54 | will only be used if UTF8 conversion is not set (see below).
|
---|
55 |
|
---|
56 | Printable characters are normally escaped using the backslash '\' character. If
|
---|
57 | B<ASN1_STRFLGS_ESC_QUOTE> is set then the whole string is instead surrounded by
|
---|
58 | double quote characters: this is arguably more readable than the backslash
|
---|
59 | notation. Other characters use the "\XX" using exactly two characters of the hex
|
---|
60 | representation.
|
---|
61 |
|
---|
62 | If B<ASN1_STRFLGS_UTF8_CONVERT> is set then characters are converted to UTF8
|
---|
63 | format first. If the terminal supports the display of UTF8 sequences then this
|
---|
64 | option will correctly display multi byte characters.
|
---|
65 |
|
---|
66 | If B<ASN1_STRFLGS_IGNORE_TYPE> is set then the string type is not interpreted at
|
---|
67 | all: everything is assumed to be one byte per character. This is primarily for
|
---|
68 | debugging purposes and can result in confusing output in multi character strings.
|
---|
69 |
|
---|
70 | If B<ASN1_STRFLGS_SHOW_TYPE> is set then the string type itself is printed out
|
---|
71 | before its value (for example "BMPSTRING"), this actually uses ASN1_tag2str().
|
---|
72 |
|
---|
73 | The content of a string instead of being interpreted can be "dumped": this just
|
---|
74 | outputs the value of the string using the form #XXXX using hex format for each
|
---|
75 | octet.
|
---|
76 |
|
---|
77 | If B<ASN1_STRFLGS_DUMP_ALL> is set then any type is dumped.
|
---|
78 |
|
---|
79 | Normally non character string types (such as OCTET STRING) are assumed to be
|
---|
80 | one byte per character, if B<ASN1_STRFLGS_DUMP_UNKNOWN> is set then they will
|
---|
81 | be dumped instead.
|
---|
82 |
|
---|
83 | When a type is dumped normally just the content octets are printed, if
|
---|
84 | B<ASN1_STRFLGS_DUMP_DER> is set then the complete encoding is dumped
|
---|
85 | instead (including tag and length octets).
|
---|
86 |
|
---|
87 | B<ASN1_STRFLGS_RFC2253> includes all the flags required by RFC2253. It is
|
---|
88 | equivalent to:
|
---|
89 | ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB |
|
---|
90 | ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_DUMP_UNKNOWN ASN1_STRFLGS_DUMP_DER
|
---|
91 |
|
---|
92 | =head1 RETURN VALUES
|
---|
93 |
|
---|
94 | ASN1_STRING_print_ex() and ASN1_STRING_print_ex_fp() return the number of
|
---|
95 | characters written or -1 if an error occurred.
|
---|
96 |
|
---|
97 | ASN1_STRING_print() returns 1 on success or 0 on error.
|
---|
98 |
|
---|
99 | ASN1_tag2str() returns a human-readable name of the specified ASN.1 B<tag>.
|
---|
100 |
|
---|
101 | =head1 SEE ALSO
|
---|
102 |
|
---|
103 | L<X509_NAME_print_ex(3)>,
|
---|
104 | L<ASN1_tag2str(3)>
|
---|
105 |
|
---|
106 | =head1 COPYRIGHT
|
---|
107 |
|
---|
108 | Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
|
---|
109 |
|
---|
110 | Licensed under the OpenSSL license (the "License"). You may not use
|
---|
111 | this file except in compliance with the License. You can obtain a copy
|
---|
112 | in the file LICENSE in the source distribution or at
|
---|
113 | L<https://www.openssl.org/source/license.html>.
|
---|
114 |
|
---|
115 | =cut
|
---|