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