ed55ab06af2ec7401a6d1f54fd04abf2470684d6
[dragonfly.git] / secure / lib / libssl / man / SSL_CTX_set_default_passwd_cb.3
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 "SSL_CTX_set_default_passwd_cb 3"
132 .TH SSL_CTX_set_default_passwd_cb 3 "2008-09-06" "0.9.8h" "OpenSSL"
133 .SH "NAME"
134 SSL_CTX_set_default_passwd_cb, SSL_CTX_set_default_passwd_cb_userdata \- set passwd callback for encrypted PEM file handling
135 .SH "SYNOPSIS"
136 .IX Header "SYNOPSIS"
137 .Vb 1
138 \& #include <openssl/ssl.h>
139 .Ve
140 .PP
141 .Vb 2
142 \& void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb);
143 \& void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u);
144 .Ve
145 .PP
146 .Vb 1
147 \& int pem_passwd_cb(char *buf, int size, int rwflag, void *userdata);
148 .Ve
149 .SH "DESCRIPTION"
150 .IX Header "DESCRIPTION"
151 \&\fISSL_CTX_set_default_passwd_cb()\fR sets the default password callback called
152 when loading/storing a \s-1PEM\s0 certificate with encryption.
153 .PP
154 \&\fISSL_CTX_set_default_passwd_cb_userdata()\fR sets a pointer to \fBuserdata\fR which
155 will be provided to the password callback on invocation.
156 .PP
157 The \fIpem_passwd_cb()\fR, which must be provided by the application, hands back the
158 password to be used during decryption. On invocation a pointer to \fBuserdata\fR
159 is provided. The pem_passwd_cb must write the password into the provided buffer
160 \&\fBbuf\fR which is of size \fBsize\fR. The actual length of the password must
161 be returned to the calling function. \fBrwflag\fR indicates whether the
162 callback is used for reading/decryption (rwflag=0) or writing/encryption
163 (rwflag=1).
164 .SH "NOTES"
165 .IX Header "NOTES"
166 When loading or storing private keys, a password might be supplied to
167 protect the private key. The way this password can be supplied may depend
168 on the application. If only one private key is handled, it can be practical
169 to have \fIpem_passwd_cb()\fR handle the password dialog interactively. If several
170 keys have to be handled, it can be practical to ask for the password once,
171 then keep it in memory and use it several times. In the last case, the
172 password could be stored into the \fBuserdata\fR storage and the
173 \&\fIpem_passwd_cb()\fR only returns the password already stored.
174 .PP
175 When asking for the password interactively, \fIpem_passwd_cb()\fR can use
176 \&\fBrwflag\fR to check, whether an item shall be encrypted (rwflag=1).
177 In this case the password dialog may ask for the same password twice
178 for comparison in order to catch typos, that would make decryption
179 impossible.
180 .PP
181 Other items in \s-1PEM\s0 formatting (certificates) can also be encrypted, it is
182 however not usual, as certificate information is considered public.
183 .SH "RETURN VALUES"
184 .IX Header "RETURN VALUES"
185 \&\fISSL_CTX_set_default_passwd_cb()\fR and \fISSL_CTX_set_default_passwd_cb_userdata()\fR
186 do not provide diagnostic information.
187 .SH "EXAMPLES"
188 .IX Header "EXAMPLES"
189 The following example returns the password provided as \fBuserdata\fR to the
190 calling function. The password is considered to be a '\e0' terminated
191 string. If the password does not fit into the buffer, the password is
192 truncated.
193 .PP
194 .Vb 6
195 \& int pem_passwd_cb(char *buf, int size, int rwflag, void *password)
196 \& {
197 \&  strncpy(buf, (char *)(password), size);
198 \&  buf[size - 1] = '\e0';
199 \&  return(strlen(buf));
200 \& }
201 .Ve
202 .SH "SEE ALSO"
203 .IX Header "SEE ALSO"
204 \&\fIssl\fR\|(3),
205 \&\fISSL_CTX_use_certificate\fR\|(3)