2a19c0f81cd3637ada10c0fd74bd473e22096a8a
[dragonfly.git] / secure / lib / libssl / man / SSL_CTX_set_default_passwd_cb.3
1 .\" Automatically generated by Pod::Man version 1.15
2 .\" Wed Feb 19 16:47:40 2003
3 .\"
4 .\" Standard preamble:
5 .\" ======================================================================
6 .de Sh \" Subsection heading
7 .br
8 .if t .Sp
9 .ne 5
10 .PP
11 \fB\\$1\fR
12 .PP
13 ..
14 .de Sp \" Vertical space (when we can't use .PP)
15 .if t .sp .5v
16 .if n .sp
17 ..
18 .de Ip \" List item
19 .br
20 .ie \\n(.$>=3 .ne \\$3
21 .el .ne 3
22 .IP "\\$1" \\$2
23 ..
24 .de Vb \" Begin verbatim text
25 .ft CW
26 .nf
27 .ne \\$1
28 ..
29 .de Ve \" End verbatim text
30 .ft R
31
32 .fi
33 ..
34 .\" Set up some character translations and predefined strings.  \*(-- will
35 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
36 .\" double quote, and \*(R" will give a right double quote.  | will give a
37 .\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used
38 .\" to do unbreakable dashes and therefore won't be available.  \*(C` and
39 .\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
40 .tr \(*W-|\(bv\*(Tr
41 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
42 .ie n \{\
43 .    ds -- \(*W-
44 .    ds PI pi
45 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
46 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
47 .    ds L" ""
48 .    ds R" ""
49 .    ds C` ""
50 .    ds C' ""
51 'br\}
52 .el\{\
53 .    ds -- \|\(em\|
54 .    ds PI \(*p
55 .    ds L" ``
56 .    ds R" ''
57 'br\}
58 .\"
59 .\" If the F register is turned on, we'll generate index entries on stderr
60 .\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
61 .\" index entries marked with X<> in POD.  Of course, you'll have to process
62 .\" the output yourself in some meaningful fashion.
63 .if \nF \{\
64 .    de IX
65 .    tm Index:\\$1\t\\n%\t"\\$2"
66 ..
67 .    nr % 0
68 .    rr F
69 .\}
70 .\"
71 .\" For nroff, turn off justification.  Always turn off hyphenation; it
72 .\" makes way too many mistakes in technical documents.
73 .hy 0
74 .if n .na
75 .\"
76 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
77 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
78 .bd B 3
79 .    \" fudge factors for nroff and troff
80 .if n \{\
81 .    ds #H 0
82 .    ds #V .8m
83 .    ds #F .3m
84 .    ds #[ \f1
85 .    ds #] \fP
86 .\}
87 .if t \{\
88 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
89 .    ds #V .6m
90 .    ds #F 0
91 .    ds #[ \&
92 .    ds #] \&
93 .\}
94 .    \" simple accents for nroff and troff
95 .if n \{\
96 .    ds ' \&
97 .    ds ` \&
98 .    ds ^ \&
99 .    ds , \&
100 .    ds ~ ~
101 .    ds /
102 .\}
103 .if t \{\
104 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
105 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
106 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
107 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
108 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
109 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
110 .\}
111 .    \" troff and (daisy-wheel) nroff accents
112 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
113 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
114 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
115 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
116 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
117 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
118 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
119 .ds ae a\h'-(\w'a'u*4/10)'e
120 .ds Ae A\h'-(\w'A'u*4/10)'E
121 .    \" corrections for vroff
122 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
123 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
124 .    \" for low resolution devices (crt and lpr)
125 .if \n(.H>23 .if \n(.V>19 \
126 \{\
127 .    ds : e
128 .    ds 8 ss
129 .    ds o a
130 .    ds d- d\h'-1'\(ga
131 .    ds D- D\h'-1'\(hy
132 .    ds th \o'bp'
133 .    ds Th \o'LP'
134 .    ds ae ae
135 .    ds Ae AE
136 .\}
137 .rm #[ #] #H #V #F C
138 .\" ======================================================================
139 .\"
140 .IX Title "SSL_CTX_set_default_passwd_cb 3"
141 .TH SSL_CTX_set_default_passwd_cb 3 "0.9.7a" "2003-02-19" "OpenSSL"
142 .UC
143 .SH "NAME"
144 SSL_CTX_set_default_passwd_cb, SSL_CTX_set_default_passwd_cb_userdata \- set passwd callback for encrypted \s-1PEM\s0 file handling
145 .SH "SYNOPSIS"
146 .IX Header "SYNOPSIS"
147 .Vb 1
148 \& #include <openssl/ssl.h>
149 .Ve
150 .Vb 2
151 \& void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
152 \& void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
153 .Ve
154 .Vb 1
155 \& int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata);
156 .Ve
157 .SH "DESCRIPTION"
158 .IX Header "DESCRIPTION"
159 \&\fISSL_CTX_set_default_passwd_cb()\fR sets the default password callback called
160 when loading/storing a \s-1PEM\s0 certificate with encryption.
161 .PP
162 \&\fISSL_CTX_set_default_passwd_cb_userdata()\fR sets a pointer to \fBuserdata\fR which
163 will be provided to the password callback on invocation.
164 .PP
165 The \fIpem_passwd_cb()\fR, which must be provided by the application, hands back the
166 password to be used during decryption. On invocation a pointer to \fBuserdata\fR
167 is provided. The pem_passwd_cb must write the password into the provided buffer
168 \&\fBbuf\fR which is of size \fBsize\fR. The actual length of the password must
169 be returned to the calling function. \fBrwflag\fR indicates whether the
170 callback is used for reading/decryption (rwflag=0) or writing/encryption
171 (rwflag=1).
172 .SH "NOTES"
173 .IX Header "NOTES"
174 When loading or storing private keys, a password might be supplied to
175 protect the private key. The way this password can be supplied may depend
176 on the application. If only one private key is handled, it can be practical
177 to have \fIpem_passwd_cb()\fR handle the password dialog interactively. If several
178 keys have to be handled, it can be practical to ask for the password once,
179 then keep it in memory and use it several times. In the last case, the
180 password could be stored into the \fBuserdata\fR storage and the
181 \&\fIpem_passwd_cb()\fR only returns the password already stored.
182 .PP
183 When asking for the password interactively, \fIpem_passwd_cb()\fR can use
184 \&\fBrwflag\fR to check, whether an item shall be encrypted (rwflag=1).
185 In this case the password dialog may ask for the same password twice
186 for comparison in order to catch typos, that would make decryption
187 impossible.
188 .PP
189 Other items in \s-1PEM\s0 formatting (certificates) can also be encrypted, it is
190 however not usual, as certificate information is considered public.
191 .SH "RETURN VALUES"
192 .IX Header "RETURN VALUES"
193 \&\fISSL_CTX_set_default_passwd_cb()\fR and \fISSL_CTX_set_default_passwd_cb_userdata()\fR
194 do not provide diagnostic information.
195 .SH "EXAMPLES"
196 .IX Header "EXAMPLES"
197 The following example returns the password provided as \fBuserdata\fR to the
198 calling function. The password is considered to be a '\e0' terminated
199 string. If the password does not fit into the buffer, the password is
200 truncated.
201 .PP
202 .Vb 6
203 \& int pem_passwd_cb(char *buf, int size, int rwflag, void *password)
204 \& {
205 \&  strncpy(buf, (char *)(password), size);
206 \&  buf[size - 1] = '\e0';
207 \&  return(strlen(buf));
208 \& }
209 .Ve
210 .SH "SEE ALSO"
211 .IX Header "SEE ALSO"
212 ssl(3),
213 SSL_CTX_use_certificate(3)