Upgrade to OpenSSL 0.9.8h.
[dragonfly.git] / secure / lib / libcrypto / man / X509_NAME_get_index_by_NID.3
... / ...
CommitLineData
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
13.de Sp \" Vertical space (when we can't use .PP)
14.if t .sp .5v
15.if n .sp
16..
17.de Vb \" Begin verbatim text
18.ft CW
19.nf
20.ne \\$1
21..
22.de Ve \" End verbatim text
23.ft R
24.fi
25..
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
34.ie n \{\
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
43'br\}
44.el\{\
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
49'br\}
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
58..
59. nr % 0
60. rr F
61.\}
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
68.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69.\" Fear. Run. Save yourself. No user-serviceable parts.
70. \" fudge factors for nroff and troff
71.if n \{\
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
77.\}
78.if t \{\
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
84.\}
85. \" simple accents for nroff and troff
86.if n \{\
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
93.\}
94.if t \{\
95. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101.\}
102. \" troff and (daisy-wheel) nroff accents
103.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110.ds ae a\h'-(\w'a'u*4/10)'e
111.ds Ae A\h'-(\w'A'u*4/10)'E
112. \" corrections for vroff
113.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115. \" for low resolution devices (crt and lpr)
116.if \n(.H>23 .if \n(.V>19 \
117\{\
118. ds : e
119. ds 8 ss
120. ds o a
121. ds d- d\h'-1'\(ga
122. ds D- D\h'-1'\(hy
123. ds th \o'bp'
124. ds Th \o'LP'
125. ds ae ae
126. ds Ae AE
127.\}
128.rm #[ #] #H #V #F C
129.\" ========================================================================
130.\"
131.IX Title "X509_NAME_get_index_by_NID 3"
132.TH X509_NAME_get_index_by_NID 3 "2008-09-06" "0.9.8h" "OpenSSL"
133.SH "NAME"
134X509_NAME_get_index_by_NID, X509_NAME_get_index_by_OBJ, X509_NAME_get_entry,
135X509_NAME_entry_count, X509_NAME_get_text_by_NID, X509_NAME_get_text_by_OBJ \-
136X509_NAME lookup and enumeration functions
137.SH "SYNOPSIS"
138.IX Header "SYNOPSIS"
139int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos);
140int X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj, int lastpos);
141.PP
142int X509_NAME_entry_count(X509_NAME *name);
143X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
144.PP
145int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf,int len);
146int X509_NAME_get_text_by_OBJ(X509_NAME *name, \s-1ASN1_OBJECT\s0 *obj, char *buf,int len);
147.SH "DESCRIPTION"
148.IX Header "DESCRIPTION"
149These functions allow an \fBX509_NAME\fR structure to be examined. The
150\&\fBX509_NAME\fR structure is the same as the \fBName\fR type defined in
151\&\s-1RFC2459\s0 (and elsewhere) and used for example in certificate subject
152and issuer names.
153.PP
154\&\fIX509_NAME_get_index_by_NID()\fR and \fIX509_NAME_get_index_by_OBJ()\fR retrieve
155the next index matching \fBnid\fR or \fBobj\fR after \fBlastpos\fR. \fBlastpos\fR
156should initially be set to \-1. If there are no more entries \-1 is returned.
157.PP
158\&\fIX509_NAME_entry_count()\fR returns the total number of entries in \fBname\fR.
159.PP
160\&\fIX509_NAME_get_entry()\fR retrieves the \fBX509_NAME_ENTRY\fR from \fBname\fR
161corresponding to index \fBloc\fR. Acceptable values for \fBloc\fR run from
1620 to (X509_NAME_entry_count(name) \- 1). The value returned is an
163internal pointer which must not be freed.
164.PP
165\&\fIX509_NAME_get_text_by_NID()\fR, \fIX509_NAME_get_text_by_OBJ()\fR retrieve
166the \*(L"text\*(R" from the first entry in \fBname\fR which matches \fBnid\fR or
167\&\fBobj\fR, if no such entry exists \-1 is returned. At most \fBlen\fR bytes
168will be written and the text written to \fBbuf\fR will be null
169terminated. The length of the output string written is returned
170excluding the terminating null. If \fBbuf\fR is <\s-1NULL\s0> then the amount
171of space needed in \fBbuf\fR (excluding the final null) is returned.
172.SH "NOTES"
173.IX Header "NOTES"
174\&\fIX509_NAME_get_text_by_NID()\fR and \fIX509_NAME_get_text_by_OBJ()\fR are
175legacy functions which have various limitations which make them
176of minimal use in practice. They can only find the first matching
177entry and will copy the contents of the field verbatim: this can
178be highly confusing if the target is a muticharacter string type
179like a BMPString or a UTF8String.
180.PP
181For a more general solution \fIX509_NAME_get_index_by_NID()\fR or
182\&\fIX509_NAME_get_index_by_OBJ()\fR should be used followed by
183\&\fIX509_NAME_get_entry()\fR on any matching indices and then the
184various \fBX509_NAME_ENTRY\fR utility functions on the result.
185.SH "EXAMPLES"
186.IX Header "EXAMPLES"
187Process all entries:
188.PP
189.Vb 2
190\& int i;
191\& X509_NAME_ENTRY *e;
192.Ve
193.PP
194.Vb 5
195\& for (i = 0; i < X509_NAME_entry_count(nm); i++)
196\& {
197\& e = X509_NAME_get_entry(nm, i);
198\& /* Do something with e */
199\& }
200.Ve
201.PP
202Process all commonName entries:
203.PP
204.Vb 2
205\& int loc;
206\& X509_NAME_ENTRY *e;
207.Ve
208.PP
209.Vb 9
210\& loc = -1;
211\& for (;;)
212\& {
213\& lastpos = X509_NAME_get_index_by_NID(nm, NID_commonName, lastpos);
214\& if (lastpos == -1)
215\& break;
216\& e = X509_NAME_get_entry(nm, lastpos);
217\& /* Do something with e */
218\& }
219.Ve
220.SH "RETURN VALUES"
221.IX Header "RETURN VALUES"
222\&\fIX509_NAME_get_index_by_NID()\fR and \fIX509_NAME_get_index_by_OBJ()\fR
223return the index of the next matching entry or \-1 if not found.
224.PP
225\&\fIX509_NAME_entry_count()\fR returns the total number of entries.
226.PP
227\&\fIX509_NAME_get_entry()\fR returns an \fBX509_NAME\fR pointer to the
228requested entry or \fB\s-1NULL\s0\fR if the index is invalid.
229.SH "SEE ALSO"
230.IX Header "SEE ALSO"
231\&\fIERR_get_error\fR\|(3), \fId2i_X509_NAME\fR\|(3)
232.SH "HISTORY"
233.IX Header "HISTORY"
234\&\s-1TBA\s0