1*2175Sjp161948=pod 2*2175Sjp161948 3*2175Sjp161948=head1 NAME 4*2175Sjp161948 5*2175Sjp161948X509_NAME_print_ex, X509_NAME_print_ex_fp, X509_NAME_print, 6*2175Sjp161948X509_NAME_oneline - X509_NAME printing routines. 7*2175Sjp161948 8*2175Sjp161948=head1 SYNOPSIS 9*2175Sjp161948 10*2175Sjp161948 #include <openssl/x509.h> 11*2175Sjp161948 12*2175Sjp161948 int X509_NAME_print_ex(BIO *out, X509_NAME *nm, int indent, unsigned long flags); 13*2175Sjp161948 int X509_NAME_print_ex_fp(FILE *fp, X509_NAME *nm, int indent, unsigned long flags); 14*2175Sjp161948 char * X509_NAME_oneline(X509_NAME *a,char *buf,int size); 15*2175Sjp161948 int X509_NAME_print(BIO *bp, X509_NAME *name, int obase); 16*2175Sjp161948 17*2175Sjp161948=head1 DESCRIPTION 18*2175Sjp161948 19*2175Sjp161948X509_NAME_print_ex() prints a human readable version of B<nm> to BIO B<out>. Each 20*2175Sjp161948line (for multiline formats) is indented by B<indent> spaces. The output format 21*2175Sjp161948can be extensively customised by use of the B<flags> parameter. 22*2175Sjp161948 23*2175Sjp161948X509_NAME_print_ex_fp() is identical to X509_NAME_print_ex() except the output is 24*2175Sjp161948written to FILE pointer B<fp>. 25*2175Sjp161948 26*2175Sjp161948X509_NAME_oneline() prints an ASCII version of B<a> to B<buf>. At most B<size> 27*2175Sjp161948bytes will be written. If B<buf> is B<NULL> then a buffer is dynamically allocated 28*2175Sjp161948and returned, otherwise B<buf> is returned. 29*2175Sjp161948 30*2175Sjp161948X509_NAME_print() prints out B<name> to B<bp> indenting each line by B<obase> 31*2175Sjp161948characters. Multiple lines are used if the output (including indent) exceeds 32*2175Sjp16194880 characters. 33*2175Sjp161948 34*2175Sjp161948=head1 NOTES 35*2175Sjp161948 36*2175Sjp161948The functions X509_NAME_oneline() and X509_NAME_print() are legacy functions which 37*2175Sjp161948produce a non standard output form, they don't handle multi character fields and 38*2175Sjp161948have various quirks and inconsistencies. Their use is strongly discouraged in new 39*2175Sjp161948applications. 40*2175Sjp161948 41*2175Sjp161948Although there are a large number of possible flags for most purposes 42*2175Sjp161948B<XN_FLAG_ONELINE>, B<XN_FLAG_MULTILINE> or B<XN_FLAG_RFC2253> will suffice. 43*2175Sjp161948As noted on the L<ASN1_STRING_print_ex(3)|ASN1_STRING_print_ex(3)> manual page 44*2175Sjp161948for UTF8 terminals the B<ASN1_STRFLGS_ESC_MSB> should be unset: so for example 45*2175Sjp161948B<XN_FLAG_ONELINE & ~ASN1_STRFLGS_ESC_MSB> would be used. 46*2175Sjp161948 47*2175Sjp161948The complete set of the flags supported by X509_NAME_print_ex() is listed below. 48*2175Sjp161948 49*2175Sjp161948Several options can be ored together. 50*2175Sjp161948 51*2175Sjp161948The options B<XN_FLAG_SEP_COMMA_PLUS>, B<XN_FLAG_SEP_CPLUS_SPC>, 52*2175Sjp161948B<XN_FLAG_SEP_SPLUS_SPC> and B<XN_FLAG_SEP_MULTILINE> determine the field separators 53*2175Sjp161948to use. Two distinct separators are used between distinct RelativeDistinguishedName 54*2175Sjp161948components and separate values in the same RDN for a multi-valued RDN. Multi-valued 55*2175Sjp161948RDNs are currently very rare so the second separator will hardly ever be used. 56*2175Sjp161948 57*2175Sjp161948B<XN_FLAG_SEP_COMMA_PLUS> uses comma and plus as separators. B<XN_FLAG_SEP_CPLUS_SPC> 58*2175Sjp161948uses comma and plus with spaces: this is more readable that plain comma and plus. 59*2175Sjp161948B<XN_FLAG_SEP_SPLUS_SPC> uses spaced semicolon and plus. B<XN_FLAG_SEP_MULTILINE> uses 60*2175Sjp161948spaced newline and plus respectively. 61*2175Sjp161948 62*2175Sjp161948If B<XN_FLAG_DN_REV> is set the whole DN is printed in reversed order. 63*2175Sjp161948 64*2175Sjp161948The fields B<XN_FLAG_FN_SN>, B<XN_FLAG_FN_LN>, B<XN_FLAG_FN_OID>, 65*2175Sjp161948B<XN_FLAG_FN_NONE> determine how a field name is displayed. It will 66*2175Sjp161948use the short name (e.g. CN) the long name (e.g. commonName) always 67*2175Sjp161948use OID numerical form (normally OIDs are only used if the field name is not 68*2175Sjp161948recognised) and no field name respectively. 69*2175Sjp161948 70*2175Sjp161948If B<XN_FLAG_SPC_EQ> is set then spaces will be placed around the '=' character 71*2175Sjp161948separating field names and values. 72*2175Sjp161948 73*2175Sjp161948If B<XN_FLAG_DUMP_UNKNOWN_FIELDS> is set then the encoding of unknown fields is 74*2175Sjp161948printed instead of the values. 75*2175Sjp161948 76*2175Sjp161948If B<XN_FLAG_FN_ALIGN> is set then field names are padded to 20 characters: this 77*2175Sjp161948is only of use for multiline format. 78*2175Sjp161948 79*2175Sjp161948Additionally all the options supported by ASN1_STRING_print_ex() can be used to 80*2175Sjp161948control how each field value is displayed. 81*2175Sjp161948 82*2175Sjp161948In addition a number options can be set for commonly used formats. 83*2175Sjp161948 84*2175Sjp161948B<XN_FLAG_RFC2253> sets options which produce an output compatible with RFC2253 it 85*2175Sjp161948is equivalent to: 86*2175Sjp161948 B<ASN1_STRFLGS_RFC2253 | XN_FLAG_SEP_COMMA_PLUS | XN_FLAG_DN_REV | XN_FLAG_FN_SN | XN_FLAG_DUMP_UNKNOWN_FIELDS> 87*2175Sjp161948 88*2175Sjp161948 89*2175Sjp161948B<XN_FLAG_ONELINE> is a more readable one line format it is the same as: 90*2175Sjp161948 B<ASN1_STRFLGS_RFC2253 | ASN1_STRFLGS_ESC_QUOTE | XN_FLAG_SEP_CPLUS_SPC | XN_FLAG_SPC_EQ | XN_FLAG_FN_SN> 91*2175Sjp161948 92*2175Sjp161948B<XN_FLAG_MULTILINE> is a multiline format is is the same as: 93*2175Sjp161948 B<ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB | XN_FLAG_SEP_MULTILINE | XN_FLAG_SPC_EQ | XN_FLAG_FN_LN | XN_FLAG_FN_ALIGN> 94*2175Sjp161948 95*2175Sjp161948B<XN_FLAG_COMPAT> uses a format identical to X509_NAME_print(): in fact it calls X509_NAME_print() internally. 96*2175Sjp161948 97*2175Sjp161948=head1 SEE ALSO 98*2175Sjp161948 99*2175Sjp161948L<ASN1_STRING_print_ex(3)|ASN1_STRING_print_ex(3)> 100*2175Sjp161948 101*2175Sjp161948=head1 HISTORY 102*2175Sjp161948 103*2175Sjp161948TBA 104*2175Sjp161948 105*2175Sjp161948=cut 106