]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/openssl-0.9.8d-fix_manpages-1.patch
Pakfire laedt die Listen jetzt besser und hat eine veraenderte Oberflaeche bekommen.
[ipfire-2.x.git] / src / patches / openssl-0.9.8d-fix_manpages-1.patch
CommitLineData
ddac6087
MT
1Submitted By: Robert Connolly <robert at linuxfromscratch dot org>
2Date: 2005-11-13
3Initial Package Version: 0.9.8a
4Upstream Status: Submitted upstream
5Origin: Anderson Lizardo
6Description: This patch fixes conflicts between man pages
7 installed by OpenSSL and those found on other
8 packages (particulary Shadow, Perl, and
9 Man-pages). It also fixes syntax errors on some
10 POD files that generates slightly broken man
11 pages.
12
13$LastChangedBy: igor $
14$Date: 2005-04-03 16:54:23 -0600 (Sun, 03 Apr 2005) $
15
16--- openssl-0.9.8a.orig/FAQ 2006-09-11 08:56:58.000000000 -0500
17+++ openssl-0.9.8a/FAQ 2006-09-11 08:57:19.000000000 -0500
18@@ -680,7 +680,7 @@
19
20 Multi-threaded applications must provide two callback functions to
21 OpenSSL by calling CRYPTO_set_locking_callback() and
22-CRYPTO_set_id_callback(). This is described in the threads(3)
23+CRYPTO_set_id_callback(). This is described in the openssl_threads(3)
24 manpage.
25
26 * I've compiled a program under Windows and it crashes: why?
27diff -Naur openssl-0.9.8a.orig/crypto/rand/md_rand.c openssl-0.9.8a/crypto/rand/md_rand.c
28--- openssl-0.9.8a.orig/crypto/rand/md_rand.c 2005-04-07 22:53:35.000000000 +0000
29+++ openssl-0.9.8a/crypto/rand/md_rand.c 2005-11-14 03:59:59.000000000 +0000
30@@ -196,7 +196,7 @@
31 int do_not_lock;
32
33 /*
34- * (Based on the rand(3) manpage)
35+ * (Based on the openssl_rand(3) manpage)
36 *
37 * The input is chopped up into units of 20 bytes (or less for
38 * the last block). Each of these blocks is run through the hash
39@@ -351,7 +351,7 @@
40 num_ceil = (1 + (num-1)/(MD_DIGEST_LENGTH/2)) * (MD_DIGEST_LENGTH/2);
41
42 /*
43- * (Based on the rand(3) manpage:)
44+ * (Based on the openssl_rand(3) manpage)
45 *
46 * For each group of 10 bytes (or less), we do the following:
47 *
48diff -Naur openssl-0.9.8a.orig/doc/apps/openssl-passwd.pod openssl-0.9.8a/doc/apps/openssl-passwd.pod
49--- openssl-0.9.8a.orig/doc/apps/openssl-passwd.pod 1970-01-01 00:00:00.000000000 +0000
50+++ openssl-0.9.8a/doc/apps/openssl-passwd.pod 2005-11-14 03:59:59.000000000 +0000
51@@ -0,0 +1,82 @@
52+=pod
53+
54+=head1 NAME
55+
56+openssl-passwd - compute password hashes
57+
58+=head1 SYNOPSIS
59+
60+B<openssl passwd>
61+[B<-crypt>]
62+[B<-1>]
63+[B<-apr1>]
64+[B<-salt> I<string>]
65+[B<-in> I<file>]
66+[B<-stdin>]
67+[B<-noverify>]
68+[B<-quiet>]
69+[B<-table>]
70+{I<password>}
71+
72+=head1 DESCRIPTION
73+
74+The B<passwd> command computes the hash of a password typed at
75+run-time or the hash of each password in a list. The password list is
76+taken from the named file for option B<-in file>, from stdin for
77+option B<-stdin>, or from the command line, or from the terminal otherwise.
78+The Unix standard algorithm B<crypt> and the MD5-based BSD password
79+algorithm B<1> and its Apache variant B<apr1> are available.
80+
81+=head1 OPTIONS
82+
83+=over 4
84+
85+=item B<-crypt>
86+
87+Use the B<crypt> algorithm (default).
88+
89+=item B<-1>
90+
91+Use the MD5 based BSD password algorithm B<1>.
92+
93+=item B<-apr1>
94+
95+Use the B<apr1> algorithm (Apache variant of the BSD algorithm).
96+
97+=item B<-salt> I<string>
98+
99+Use the specified salt.
100+When reading a password from the terminal, this implies B<-noverify>.
101+
102+=item B<-in> I<file>
103+
104+Read passwords from I<file>.
105+
106+=item B<-stdin>
107+
108+Read passwords from B<stdin>.
109+
110+=item B<-noverify>
111+
112+Don't verify when reading a password from the terminal.
113+
114+=item B<-quiet>
115+
116+Don't output warnings when passwords given at the command line are truncated.
117+
118+=item B<-table>
119+
120+In the output list, prepend the cleartext password and a TAB character
121+to each password hash.
122+
123+=back
124+
125+=head1 EXAMPLES
126+
127+B<openssl passwd -crypt -salt xx password> prints B<xxj31ZMTZzkVA>.
128+
129+B<openssl passwd -1 -salt xxxxxxxx password> prints B<$1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.>.
130+
131+B<openssl passwd -apr1 -salt xxxxxxxx password> prints B<$apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0>.
132+
133+=cut
134diff -Naur openssl-0.9.8a.orig/doc/apps/openssl.pod openssl-0.9.8a/doc/apps/openssl.pod
135--- openssl-0.9.8a.orig/doc/apps/openssl.pod 2004-01-04 18:59:14.000000000 +0000
136+++ openssl-0.9.8a/doc/apps/openssl.pod 2005-11-14 03:59:59.000000000 +0000
137@@ -125,7 +125,7 @@
138
139 Online Certificate Status Protocol utility.
140
141-=item L<B<passwd>|passwd(1)>
142+=item L<B<passwd>|openssl-passwd(1)>
143
144 Generation of hashed passwords.
145
146@@ -325,7 +325,7 @@
147 L<dhparam(1)|dhparam(1)>, L<dsa(1)|dsa(1)>, L<dsaparam(1)|dsaparam(1)>,
148 L<enc(1)|enc(1)>, L<gendsa(1)|gendsa(1)>,
149 L<genrsa(1)|genrsa(1)>, L<nseq(1)|nseq(1)>, L<openssl(1)|openssl(1)>,
150-L<passwd(1)|passwd(1)>,
151+L<openssl-passwd(1)|openssl-passwd(1)>,
152 L<pkcs12(1)|pkcs12(1)>, L<pkcs7(1)|pkcs7(1)>, L<pkcs8(1)|pkcs8(1)>,
153 L<rand(1)|rand(1)>, L<req(1)|req(1)>, L<rsa(1)|rsa(1)>,
154 L<rsautl(1)|rsautl(1)>, L<s_client(1)|s_client(1)>,
155diff -Naur openssl-0.9.8a.orig/doc/apps/passwd.pod openssl-0.9.8a/doc/apps/passwd.pod
156--- openssl-0.9.8a.orig/doc/apps/passwd.pod 2002-10-04 12:59:00.000000000 +0000
157+++ openssl-0.9.8a/doc/apps/passwd.pod 1970-01-01 00:00:00.000000000 +0000
158@@ -1,82 +0,0 @@
159-=pod
160-
161-=head1 NAME
162-
163-passwd - compute password hashes
164-
165-=head1 SYNOPSIS
166-
167-B<openssl passwd>
168-[B<-crypt>]
169-[B<-1>]
170-[B<-apr1>]
171-[B<-salt> I<string>]
172-[B<-in> I<file>]
173-[B<-stdin>]
174-[B<-noverify>]
175-[B<-quiet>]
176-[B<-table>]
177-{I<password>}
178-
179-=head1 DESCRIPTION
180-
181-The B<passwd> command computes the hash of a password typed at
182-run-time or the hash of each password in a list. The password list is
183-taken from the named file for option B<-in file>, from stdin for
184-option B<-stdin>, or from the command line, or from the terminal otherwise.
185-The Unix standard algorithm B<crypt> and the MD5-based BSD password
186-algorithm B<1> and its Apache variant B<apr1> are available.
187-
188-=head1 OPTIONS
189-
190-=over 4
191-
192-=item B<-crypt>
193-
194-Use the B<crypt> algorithm (default).
195-
196-=item B<-1>
197-
198-Use the MD5 based BSD password algorithm B<1>.
199-
200-=item B<-apr1>
201-
202-Use the B<apr1> algorithm (Apache variant of the BSD algorithm).
203-
204-=item B<-salt> I<string>
205-
206-Use the specified salt.
207-When reading a password from the terminal, this implies B<-noverify>.
208-
209-=item B<-in> I<file>
210-
211-Read passwords from I<file>.
212-
213-=item B<-stdin>
214-
215-Read passwords from B<stdin>.
216-
217-=item B<-noverify>
218-
219-Don't verify when reading a password from the terminal.
220-
221-=item B<-quiet>
222-
223-Don't output warnings when passwords given at the command line are truncated.
224-
225-=item B<-table>
226-
227-In the output list, prepend the cleartext password and a TAB character
228-to each password hash.
229-
230-=back
231-
232-=head1 EXAMPLES
233-
234-B<openssl passwd -crypt -salt xx password> prints B<xxj31ZMTZzkVA>.
235-
236-B<openssl passwd -1 -salt xxxxxxxx password> prints B<$1$xxxxxxxx$UYCIxa628.9qXjpQCjM4a.>.
237-
238-B<openssl passwd -apr1 -salt xxxxxxxx password> prints B<$apr1$xxxxxxxx$dxHfLAsjHkDRmG83UXe8K0>.
239-
240-=cut
241diff -Naur openssl-0.9.8a.orig/doc/crypto/BN_generate_prime.pod openssl-0.9.8a/doc/crypto/BN_generate_prime.pod
242--- openssl-0.9.8a.orig/doc/crypto/BN_generate_prime.pod 2003-01-13 13:18:22.000000000 +0000
243+++ openssl-0.9.8a/doc/crypto/BN_generate_prime.pod 2005-11-14 03:59:59.000000000 +0000
244@@ -90,7 +90,7 @@
245
246 =head1 SEE ALSO
247
248-L<bn(3)|bn(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>
249+L<bn(3)|bn(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>
250
251 =head1 HISTORY
252
253diff -Naur openssl-0.9.8a.orig/doc/crypto/BN_rand.pod openssl-0.9.8a/doc/crypto/BN_rand.pod
254--- openssl-0.9.8a.orig/doc/crypto/BN_rand.pod 2002-09-25 13:33:26.000000000 +0000
255+++ openssl-0.9.8a/doc/crypto/BN_rand.pod 2005-11-14 03:59:59.000000000 +0000
256@@ -45,7 +45,7 @@
257
258 =head1 SEE ALSO
259
260-L<bn(3)|bn(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
261+L<bn(3)|bn(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
262 L<RAND_add(3)|RAND_add(3)>, L<RAND_bytes(3)|RAND_bytes(3)>
263
264 =head1 HISTORY
265diff -Naur openssl-0.9.8a.orig/doc/crypto/CONF_modules_free.pod openssl-0.9.8a/doc/crypto/CONF_modules_free.pod
266--- openssl-0.9.8a.orig/doc/crypto/CONF_modules_free.pod 2004-03-02 13:31:32.000000000 +0000
267+++ openssl-0.9.8a/doc/crypto/CONF_modules_free.pod 2005-11-14 03:59:59.000000000 +0000
268@@ -37,7 +37,7 @@
269 =head1 SEE ALSO
270
271 L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>,
272-L<CONF_modules_load_file(3), CONF_modules_load_file(3)>
273+L<CONF_modules_load_file(3)|CONF_modules_load_file(3)>
274
275 =head1 HISTORY
276
277diff -Naur openssl-0.9.8a.orig/doc/crypto/CONF_modules_load_file.pod openssl-0.9.8a/doc/crypto/CONF_modules_load_file.pod
278--- openssl-0.9.8a.orig/doc/crypto/CONF_modules_load_file.pod 2004-03-02 13:31:32.000000000 +0000
279+++ openssl-0.9.8a/doc/crypto/CONF_modules_load_file.pod 2005-11-14 03:59:59.000000000 +0000
280@@ -51,7 +51,7 @@
281 =head1 SEE ALSO
282
283 L<conf(5)|conf(5)>, L<OPENSSL_config(3)|OPENSSL_config(3)>,
284-L<CONF_free(3), CONF_free(3)>, L<err(3),err(3)>
285+L<CONF_free(3)|CONF_free(3)>, L<openssl_err(3)|openssl_err(3)>
286
287 =head1 HISTORY
288
289diff -Naur openssl-0.9.8a.orig/doc/crypto/DH_generate_key.pod openssl-0.9.8a/doc/crypto/DH_generate_key.pod
290--- openssl-0.9.8a.orig/doc/crypto/DH_generate_key.pod 2002-09-25 13:33:27.000000000 +0000
291+++ openssl-0.9.8a/doc/crypto/DH_generate_key.pod 2005-11-14 03:59:59.000000000 +0000
292@@ -40,7 +40,7 @@
293
294 =head1 SEE ALSO
295
296-L<dh(3)|dh(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<DH_size(3)|DH_size(3)>
297+L<dh(3)|dh(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>, L<DH_size(3)|DH_size(3)>
298
299 =head1 HISTORY
300
301diff -Naur openssl-0.9.8a.orig/doc/crypto/DH_generate_parameters.pod openssl-0.9.8a/doc/crypto/DH_generate_parameters.pod
302--- openssl-0.9.8a.orig/doc/crypto/DH_generate_parameters.pod 2002-09-25 13:33:27.000000000 +0000
303+++ openssl-0.9.8a/doc/crypto/DH_generate_parameters.pod 2005-11-14 03:59:59.000000000 +0000
304@@ -59,7 +59,7 @@
305
306 =head1 SEE ALSO
307
308-L<dh(3)|dh(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
309+L<dh(3)|dh(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
310 L<DH_free(3)|DH_free(3)>
311
312 =head1 HISTORY
313diff -Naur openssl-0.9.8a.orig/doc/crypto/DSA_do_sign.pod openssl-0.9.8a/doc/crypto/DSA_do_sign.pod
314--- openssl-0.9.8a.orig/doc/crypto/DSA_do_sign.pod 2002-09-25 13:33:27.000000000 +0000
315+++ openssl-0.9.8a/doc/crypto/DSA_do_sign.pod 2005-11-14 03:59:59.000000000 +0000
316@@ -36,7 +36,7 @@
317
318 =head1 SEE ALSO
319
320-L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
321+L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
322 L<DSA_SIG_new(3)|DSA_SIG_new(3)>,
323 L<DSA_sign(3)|DSA_sign(3)>
324
325diff -Naur openssl-0.9.8a.orig/doc/crypto/DSA_generate_key.pod openssl-0.9.8a/doc/crypto/DSA_generate_key.pod
326--- openssl-0.9.8a.orig/doc/crypto/DSA_generate_key.pod 2002-09-25 13:33:27.000000000 +0000
327+++ openssl-0.9.8a/doc/crypto/DSA_generate_key.pod 2005-11-14 03:59:59.000000000 +0000
328@@ -24,7 +24,7 @@
329
330 =head1 SEE ALSO
331
332-L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
333+L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
334 L<DSA_generate_parameters(3)|DSA_generate_parameters(3)>
335
336 =head1 HISTORY
337diff -Naur openssl-0.9.8a.orig/doc/crypto/DSA_generate_parameters.pod openssl-0.9.8a/doc/crypto/DSA_generate_parameters.pod
338--- openssl-0.9.8a.orig/doc/crypto/DSA_generate_parameters.pod 2002-09-25 13:33:27.000000000 +0000
339+++ openssl-0.9.8a/doc/crypto/DSA_generate_parameters.pod 2005-11-14 03:59:59.000000000 +0000
340@@ -90,7 +90,7 @@
341
342 =head1 SEE ALSO
343
344-L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
345+L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
346 L<DSA_free(3)|DSA_free(3)>
347
348 =head1 HISTORY
349diff -Naur openssl-0.9.8a.orig/doc/crypto/DSA_sign.pod openssl-0.9.8a/doc/crypto/DSA_sign.pod
350--- openssl-0.9.8a.orig/doc/crypto/DSA_sign.pod 2002-09-25 13:33:27.000000000 +0000
351+++ openssl-0.9.8a/doc/crypto/DSA_sign.pod 2005-11-14 03:59:59.000000000 +0000
352@@ -55,7 +55,7 @@
353
354 =head1 SEE ALSO
355
356-L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>,
357+L<dsa(3)|dsa(3)>, L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>,
358 L<DSA_do_sign(3)|DSA_do_sign(3)>
359
360 =head1 HISTORY
361diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_GET_LIB.pod openssl-0.9.8a/doc/crypto/ERR_GET_LIB.pod
362--- openssl-0.9.8a.orig/doc/crypto/ERR_GET_LIB.pod 2000-02-01 01:36:58.000000000 +0000
363+++ openssl-0.9.8a/doc/crypto/ERR_GET_LIB.pod 2005-11-14 03:59:59.000000000 +0000
364@@ -41,7 +41,7 @@
365
366 =head1 SEE ALSO
367
368-L<err(3)|err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>
369+L<openssl_err(3)|openssl_err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>
370
371 =head1 HISTORY
372
373diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_clear_error.pod openssl-0.9.8a/doc/crypto/ERR_clear_error.pod
374--- openssl-0.9.8a.orig/doc/crypto/ERR_clear_error.pod 2000-02-01 01:36:58.000000000 +0000
375+++ openssl-0.9.8a/doc/crypto/ERR_clear_error.pod 2005-11-14 03:59:59.000000000 +0000
376@@ -20,7 +20,7 @@
377
378 =head1 SEE ALSO
379
380-L<err(3)|err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>
381+L<openssl_err(3)|openssl_err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>
382
383 =head1 HISTORY
384
385diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_error_string.pod openssl-0.9.8a/doc/crypto/ERR_error_string.pod
386--- openssl-0.9.8a.orig/doc/crypto/ERR_error_string.pod 2004-11-14 15:11:37.000000000 +0000
387+++ openssl-0.9.8a/doc/crypto/ERR_error_string.pod 2005-11-14 03:59:59.000000000 +0000
388@@ -60,7 +60,7 @@
389
390 =head1 SEE ALSO
391
392-L<err(3)|err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
393+L<openssl_err(3)|openssl_err(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
394 L<ERR_load_crypto_strings(3)|ERR_load_crypto_strings(3)>,
395 L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>
396 L<ERR_print_errors(3)|ERR_print_errors(3)>
397diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_get_error.pod openssl-0.9.8a/doc/crypto/ERR_get_error.pod
398--- openssl-0.9.8a.orig/doc/crypto/ERR_get_error.pod 2002-11-29 14:21:54.000000000 +0000
399+++ openssl-0.9.8a/doc/crypto/ERR_get_error.pod 2005-11-14 03:59:59.000000000 +0000
400@@ -61,7 +61,7 @@
401
402 =head1 SEE ALSO
403
404-L<err(3)|err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>,
405+L<openssl_err(3)|openssl_err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>,
406 L<ERR_GET_LIB(3)|ERR_GET_LIB(3)>
407
408 =head1 HISTORY
409diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_load_crypto_strings.pod openssl-0.9.8a/doc/crypto/ERR_load_crypto_strings.pod
410--- openssl-0.9.8a.orig/doc/crypto/ERR_load_crypto_strings.pod 2000-02-24 11:55:08.000000000 +0000
411+++ openssl-0.9.8a/doc/crypto/ERR_load_crypto_strings.pod 2005-11-14 03:59:59.000000000 +0000
412@@ -35,7 +35,7 @@
413
414 =head1 SEE ALSO
415
416-L<err(3)|err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>
417+L<openssl_err(3)|openssl_err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>
418
419 =head1 HISTORY
420
421diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_load_strings.pod openssl-0.9.8a/doc/crypto/ERR_load_strings.pod
422--- openssl-0.9.8a.orig/doc/crypto/ERR_load_strings.pod 2000-02-24 11:55:08.000000000 +0000
423+++ openssl-0.9.8a/doc/crypto/ERR_load_strings.pod 2005-11-14 03:59:59.000000000 +0000
424@@ -43,7 +43,7 @@
425
426 =head1 SEE ALSO
427
428-L<err(3)|err(3)>, L<ERR_load_strings(3)|ERR_load_strings(3)>
429+L<openssl_err(3)|openssl_err(3)>, L<ERR_load_strings(3)|ERR_load_strings(3)>
430
431 =head1 HISTORY
432
433diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_print_errors.pod openssl-0.9.8a/doc/crypto/ERR_print_errors.pod
434--- openssl-0.9.8a.orig/doc/crypto/ERR_print_errors.pod 2000-02-01 01:36:59.000000000 +0000
435+++ openssl-0.9.8a/doc/crypto/ERR_print_errors.pod 2005-11-14 03:59:59.000000000 +0000
436@@ -38,7 +38,7 @@
437
438 =head1 SEE ALSO
439
440-L<err(3)|err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>,
441+L<openssl_err(3)|openssl_err(3)>, L<ERR_error_string(3)|ERR_error_string(3)>,
442 L<ERR_get_error(3)|ERR_get_error(3)>,
443 L<ERR_load_crypto_strings(3)|ERR_load_crypto_strings(3)>,
444 L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>
445diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_put_error.pod openssl-0.9.8a/doc/crypto/ERR_put_error.pod
446--- openssl-0.9.8a.orig/doc/crypto/ERR_put_error.pod 2000-02-24 11:55:08.000000000 +0000
447+++ openssl-0.9.8a/doc/crypto/ERR_put_error.pod 2005-11-14 03:59:59.000000000 +0000
448@@ -34,7 +34,7 @@
449
450 =head1 SEE ALSO
451
452-L<err(3)|err(3)>, L<ERR_load_strings(3)|ERR_load_strings(3)>
453+L<openssl_err(3)|openssl_err(3)>, L<ERR_load_strings(3)|ERR_load_strings(3)>
454
455 =head1 HISTORY
456
457diff -Naur openssl-0.9.8a.orig/doc/crypto/ERR_remove_state.pod openssl-0.9.8a/doc/crypto/ERR_remove_state.pod
458--- openssl-0.9.8a.orig/doc/crypto/ERR_remove_state.pod 2000-05-19 07:54:42.000000000 +0000
459+++ openssl-0.9.8a/doc/crypto/ERR_remove_state.pod 2005-11-14 03:59:59.000000000 +0000
460@@ -25,7 +25,7 @@
461
462 =head1 SEE ALSO
463
464-L<err(3)|err(3)>
465+L<openssl_err(3)|openssl_err(3)>
466
467 =head1 HISTORY
468
469diff -Naur openssl-0.9.8a.orig/doc/crypto/EVP_BytesToKey.pod openssl-0.9.8a/doc/crypto/EVP_BytesToKey.pod
470--- openssl-0.9.8a.orig/doc/crypto/EVP_BytesToKey.pod 2004-11-25 17:47:30.000000000 +0000
471+++ openssl-0.9.8a/doc/crypto/EVP_BytesToKey.pod 2005-11-14 04:00:45.000000000 +0000
472@@ -59,7 +59,7 @@
473
474 =head1 SEE ALSO
475
476-L<evp(3)|evp(3)>, L<rand(3)|rand(3)>,
477+L<evp(3)|evp(3)>, L<openssl_rand(3)|openssl_rand(3)>,
478 L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>
479
480 =head1 HISTORY
481diff -Naur openssl-0.9.8a.orig/doc/crypto/EVP_OpenInit.pod openssl-0.9.8a/doc/crypto/EVP_OpenInit.pod
482--- openssl-0.9.8a.orig/doc/crypto/EVP_OpenInit.pod 2000-09-23 07:16:14.000000000 +0000
483+++ openssl-0.9.8a/doc/crypto/EVP_OpenInit.pod 2005-11-14 03:59:59.000000000 +0000
484@@ -54,7 +54,7 @@
485
486 =head1 SEE ALSO
487
488-L<evp(3)|evp(3)>, L<rand(3)|rand(3)>,
489+L<evp(3)|evp(3)>, L<openssl_rand(3)|openssl_rand(3)>,
490 L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>,
491 L<EVP_SealInit(3)|EVP_SealInit(3)>
492
493diff -Naur openssl-0.9.8a.orig/doc/crypto/EVP_SealInit.pod openssl-0.9.8a/doc/crypto/EVP_SealInit.pod
494--- openssl-0.9.8a.orig/doc/crypto/EVP_SealInit.pod 2005-03-29 17:50:08.000000000 +0000
495+++ openssl-0.9.8a/doc/crypto/EVP_SealInit.pod 2005-11-14 03:59:59.000000000 +0000
496@@ -74,7 +74,7 @@
497
498 =head1 SEE ALSO
499
500-L<evp(3)|evp(3)>, L<rand(3)|rand(3)>,
501+L<evp(3)|evp(3)>, L<openssl_rand(3)|openssl_rand(3)>,
502 L<EVP_EncryptInit(3)|EVP_EncryptInit(3)>,
503 L<EVP_OpenInit(3)|EVP_OpenInit(3)>
504
505diff -Naur openssl-0.9.8a.orig/doc/crypto/EVP_SignInit.pod openssl-0.9.8a/doc/crypto/EVP_SignInit.pod
506--- openssl-0.9.8a.orig/doc/crypto/EVP_SignInit.pod 2005-03-22 17:55:33.000000000 +0000
507+++ openssl-0.9.8a/doc/crypto/EVP_SignInit.pod 2005-11-14 03:59:59.000000000 +0000
508@@ -80,7 +80,7 @@
509 =head1 SEE ALSO
510
511 L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>,
512-L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<err(3)|err(3)>,
513+L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<openssl_err(3)|openssl_err(3)>,
514 L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>,
515 L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>,
516 L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)>
517diff -Naur openssl-0.9.8a.orig/doc/crypto/EVP_VerifyInit.pod openssl-0.9.8a/doc/crypto/EVP_VerifyInit.pod
518--- openssl-0.9.8a.orig/doc/crypto/EVP_VerifyInit.pod 2002-07-10 19:35:46.000000000 +0000
519+++ openssl-0.9.8a/doc/crypto/EVP_VerifyInit.pod 2005-11-14 03:59:59.000000000 +0000
520@@ -71,7 +71,7 @@
521
522 L<evp(3)|evp(3)>,
523 L<EVP_SignInit(3)|EVP_SignInit(3)>,
524-L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<err(3)|err(3)>,
525+L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<openssl_err(3)|openssl_err(3)>,
526 L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>,
527 L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>,
528 L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)>
529diff -Naur openssl-0.9.8a.orig/doc/crypto/OPENSSL_config.pod openssl-0.9.8a/doc/crypto/OPENSSL_config.pod
530--- openssl-0.9.8a.orig/doc/crypto/OPENSSL_config.pod 2005-06-02 23:17:38.000000000 +0000
531+++ openssl-0.9.8a/doc/crypto/OPENSSL_config.pod 2005-11-14 03:59:59.000000000 +0000
532@@ -73,7 +73,7 @@
533 =head1 SEE ALSO
534
535 L<conf(5)|conf(5)>, L<CONF_load_modules_file(3)|CONF_load_modules_file(3)>,
536-L<CONF_modules_free(3),CONF_modules_free(3)>
537+L<CONF_modules_free(3)|CONF_modules_free(3)>
538
539 =head1 HISTORY
540
541diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_add.pod openssl-0.9.8a/doc/crypto/RAND_add.pod
542--- openssl-0.9.8a.orig/doc/crypto/RAND_add.pod 2000-03-22 15:30:03.000000000 +0000
543+++ openssl-0.9.8a/doc/crypto/RAND_add.pod 2005-11-14 03:59:59.000000000 +0000
544@@ -65,7 +65,7 @@
545
546 =head1 SEE ALSO
547
548-L<rand(3)|rand(3)>, L<RAND_egd(3)|RAND_egd(3)>,
549+L<openssl_rand(3)|openssl_rand(3)>, L<RAND_egd(3)|RAND_egd(3)>,
550 L<RAND_load_file(3)|RAND_load_file(3)>, L<RAND_cleanup(3)|RAND_cleanup(3)>
551
552 =head1 HISTORY
553diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_bytes.pod openssl-0.9.8a/doc/crypto/RAND_bytes.pod
554--- openssl-0.9.8a.orig/doc/crypto/RAND_bytes.pod 2002-09-25 13:33:27.000000000 +0000
555+++ openssl-0.9.8a/doc/crypto/RAND_bytes.pod 2005-11-14 03:59:59.000000000 +0000
556@@ -35,7 +35,7 @@
557
558 =head1 SEE ALSO
559
560-L<rand(3)|rand(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
561+L<openssl_rand(3)|openssl_rand(3)>, L<ERR_get_error(3)|ERR_get_error(3)>,
562 L<RAND_add(3)|RAND_add(3)>
563
564 =head1 HISTORY
565diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_cleanup.pod openssl-0.9.8a/doc/crypto/RAND_cleanup.pod
566--- openssl-0.9.8a.orig/doc/crypto/RAND_cleanup.pod 2000-01-27 01:25:06.000000000 +0000
567+++ openssl-0.9.8a/doc/crypto/RAND_cleanup.pod 2005-11-14 03:59:59.000000000 +0000
568@@ -20,7 +20,7 @@
569
570 =head1 SEE ALSO
571
572-L<rand(3)|rand(3)>
573+L<openssl_rand(3)|openssl_rand(3)>
574
575 =head1 HISTORY
576
577diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_egd.pod openssl-0.9.8a/doc/crypto/RAND_egd.pod
578--- openssl-0.9.8a.orig/doc/crypto/RAND_egd.pod 2001-02-10 19:10:36.000000000 +0000
579+++ openssl-0.9.8a/doc/crypto/RAND_egd.pod 2005-11-14 03:59:59.000000000 +0000
580@@ -69,7 +69,7 @@
581
582 =head1 SEE ALSO
583
584-L<rand(3)|rand(3)>, L<RAND_add(3)|RAND_add(3)>,
585+L<openssl_rand(3)|openssl_rand(3)>, L<RAND_add(3)|RAND_add(3)>,
586 L<RAND_cleanup(3)|RAND_cleanup(3)>
587
588 =head1 HISTORY
589diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_load_file.pod openssl-0.9.8a/doc/crypto/RAND_load_file.pod
590--- openssl-0.9.8a.orig/doc/crypto/RAND_load_file.pod 2001-03-21 15:25:56.000000000 +0000
591+++ openssl-0.9.8a/doc/crypto/RAND_load_file.pod 2005-11-14 03:59:59.000000000 +0000
592@@ -43,7 +43,7 @@
593
594 =head1 SEE ALSO
595
596-L<rand(3)|rand(3)>, L<RAND_add(3)|RAND_add(3)>, L<RAND_cleanup(3)|RAND_cleanup(3)>
597+L<openssl_rand(3)|openssl_rand(3)>, L<RAND_add(3)|RAND_add(3)>, L<RAND_cleanup(3)|RAND_cleanup(3)>
598
599 =head1 HISTORY
600
601diff -Naur openssl-0.9.8a.orig/doc/crypto/RAND_set_rand_method.pod openssl-0.9.8a/doc/crypto/RAND_set_rand_method.pod
602--- openssl-0.9.8a.orig/doc/crypto/RAND_set_rand_method.pod 2002-08-05 16:27:01.000000000 +0000
603+++ openssl-0.9.8a/doc/crypto/RAND_set_rand_method.pod 2005-11-14 03:59:59.000000000 +0000
604@@ -67,7 +67,7 @@
605
606 =head1 SEE ALSO
607
608-L<rand(3)|rand(3)>, L<engine(3)|engine(3)>
609+L<openssl_rand(3)|openssl_rand(3)>, L<engine(3)|engine(3)>
610
611 =head1 HISTORY
612
613diff -Naur openssl-0.9.8a.orig/doc/crypto/RSA_blinding_on.pod openssl-0.9.8a/doc/crypto/RSA_blinding_on.pod
614--- openssl-0.9.8a.orig/doc/crypto/RSA_blinding_on.pod 2000-02-24 11:55:10.000000000 +0000
615+++ openssl-0.9.8a/doc/crypto/RSA_blinding_on.pod 2005-11-14 03:59:59.000000000 +0000
616@@ -34,7 +34,7 @@
617
618 =head1 SEE ALSO
619
620-L<rsa(3)|rsa(3)>, L<rand(3)|rand(3)>
621+L<rsa(3)|rsa(3)>, L<openssl_rand(3)|openssl_rand(3)>
622
623 =head1 HISTORY
624
625diff -Naur openssl-0.9.8a.orig/doc/crypto/RSA_generate_key.pod openssl-0.9.8a/doc/crypto/RSA_generate_key.pod
626--- openssl-0.9.8a.orig/doc/crypto/RSA_generate_key.pod 2002-09-25 13:33:27.000000000 +0000
627+++ openssl-0.9.8a/doc/crypto/RSA_generate_key.pod 2005-11-14 03:59:59.000000000 +0000
628@@ -59,7 +59,7 @@
629
630 =head1 SEE ALSO
631
632-L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>,
633+L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>, L<rsa(3)|rsa(3)>,
634 L<RSA_free(3)|RSA_free(3)>
635
636 =head1 HISTORY
637diff -Naur openssl-0.9.8a.orig/doc/crypto/RSA_public_encrypt.pod openssl-0.9.8a/doc/crypto/RSA_public_encrypt.pod
638--- openssl-0.9.8a.orig/doc/crypto/RSA_public_encrypt.pod 2004-03-23 21:01:34.000000000 +0000
639+++ openssl-0.9.8a/doc/crypto/RSA_public_encrypt.pod 2005-11-14 03:59:59.000000000 +0000
640@@ -73,7 +73,7 @@
641
642 =head1 SEE ALSO
643
644-L<ERR_get_error(3)|ERR_get_error(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>,
645+L<ERR_get_error(3)|ERR_get_error(3)>, L<openssl_rand(3)|openssl_rand(3)>, L<rsa(3)|rsa(3)>,
646 L<RSA_size(3)|RSA_size(3)>
647
648 =head1 HISTORY
649diff -Naur openssl-0.9.8a.orig/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod openssl-0.9.8a/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod
650--- openssl-0.9.8a.orig/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod 2002-09-25 13:33:28.000000000 +0000
651+++ openssl-0.9.8a/doc/crypto/RSA_sign_ASN1_OCTET_STRING.pod 2005-11-14 03:59:59.000000000 +0000
652@@ -48,7 +48,7 @@
653 =head1 SEE ALSO
654
655 L<ERR_get_error(3)|ERR_get_error(3)>, L<objects(3)|objects(3)>,
656-L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, L<RSA_sign(3)|RSA_sign(3)>,
657+L<openssl_rand(3)|openssl_rand(3)>, L<rsa(3)|rsa(3)>, L<RSA_sign(3)|RSA_sign(3)>,
658 L<RSA_verify(3)|RSA_verify(3)>
659
660 =head1 HISTORY
661diff -Naur openssl-0.9.8a.orig/doc/crypto/X509_NAME_ENTRY_get_object.pod openssl-0.9.8a/doc/crypto/X509_NAME_ENTRY_get_object.pod
662--- openssl-0.9.8a.orig/doc/crypto/X509_NAME_ENTRY_get_object.pod 2005-03-30 11:50:14.000000000 +0000
663+++ openssl-0.9.8a/doc/crypto/X509_NAME_ENTRY_get_object.pod 2005-11-14 03:59:59.000000000 +0000
664@@ -63,7 +63,7 @@
665 =head1 SEE ALSO
666
667 L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_X509_NAME(3)|d2i_X509_NAME(3)>,
668-L<OBJ_nid2obj(3),OBJ_nid2obj(3)>
669+L<OBJ_nid2obj(3)|OBJ_nid2obj(3)>
670
671 =head1 HISTORY
672
673diff -Naur openssl-0.9.8a.orig/doc/crypto/bn.pod openssl-0.9.8a/doc/crypto/bn.pod
674--- openssl-0.9.8a.orig/doc/crypto/bn.pod 2005-04-29 15:07:34.000000000 +0000
675+++ openssl-0.9.8a/doc/crypto/bn.pod 2005-11-14 03:59:59.000000000 +0000
676@@ -167,7 +167,7 @@
677 =head1 SEE ALSO
678
679 L<bn_internal(3)|bn_internal(3)>,
680-L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>,
681+L<dh(3)|dh(3)>, L<openssl_err(3)|openssl_err(3)>, L<openssl_rand(3)|openssl_rand(3)>, L<rsa(3)|rsa(3)>,
682 L<BN_new(3)|BN_new(3)>, L<BN_CTX_new(3)|BN_CTX_new(3)>,
683 L<BN_copy(3)|BN_copy(3)>, L<BN_swap(3)|BN_swap(3)>, L<BN_num_bytes(3)|BN_num_bytes(3)>,
684 L<BN_add(3)|BN_add(3)>, L<BN_add_word(3)|BN_add_word(3)>,
685diff -Naur openssl-0.9.8a.orig/doc/crypto/crypto.pod openssl-0.9.8a/doc/crypto/crypto.pod
686--- openssl-0.9.8a.orig/doc/crypto/crypto.pod 2002-10-06 12:59:25.000000000 +0000
687+++ openssl-0.9.8a/doc/crypto/crypto.pod 2005-11-14 03:59:59.000000000 +0000
688@@ -46,7 +46,7 @@
689
690 =item AUXILIARY FUNCTIONS
691
692-L<err(3)|err(3)>, L<threads(3)|threads(3)>, L<rand(3)|rand(3)>,
693+L<openssl_err(3)|openssl_err(3)>, L<openssl_threads(3)|openssl_threads(3)>, L<openssl_rand(3)|openssl_rand(3)>,
694 L<OPENSSL_VERSION_NUMBER(3)|OPENSSL_VERSION_NUMBER(3)>
695
696 =item INPUT/OUTPUT, DATA ENCODING
697diff -Naur openssl-0.9.8a.orig/doc/crypto/des.pod openssl-0.9.8a/doc/crypto/des.pod
698--- openssl-0.9.8a.orig/doc/crypto/des.pod 2003-10-01 15:02:45.000000000 +0000
699+++ openssl-0.9.8a/doc/crypto/des.pod 2005-11-14 03:59:59.000000000 +0000
700@@ -115,7 +115,7 @@
701 the key; it is used to speed the encryption process.
702
703 DES_random_key() generates a random key. The PRNG must be seeded
704-prior to using this function (see L<rand(3)|rand(3)>). If the PRNG
705+prior to using this function (see L<openssl_rand(3)|openssl_rand(3)>). If the PRNG
706 could not generate a secure key, 0 is returned.
707
708 Before a DES key can be used, it must be converted into the
709@@ -317,7 +317,7 @@
710
711 =head1 SEE ALSO
712
713-crypt(3), L<des_modes(7)|des_modes(7)>, L<evp(3)|evp(3)>, L<rand(3)|rand(3)>
714+crypt(3), L<des_modes(7)|des_modes(7)>, L<evp(3)|evp(3)>, L<openssl_rand(3)|openssl_rand(3)>
715
716 =head1 HISTORY
717
718diff -Naur openssl-0.9.8a.orig/doc/crypto/dh.pod openssl-0.9.8a/doc/crypto/dh.pod
719--- openssl-0.9.8a.orig/doc/crypto/dh.pod 2002-08-05 16:27:01.000000000 +0000
720+++ openssl-0.9.8a/doc/crypto/dh.pod 2005-11-14 03:59:59.000000000 +0000
721@@ -67,8 +67,8 @@
722
723 =head1 SEE ALSO
724
725-L<dhparam(1)|dhparam(1)>, L<bn(3)|bn(3)>, L<dsa(3)|dsa(3)>, L<err(3)|err(3)>,
726-L<rand(3)|rand(3)>, L<rsa(3)|rsa(3)>, L<engine(3)|engine(3)>,
727+L<dhparam(1)|dhparam(1)>, L<bn(3)|bn(3)>, L<dsa(3)|dsa(3)>, L<openssl_err(3)|openssl_err(3)>,
728+L<openssl_rand(3)|openssl_rand(3)>, L<rsa(3)|rsa(3)>, L<engine(3)|engine(3)>,
729 L<DH_set_method(3)|DH_set_method(3)>, L<DH_new(3)|DH_new(3)>,
730 L<DH_get_ex_new_index(3)|DH_get_ex_new_index(3)>,
731 L<DH_generate_parameters(3)|DH_generate_parameters(3)>,
732diff -Naur openssl-0.9.8a.orig/doc/crypto/dsa.pod openssl-0.9.8a/doc/crypto/dsa.pod
733--- openssl-0.9.8a.orig/doc/crypto/dsa.pod 2002-08-05 16:27:01.000000000 +0000
734+++ openssl-0.9.8a/doc/crypto/dsa.pod 2005-11-14 03:59:59.000000000 +0000
735@@ -100,7 +100,7 @@
736
737 =head1 SEE ALSO
738
739-L<bn(3)|bn(3)>, L<dh(3)|dh(3)>, L<err(3)|err(3)>, L<rand(3)|rand(3)>,
740+L<bn(3)|bn(3)>, L<dh(3)|dh(3)>, L<openssl_err(3)|openssl_err(3)>, L<openssl_rand(3)|openssl_rand(3)>,
741 L<rsa(3)|rsa(3)>, L<sha(3)|sha(3)>, L<engine(3)|engine(3)>,
742 L<DSA_new(3)|DSA_new(3)>,
743 L<DSA_size(3)|DSA_size(3)>,
744diff -Naur openssl-0.9.8a.orig/doc/crypto/engine.pod openssl-0.9.8a/doc/crypto/engine.pod
745--- openssl-0.9.8a.orig/doc/crypto/engine.pod 2004-06-17 23:40:14.000000000 +0000
746+++ openssl-0.9.8a/doc/crypto/engine.pod 2005-11-14 04:01:19.000000000 +0000
747@@ -594,6 +594,6 @@
748
749 =head1 SEE ALSO
750
751-L<rsa(3)|rsa(3)>, L<dsa(3)|dsa(3)>, L<dh(3)|dh(3)>, L<rand(3)|rand(3)>
752+L<rsa(3)|rsa(3)>, L<dsa(3)|dsa(3)>, L<dh(3)|dh(3)>, L<openssl_rand(3)|openssl_rand(3)>
753
754 =cut
755diff -Naur openssl-0.9.8a.orig/doc/crypto/err.pod openssl-0.9.8a/doc/crypto/err.pod
756--- openssl-0.9.8a.orig/doc/crypto/err.pod 2002-07-10 19:35:46.000000000 +0000
757+++ openssl-0.9.8a/doc/crypto/err.pod 1970-01-01 00:00:00.000000000 +0000
758@@ -1,187 +0,0 @@
759-=pod
760-
761-=head1 NAME
762-
763-err - error codes
764-
765-=head1 SYNOPSIS
766-
767- #include <openssl/err.h>
768-
769- unsigned long ERR_get_error(void);
770- unsigned long ERR_peek_error(void);
771- unsigned long ERR_get_error_line(const char **file, int *line);
772- unsigned long ERR_peek_error_line(const char **file, int *line);
773- unsigned long ERR_get_error_line_data(const char **file, int *line,
774- const char **data, int *flags);
775- unsigned long ERR_peek_error_line_data(const char **file, int *line,
776- const char **data, int *flags);
777-
778- int ERR_GET_LIB(unsigned long e);
779- int ERR_GET_FUNC(unsigned long e);
780- int ERR_GET_REASON(unsigned long e);
781-
782- void ERR_clear_error(void);
783-
784- char *ERR_error_string(unsigned long e, char *buf);
785- const char *ERR_lib_error_string(unsigned long e);
786- const char *ERR_func_error_string(unsigned long e);
787- const char *ERR_reason_error_string(unsigned long e);
788-
789- void ERR_print_errors(BIO *bp);
790- void ERR_print_errors_fp(FILE *fp);
791-
792- void ERR_load_crypto_strings(void);
793- void ERR_free_strings(void);
794-
795- void ERR_remove_state(unsigned long pid);
796-
797- void ERR_put_error(int lib, int func, int reason, const char *file,
798- int line);
799- void ERR_add_error_data(int num, ...);
800-
801- void ERR_load_strings(int lib,ERR_STRING_DATA str[]);
802- unsigned long ERR_PACK(int lib, int func, int reason);
803- int ERR_get_next_error_library(void);
804-
805-=head1 DESCRIPTION
806-
807-When a call to the OpenSSL library fails, this is usually signalled
808-by the return value, and an error code is stored in an error queue
809-associated with the current thread. The B<err> library provides
810-functions to obtain these error codes and textual error messages.
811-
812-The L<ERR_get_error(3)|ERR_get_error(3)> manpage describes how to
813-access error codes.
814-
815-Error codes contain information about where the error occurred, and
816-what went wrong. L<ERR_GET_LIB(3)|ERR_GET_LIB(3)> describes how to
817-extract this information. A method to obtain human-readable error
818-messages is described in L<ERR_error_string(3)|ERR_error_string(3)>.
819-
820-L<ERR_clear_error(3)|ERR_clear_error(3)> can be used to clear the
821-error queue.
822-
823-Note that L<ERR_remove_state(3)|ERR_remove_state(3)> should be used to
824-avoid memory leaks when threads are terminated.
825-
826-=head1 ADDING NEW ERROR CODES TO OPENSSL
827-
828-See L<ERR_put_error(3)> if you want to record error codes in the
829-OpenSSL error system from within your application.
830-
831-The remainder of this section is of interest only if you want to add
832-new error codes to OpenSSL or add error codes from external libraries.
833-
834-=head2 Reporting errors
835-
836-Each sub-library has a specific macro XXXerr() that is used to report
837-errors. Its first argument is a function code B<XXX_F_...>, the second
838-argument is a reason code B<XXX_R_...>. Function codes are derived
839-from the function names; reason codes consist of textual error
840-descriptions. For example, the function ssl23_read() reports a
841-"handshake failure" as follows:
842-
843- SSLerr(SSL_F_SSL23_READ, SSL_R_SSL_HANDSHAKE_FAILURE);
844-
845-Function and reason codes should consist of upper case characters,
846-numbers and underscores only. The error file generation script translates
847-function codes into function names by looking in the header files
848-for an appropriate function name, if none is found it just uses
849-the capitalized form such as "SSL23_READ" in the above example.
850-
851-The trailing section of a reason code (after the "_R_") is translated
852-into lower case and underscores changed to spaces.
853-
854-When you are using new function or reason codes, run B<make errors>.
855-The necessary B<#define>s will then automatically be added to the
856-sub-library's header file.
857-
858-Although a library will normally report errors using its own specific
859-XXXerr macro, another library's macro can be used. This is normally
860-only done when a library wants to include ASN1 code which must use
861-the ASN1err() macro.
862-
863-=head2 Adding new libraries
864-
865-When adding a new sub-library to OpenSSL, assign it a library number
866-B<ERR_LIB_XXX>, define a macro XXXerr() (both in B<err.h>), add its
867-name to B<ERR_str_libraries[]> (in B<crypto/err/err.c>), and add
868-C<ERR_load_XXX_strings()> to the ERR_load_crypto_strings() function
869-(in B<crypto/err/err_all.c>). Finally, add an entry
870-
871- L XXX xxx.h xxx_err.c
872-
873-to B<crypto/err/openssl.ec>, and add B<xxx_err.c> to the Makefile.
874-Running B<make errors> will then generate a file B<xxx_err.c>, and
875-add all error codes used in the library to B<xxx.h>.
876-
877-Additionally the library include file must have a certain form.
878-Typically it will initially look like this:
879-
880- #ifndef HEADER_XXX_H
881- #define HEADER_XXX_H
882-
883- #ifdef __cplusplus
884- extern "C" {
885- #endif
886-
887- /* Include files */
888-
889- #include <openssl/bio.h>
890- #include <openssl/x509.h>
891-
892- /* Macros, structures and function prototypes */
893-
894-
895- /* BEGIN ERROR CODES */
896-
897-The B<BEGIN ERROR CODES> sequence is used by the error code
898-generation script as the point to place new error codes, any text
899-after this point will be overwritten when B<make errors> is run.
900-The closing #endif etc will be automatically added by the script.
901-
902-The generated C error code file B<xxx_err.c> will load the header
903-files B<stdio.h>, B<openssl/err.h> and B<openssl/xxx.h> so the
904-header file must load any additional header files containing any
905-definitions it uses.
906-
907-=head1 USING ERROR CODES IN EXTERNAL LIBRARIES
908-
909-It is also possible to use OpenSSL's error code scheme in external
910-libraries. The library needs to load its own codes and call the OpenSSL
911-error code insertion script B<mkerr.pl> explicitly to add codes to
912-the header file and generate the C error code file. This will normally
913-be done if the external library needs to generate new ASN1 structures
914-but it can also be used to add more general purpose error code handling.
915-
916-TBA more details
917-
918-=head1 INTERNALS
919-
920-The error queues are stored in a hash table with one B<ERR_STATE>
921-entry for each pid. ERR_get_state() returns the current thread's
922-B<ERR_STATE>. An B<ERR_STATE> can hold up to B<ERR_NUM_ERRORS> error
923-codes. When more error codes are added, the old ones are overwritten,
924-on the assumption that the most recent errors are most important.
925-
926-Error strings are also stored in hash table. The hash tables can
927-be obtained by calling ERR_get_err_state_table(void) and
928-ERR_get_string_table(void) respectively.
929-
930-=head1 SEE ALSO
931-
932-L<CRYPTO_set_id_callback(3)|CRYPTO_set_id_callback(3)>,
933-L<CRYPTO_set_locking_callback(3)|CRYPTO_set_locking_callback(3)>,
934-L<ERR_get_error(3)|ERR_get_error(3)>,
935-L<ERR_GET_LIB(3)|ERR_GET_LIB(3)>,
936-L<ERR_clear_error(3)|ERR_clear_error(3)>,
937-L<ERR_error_string(3)|ERR_error_string(3)>,
938-L<ERR_print_errors(3)|ERR_print_errors(3)>,
939-L<ERR_load_crypto_strings(3)|ERR_load_crypto_strings(3)>,
940-L<ERR_remove_state(3)|ERR_remove_state(3)>,
941-L<ERR_put_error(3)|ERR_put_error(3)>,
942-L<ERR_load_strings(3)|ERR_load_strings(3)>,
943-L<SSL_get_error(3)|SSL_get_error(3)>
944-
945-=cut
946diff -Naur openssl-0.9.8a.orig/doc/crypto/openssl_err.pod openssl-0.9.8a/doc/crypto/openssl_err.pod
947--- openssl-0.9.8a.orig/doc/crypto/openssl_err.pod 1970-01-01 00:00:00.000000000 +0000
948+++ openssl-0.9.8a/doc/crypto/openssl_err.pod 2005-11-14 03:59:59.000000000 +0000
949@@ -0,0 +1,187 @@
950+=pod
951+
952+=head1 NAME
953+
954+openssl_err - error codes
955+
956+=head1 SYNOPSIS
957+
958+ #include <openssl/err.h>
959+
960+ unsigned long ERR_get_error(void);
961+ unsigned long ERR_peek_error(void);
962+ unsigned long ERR_get_error_line(const char **file, int *line);
963+ unsigned long ERR_peek_error_line(const char **file, int *line);
964+ unsigned long ERR_get_error_line_data(const char **file, int *line,
965+ const char **data, int *flags);
966+ unsigned long ERR_peek_error_line_data(const char **file, int *line,
967+ const char **data, int *flags);
968+
969+ int ERR_GET_LIB(unsigned long e);
970+ int ERR_GET_FUNC(unsigned long e);
971+ int ERR_GET_REASON(unsigned long e);
972+
973+ void ERR_clear_error(void);
974+
975+ char *ERR_error_string(unsigned long e, char *buf);
976+ const char *ERR_lib_error_string(unsigned long e);
977+ const char *ERR_func_error_string(unsigned long e);
978+ const char *ERR_reason_error_string(unsigned long e);
979+
980+ void ERR_print_errors(BIO *bp);
981+ void ERR_print_errors_fp(FILE *fp);
982+
983+ void ERR_load_crypto_strings(void);
984+ void ERR_free_strings(void);
985+
986+ void ERR_remove_state(unsigned long pid);
987+
988+ void ERR_put_error(int lib, int func, int reason, const char *file,
989+ int line);
990+ void ERR_add_error_data(int num, ...);
991+
992+ void ERR_load_strings(int lib,ERR_STRING_DATA str[]);
993+ unsigned long ERR_PACK(int lib, int func, int reason);
994+ int ERR_get_next_error_library(void);
995+
996+=head1 DESCRIPTION
997+
998+When a call to the OpenSSL library fails, this is usually signalled
999+by the return value, and an error code is stored in an error queue
1000+associated with the current thread. The B<err> library provides
1001+functions to obtain these error codes and textual error messages.
1002+
1003+The L<ERR_get_error(3)|ERR_get_error(3)> manpage describes how to
1004+access error codes.
1005+
1006+Error codes contain information about where the error occurred, and
1007+what went wrong. L<ERR_GET_LIB(3)|ERR_GET_LIB(3)> describes how to
1008+extract this information. A method to obtain human-readable error
1009+messages is described in L<ERR_error_string(3)|ERR_error_string(3)>.
1010+
1011+L<ERR_clear_error(3)|ERR_clear_error(3)> can be used to clear the
1012+error queue.
1013+
1014+Note that L<ERR_remove_state(3)|ERR_remove_state(3)> should be used to
1015+avoid memory leaks when threads are terminated.
1016+
1017+=head1 ADDING NEW ERROR CODES TO OPENSSL
1018+
1019+See L<ERR_put_error(3)> if you want to record error codes in the
1020+OpenSSL error system from within your application.
1021+
1022+The remainder of this section is of interest only if you want to add
1023+new error codes to OpenSSL or add error codes from external libraries.
1024+
1025+=head2 Reporting errors
1026+
1027+Each sub-library has a specific macro XXXerr() that is used to report
1028+errors. Its first argument is a function code B<XXX_F_...>, the second
1029+argument is a reason code B<XXX_R_...>. Function codes are derived
1030+from the function names; reason codes consist of textual error
1031+descriptions. For example, the function ssl23_read() reports a
1032+"handshake failure" as follows:
1033+
1034+ SSLerr(SSL_F_SSL23_READ, SSL_R_SSL_HANDSHAKE_FAILURE);
1035+
1036+Function and reason codes should consist of upper case characters,
1037+numbers and underscores only. The error file generation script translates
1038+function codes into function names by looking in the header files
1039+for an appropriate function name, if none is found it just uses
1040+the capitalized form such as "SSL23_READ" in the above example.
1041+
1042+The trailing section of a reason code (after the "_R_") is translated
1043+into lower case and underscores changed to spaces.
1044+
1045+When you are using new function or reason codes, run B<make errors>.
1046+The necessary B<#define>s will then automatically be added to the
1047+sub-library's header file.
1048+
1049+Although a library will normally report errors using its own specific
1050+XXXerr macro, another library's macro can be used. This is normally
1051+only done when a library wants to include ASN1 code which must use
1052+the ASN1err() macro.
1053+
1054+=head2 Adding new libraries
1055+
1056+When adding a new sub-library to OpenSSL, assign it a library number
1057+B<ERR_LIB_XXX>, define a macro XXXerr() (both in B<err.h>), add its
1058+name to B<ERR_str_libraries[]> (in B<crypto/err/err.c>), and add
1059+C<ERR_load_XXX_strings()> to the ERR_load_crypto_strings() function
1060+(in B<crypto/err/err_all.c>). Finally, add an entry
1061+
1062+ L XXX xxx.h xxx_err.c
1063+
1064+to B<crypto/err/openssl.ec>, and add B<xxx_err.c> to the Makefile.
1065+Running B<make errors> will then generate a file B<xxx_err.c>, and
1066+add all error codes used in the library to B<xxx.h>.
1067+
1068+Additionally the library include file must have a certain form.
1069+Typically it will initially look like this:
1070+
1071+ #ifndef HEADER_XXX_H
1072+ #define HEADER_XXX_H
1073+
1074+ #ifdef __cplusplus
1075+ extern "C" {
1076+ #endif
1077+
1078+ /* Include files */
1079+
1080+ #include <openssl/bio.h>
1081+ #include <openssl/x509.h>
1082+
1083+ /* Macros, structures and function prototypes */
1084+
1085+
1086+ /* BEGIN ERROR CODES */
1087+
1088+The B<BEGIN ERROR CODES> sequence is used by the error code
1089+generation script as the point to place new error codes, any text
1090+after this point will be overwritten when B<make errors> is run.
1091+The closing #endif etc will be automatically added by the script.
1092+
1093+The generated C error code file B<xxx_err.c> will load the header
1094+files B<stdio.h>, B<openssl/err.h> and B<openssl/xxx.h> so the
1095+header file must load any additional header files containing any
1096+definitions it uses.
1097+
1098+=head1 USING ERROR CODES IN EXTERNAL LIBRARIES
1099+
1100+It is also possible to use OpenSSL's error code scheme in external
1101+libraries. The library needs to load its own codes and call the OpenSSL
1102+error code insertion script B<mkerr.pl> explicitly to add codes to
1103+the header file and generate the C error code file. This will normally
1104+be done if the external library needs to generate new ASN1 structures
1105+but it can also be used to add more general purpose error code handling.
1106+
1107+TBA more details
1108+
1109+=head1 INTERNALS
1110+
1111+The error queues are stored in a hash table with one B<ERR_STATE>
1112+entry for each pid. ERR_get_state() returns the current thread's
1113+B<ERR_STATE>. An B<ERR_STATE> can hold up to B<ERR_NUM_ERRORS> error
1114+codes. When more error codes are added, the old ones are overwritten,
1115+on the assumption that the most recent errors are most important.
1116+
1117+Error strings are also stored in hash table. The hash tables can
1118+be obtained by calling ERR_get_err_state_table(void) and
1119+ERR_get_string_table(void) respectively.
1120+
1121+=head1 SEE ALSO
1122+
1123+L<CRYPTO_set_id_callback(3)|CRYPTO_set_id_callback(3)>,
1124+L<CRYPTO_set_locking_callback(3)|CRYPTO_set_locking_callback(3)>,
1125+L<ERR_get_error(3)|ERR_get_error(3)>,
1126+L<ERR_GET_LIB(3)|ERR_GET_LIB(3)>,
1127+L<ERR_clear_error(3)|ERR_clear_error(3)>,
1128+L<ERR_error_string(3)|ERR_error_string(3)>,
1129+L<ERR_print_errors(3)|ERR_print_errors(3)>,
1130+L<ERR_load_crypto_strings(3)|ERR_load_crypto_strings(3)>,
1131+L<ERR_remove_state(3)|ERR_remove_state(3)>,
1132+L<ERR_put_error(3)|ERR_put_error(3)>,
1133+L<ERR_load_strings(3)|ERR_load_strings(3)>,
1134+L<SSL_get_error(3)|SSL_get_error(3)>
1135+
1136+=cut
1137diff -Naur openssl-0.9.8a.orig/doc/crypto/openssl_rand.pod openssl-0.9.8a/doc/crypto/openssl_rand.pod
1138--- openssl-0.9.8a.orig/doc/crypto/openssl_rand.pod 1970-01-01 00:00:00.000000000 +0000
1139+++ openssl-0.9.8a/doc/crypto/openssl_rand.pod 2005-11-14 03:59:59.000000000 +0000
1140@@ -0,0 +1,175 @@
1141+=pod
1142+
1143+=head1 NAME
1144+
1145+openssl_rand - pseudo-random number generator
1146+
1147+=head1 SYNOPSIS
1148+
1149+ #include <openssl/rand.h>
1150+
1151+ int RAND_set_rand_engine(ENGINE *engine);
1152+
1153+ int RAND_bytes(unsigned char *buf, int num);
1154+ int RAND_pseudo_bytes(unsigned char *buf, int num);
1155+
1156+ void RAND_seed(const void *buf, int num);
1157+ void RAND_add(const void *buf, int num, int entropy);
1158+ int RAND_status(void);
1159+
1160+ int RAND_load_file(const char *file, long max_bytes);
1161+ int RAND_write_file(const char *file);
1162+ const char *RAND_file_name(char *file, size_t num);
1163+
1164+ int RAND_egd(const char *path);
1165+
1166+ void RAND_set_rand_method(const RAND_METHOD *meth);
1167+ const RAND_METHOD *RAND_get_rand_method(void);
1168+ RAND_METHOD *RAND_SSLeay(void);
1169+
1170+ void RAND_cleanup(void);
1171+
1172+ /* For Win32 only */
1173+ void RAND_screen(void);
1174+ int RAND_event(UINT, WPARAM, LPARAM);
1175+
1176+=head1 DESCRIPTION
1177+
1178+Since the introduction of the ENGINE API, the recommended way of controlling
1179+default implementations is by using the ENGINE API functions. The default
1180+B<RAND_METHOD>, as set by RAND_set_rand_method() and returned by
1181+RAND_get_rand_method(), is only used if no ENGINE has been set as the default
1182+"rand" implementation. Hence, these two functions are no longer the recommened
1183+way to control defaults.
1184+
1185+If an alternative B<RAND_METHOD> implementation is being used (either set
1186+directly or as provided by an ENGINE module), then it is entirely responsible
1187+for the generation and management of a cryptographically secure PRNG stream. The
1188+mechanisms described below relate solely to the software PRNG implementation
1189+built in to OpenSSL and used by default.
1190+
1191+These functions implement a cryptographically secure pseudo-random
1192+number generator (PRNG). It is used by other library functions for
1193+example to generate random keys, and applications can use it when they
1194+need randomness.
1195+
1196+A cryptographic PRNG must be seeded with unpredictable data such as
1197+mouse movements or keys pressed at random by the user. This is
1198+described in L<RAND_add(3)|RAND_add(3)>. Its state can be saved in a seed file
1199+(see L<RAND_load_file(3)|RAND_load_file(3)>) to avoid having to go through the
1200+seeding process whenever the application is started.
1201+
1202+L<RAND_bytes(3)|RAND_bytes(3)> describes how to obtain random data from the
1203+PRNG.
1204+
1205+=head1 INTERNALS
1206+
1207+The RAND_SSLeay() method implements a PRNG based on a cryptographic
1208+hash function.
1209+
1210+The following description of its design is based on the SSLeay
1211+documentation:
1212+
1213+First up I will state the things I believe I need for a good RNG.
1214+
1215+=over 4
1216+
1217+=item 1
1218+
1219+A good hashing algorithm to mix things up and to convert the RNG 'state'
1220+to random numbers.
1221+
1222+=item 2
1223+
1224+An initial source of random 'state'.
1225+
1226+=item 3
1227+
1228+The state should be very large. If the RNG is being used to generate
1229+4096 bit RSA keys, 2 2048 bit random strings are required (at a minimum).
1230+If your RNG state only has 128 bits, you are obviously limiting the
1231+search space to 128 bits, not 2048. I'm probably getting a little
1232+carried away on this last point but it does indicate that it may not be
1233+a bad idea to keep quite a lot of RNG state. It should be easier to
1234+break a cipher than guess the RNG seed data.
1235+
1236+=item 4
1237+
1238+Any RNG seed data should influence all subsequent random numbers
1239+generated. This implies that any random seed data entered will have
1240+an influence on all subsequent random numbers generated.
1241+
1242+=item 5
1243+
1244+When using data to seed the RNG state, the data used should not be
1245+extractable from the RNG state. I believe this should be a
1246+requirement because one possible source of 'secret' semi random
1247+data would be a private key or a password. This data must
1248+not be disclosed by either subsequent random numbers or a
1249+'core' dump left by a program crash.
1250+
1251+=item 6
1252+
1253+Given the same initial 'state', 2 systems should deviate in their RNG state
1254+(and hence the random numbers generated) over time if at all possible.
1255+
1256+=item 7
1257+
1258+Given the random number output stream, it should not be possible to determine
1259+the RNG state or the next random number.
1260+
1261+=back
1262+
1263+The algorithm is as follows.
1264+
1265+There is global state made up of a 1023 byte buffer (the 'state'), a
1266+working hash value ('md'), and a counter ('count').
1267+
1268+Whenever seed data is added, it is inserted into the 'state' as
1269+follows.
1270+
1271+The input is chopped up into units of 20 bytes (or less for
1272+the last block). Each of these blocks is run through the hash
1273+function as follows: The data passed to the hash function
1274+is the current 'md', the same number of bytes from the 'state'
1275+(the location determined by in incremented looping index) as
1276+the current 'block', the new key data 'block', and 'count'
1277+(which is incremented after each use).
1278+The result of this is kept in 'md' and also xored into the
1279+'state' at the same locations that were used as input into the
1280+hash function. I
1281+believe this system addresses points 1 (hash function; currently
1282+SHA-1), 3 (the 'state'), 4 (via the 'md'), 5 (by the use of a hash
1283+function and xor).
1284+
1285+When bytes are extracted from the RNG, the following process is used.
1286+For each group of 10 bytes (or less), we do the following:
1287+
1288+Input into the hash function the local 'md' (which is initialized from
1289+the global 'md' before any bytes are generated), the bytes that are to
1290+be overwritten by the random bytes, and bytes from the 'state'
1291+(incrementing looping index). From this digest output (which is kept
1292+in 'md'), the top (up to) 10 bytes are returned to the caller and the
1293+bottom 10 bytes are xored into the 'state'.
1294+
1295+Finally, after we have finished 'num' random bytes for the caller,
1296+'count' (which is incremented) and the local and global 'md' are fed
1297+into the hash function and the results are kept in the global 'md'.
1298+
1299+I believe the above addressed points 1 (use of SHA-1), 6 (by hashing
1300+into the 'state' the 'old' data from the caller that is about to be
1301+overwritten) and 7 (by not using the 10 bytes given to the caller to
1302+update the 'state', but they are used to update 'md').
1303+
1304+So of the points raised, only 2 is not addressed (but see
1305+L<RAND_add(3)|RAND_add(3)>).
1306+
1307+=head1 SEE ALSO
1308+
1309+L<BN_rand(3)|BN_rand(3)>, L<RAND_add(3)|RAND_add(3)>,
1310+L<RAND_load_file(3)|RAND_load_file(3)>, L<RAND_egd(3)|RAND_egd(3)>,
1311+L<RAND_bytes(3)|RAND_bytes(3)>,
1312+L<RAND_set_rand_method(3)|RAND_set_rand_method(3)>,
1313+L<RAND_cleanup(3)|RAND_cleanup(3)>
1314+
1315+=cut
1316diff -Naur openssl-0.9.8a.orig/doc/crypto/openssl_threads.pod openssl-0.9.8a/doc/crypto/openssl_threads.pod
1317--- openssl-0.9.8a.orig/doc/crypto/openssl_threads.pod 1970-01-01 00:00:00.000000000 +0000
1318+++ openssl-0.9.8a/doc/crypto/openssl_threads.pod 2005-11-14 03:59:59.000000000 +0000
1319@@ -0,0 +1,175 @@
1320+=pod
1321+
1322+=head1 NAME
1323+
1324+CRYPTO_set_locking_callback, CRYPTO_set_id_callback, CRYPTO_num_locks,
1325+CRYPTO_set_dynlock_create_callback, CRYPTO_set_dynlock_lock_callback,
1326+CRYPTO_set_dynlock_destroy_callback, CRYPTO_get_new_dynlockid,
1327+CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support
1328+
1329+=head1 SYNOPSIS
1330+
1331+ #include <openssl/crypto.h>
1332+
1333+ void CRYPTO_set_locking_callback(void (*locking_function)(int mode,
1334+ int n, const char *file, int line));
1335+
1336+ void CRYPTO_set_id_callback(unsigned long (*id_function)(void));
1337+
1338+ int CRYPTO_num_locks(void);
1339+
1340+
1341+ /* struct CRYPTO_dynlock_value needs to be defined by the user */
1342+ struct CRYPTO_dynlock_value;
1343+
1344+ void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *
1345+ (*dyn_create_function)(char *file, int line));
1346+ void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
1347+ (int mode, struct CRYPTO_dynlock_value *l,
1348+ const char *file, int line));
1349+ void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
1350+ (struct CRYPTO_dynlock_value *l, const char *file, int line));
1351+
1352+ int CRYPTO_get_new_dynlockid(void);
1353+
1354+ void CRYPTO_destroy_dynlockid(int i);
1355+
1356+ void CRYPTO_lock(int mode, int n, const char *file, int line);
1357+
1358+ #define CRYPTO_w_lock(type) \
1359+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
1360+ #define CRYPTO_w_unlock(type) \
1361+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
1362+ #define CRYPTO_r_lock(type) \
1363+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__)
1364+ #define CRYPTO_r_unlock(type) \
1365+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__)
1366+ #define CRYPTO_add(addr,amount,type) \
1367+ CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__)
1368+
1369+=head1 DESCRIPTION
1370+
1371+OpenSSL can safely be used in multi-threaded applications provided
1372+that at least two callback functions are set.
1373+
1374+locking_function(int mode, int n, const char *file, int line) is
1375+needed to perform locking on shared data structures.
1376+(Note that OpenSSL uses a number of global data structures that
1377+will be implicitly shared whenever multiple threads use OpenSSL.)
1378+Multi-threaded applications will crash at random if it is not set.
1379+
1380+locking_function() must be able to handle up to CRYPTO_num_locks()
1381+different mutex locks. It sets the B<n>-th lock if B<mode> &
1382+B<CRYPTO_LOCK>, and releases it otherwise.
1383+
1384+B<file> and B<line> are the file number of the function setting the
1385+lock. They can be useful for debugging.
1386+
1387+id_function(void) is a function that returns a thread ID, for example
1388+pthread_self() if it returns an integer (see NOTES below). It isn't
1389+needed on Windows nor on platforms where getpid() returns a different
1390+ID for each thread (see NOTES below).
1391+
1392+Additionally, OpenSSL supports dynamic locks, and sometimes, some parts
1393+of OpenSSL need it for better performance. To enable this, the following
1394+is required:
1395+
1396+=over 4
1397+
1398+=item *
1399+Three additional callback function, dyn_create_function, dyn_lock_function
1400+and dyn_destroy_function.
1401+
1402+=item *
1403+A structure defined with the data that each lock needs to handle.
1404+
1405+=back
1406+
1407+struct CRYPTO_dynlock_value has to be defined to contain whatever structure
1408+is needed to handle locks.
1409+
1410+dyn_create_function(const char *file, int line) is needed to create a
1411+lock. Multi-threaded applications might crash at random if it is not set.
1412+
1413+dyn_lock_function(int mode, CRYPTO_dynlock *l, const char *file, int line)
1414+is needed to perform locking off dynamic lock numbered n. Multi-threaded
1415+applications might crash at random if it is not set.
1416+
1417+dyn_destroy_function(CRYPTO_dynlock *l, const char *file, int line) is
1418+needed to destroy the lock l. Multi-threaded applications might crash at
1419+random if it is not set.
1420+
1421+CRYPTO_get_new_dynlockid() is used to create locks. It will call
1422+dyn_create_function for the actual creation.
1423+
1424+CRYPTO_destroy_dynlockid() is used to destroy locks. It will call
1425+dyn_destroy_function for the actual destruction.
1426+
1427+CRYPTO_lock() is used to lock and unlock the locks. mode is a bitfield
1428+describing what should be done with the lock. n is the number of the
1429+lock as returned from CRYPTO_get_new_dynlockid(). mode can be combined
1430+from the following values. These values are pairwise exclusive, with
1431+undefined behaviour if misused (for example, CRYPTO_READ and CRYPTO_WRITE
1432+should not be used together):
1433+
1434+ CRYPTO_LOCK 0x01
1435+ CRYPTO_UNLOCK 0x02
1436+ CRYPTO_READ 0x04
1437+ CRYPTO_WRITE 0x08
1438+
1439+=head1 RETURN VALUES
1440+
1441+CRYPTO_num_locks() returns the required number of locks.
1442+
1443+CRYPTO_get_new_dynlockid() returns the index to the newly created lock.
1444+
1445+The other functions return no values.
1446+
1447+=head1 NOTES
1448+
1449+You can find out if OpenSSL was configured with thread support:
1450+
1451+ #define OPENSSL_THREAD_DEFINES
1452+ #include <openssl/opensslconf.h>
1453+ #if defined(OPENSSL_THREADS)
1454+ // thread support enabled
1455+ #else
1456+ // no thread support
1457+ #endif
1458+
1459+Also, dynamic locks are currently not used internally by OpenSSL, but
1460+may do so in the future.
1461+
1462+Defining id_function(void) has it's own issues. Generally speaking,
1463+pthread_self() should be used, even on platforms where getpid() gives
1464+different answers in each thread, since that may depend on the machine
1465+the program is run on, not the machine where the program is being
1466+compiled. For instance, Red Hat 8 Linux and earlier used
1467+LinuxThreads, whose getpid() returns a different value for each
1468+thread. Red Hat 9 Linux and later use NPTL, which is
1469+Posix-conformant, and has a getpid() that returns the same value for
1470+all threads in a process. A program compiled on Red Hat 8 and run on
1471+Red Hat 9 will therefore see getpid() returning the same value for
1472+all threads.
1473+
1474+There is still the issue of platforms where pthread_self() returns
1475+something other than an integer. This is a bit unusual, and this
1476+manual has no cookbook solution for that case.
1477+
1478+=head1 EXAMPLES
1479+
1480+B<crypto/threads/mttest.c> shows examples of the callback functions on
1481+Solaris, Irix and Win32.
1482+
1483+=head1 HISTORY
1484+
1485+CRYPTO_set_locking_callback() and CRYPTO_set_id_callback() are
1486+available in all versions of SSLeay and OpenSSL.
1487+CRYPTO_num_locks() was added in OpenSSL 0.9.4.
1488+All functions dealing with dynamic locks were added in OpenSSL 0.9.5b-dev.
1489+
1490+=head1 SEE ALSO
1491+
1492+L<crypto(3)|crypto(3)>
1493+
1494+=cut
1495diff -Naur openssl-0.9.8a.orig/doc/crypto/rand.pod openssl-0.9.8a/doc/crypto/rand.pod
1496--- openssl-0.9.8a.orig/doc/crypto/rand.pod 2002-08-05 16:27:01.000000000 +0000
1497+++ openssl-0.9.8a/doc/crypto/rand.pod 1970-01-01 00:00:00.000000000 +0000
1498@@ -1,175 +0,0 @@
1499-=pod
1500-
1501-=head1 NAME
1502-
1503-rand - pseudo-random number generator
1504-
1505-=head1 SYNOPSIS
1506-
1507- #include <openssl/rand.h>
1508-
1509- int RAND_set_rand_engine(ENGINE *engine);
1510-
1511- int RAND_bytes(unsigned char *buf, int num);
1512- int RAND_pseudo_bytes(unsigned char *buf, int num);
1513-
1514- void RAND_seed(const void *buf, int num);
1515- void RAND_add(const void *buf, int num, int entropy);
1516- int RAND_status(void);
1517-
1518- int RAND_load_file(const char *file, long max_bytes);
1519- int RAND_write_file(const char *file);
1520- const char *RAND_file_name(char *file, size_t num);
1521-
1522- int RAND_egd(const char *path);
1523-
1524- void RAND_set_rand_method(const RAND_METHOD *meth);
1525- const RAND_METHOD *RAND_get_rand_method(void);
1526- RAND_METHOD *RAND_SSLeay(void);
1527-
1528- void RAND_cleanup(void);
1529-
1530- /* For Win32 only */
1531- void RAND_screen(void);
1532- int RAND_event(UINT, WPARAM, LPARAM);
1533-
1534-=head1 DESCRIPTION
1535-
1536-Since the introduction of the ENGINE API, the recommended way of controlling
1537-default implementations is by using the ENGINE API functions. The default
1538-B<RAND_METHOD>, as set by RAND_set_rand_method() and returned by
1539-RAND_get_rand_method(), is only used if no ENGINE has been set as the default
1540-"rand" implementation. Hence, these two functions are no longer the recommened
1541-way to control defaults.
1542-
1543-If an alternative B<RAND_METHOD> implementation is being used (either set
1544-directly or as provided by an ENGINE module), then it is entirely responsible
1545-for the generation and management of a cryptographically secure PRNG stream. The
1546-mechanisms described below relate solely to the software PRNG implementation
1547-built in to OpenSSL and used by default.
1548-
1549-These functions implement a cryptographically secure pseudo-random
1550-number generator (PRNG). It is used by other library functions for
1551-example to generate random keys, and applications can use it when they
1552-need randomness.
1553-
1554-A cryptographic PRNG must be seeded with unpredictable data such as
1555-mouse movements or keys pressed at random by the user. This is
1556-described in L<RAND_add(3)|RAND_add(3)>. Its state can be saved in a seed file
1557-(see L<RAND_load_file(3)|RAND_load_file(3)>) to avoid having to go through the
1558-seeding process whenever the application is started.
1559-
1560-L<RAND_bytes(3)|RAND_bytes(3)> describes how to obtain random data from the
1561-PRNG.
1562-
1563-=head1 INTERNALS
1564-
1565-The RAND_SSLeay() method implements a PRNG based on a cryptographic
1566-hash function.
1567-
1568-The following description of its design is based on the SSLeay
1569-documentation:
1570-
1571-First up I will state the things I believe I need for a good RNG.
1572-
1573-=over 4
1574-
1575-=item 1
1576-
1577-A good hashing algorithm to mix things up and to convert the RNG 'state'
1578-to random numbers.
1579-
1580-=item 2
1581-
1582-An initial source of random 'state'.
1583-
1584-=item 3
1585-
1586-The state should be very large. If the RNG is being used to generate
1587-4096 bit RSA keys, 2 2048 bit random strings are required (at a minimum).
1588-If your RNG state only has 128 bits, you are obviously limiting the
1589-search space to 128 bits, not 2048. I'm probably getting a little
1590-carried away on this last point but it does indicate that it may not be
1591-a bad idea to keep quite a lot of RNG state. It should be easier to
1592-break a cipher than guess the RNG seed data.
1593-
1594-=item 4
1595-
1596-Any RNG seed data should influence all subsequent random numbers
1597-generated. This implies that any random seed data entered will have
1598-an influence on all subsequent random numbers generated.
1599-
1600-=item 5
1601-
1602-When using data to seed the RNG state, the data used should not be
1603-extractable from the RNG state. I believe this should be a
1604-requirement because one possible source of 'secret' semi random
1605-data would be a private key or a password. This data must
1606-not be disclosed by either subsequent random numbers or a
1607-'core' dump left by a program crash.
1608-
1609-=item 6
1610-
1611-Given the same initial 'state', 2 systems should deviate in their RNG state
1612-(and hence the random numbers generated) over time if at all possible.
1613-
1614-=item 7
1615-
1616-Given the random number output stream, it should not be possible to determine
1617-the RNG state or the next random number.
1618-
1619-=back
1620-
1621-The algorithm is as follows.
1622-
1623-There is global state made up of a 1023 byte buffer (the 'state'), a
1624-working hash value ('md'), and a counter ('count').
1625-
1626-Whenever seed data is added, it is inserted into the 'state' as
1627-follows.
1628-
1629-The input is chopped up into units of 20 bytes (or less for
1630-the last block). Each of these blocks is run through the hash
1631-function as follows: The data passed to the hash function
1632-is the current 'md', the same number of bytes from the 'state'
1633-(the location determined by in incremented looping index) as
1634-the current 'block', the new key data 'block', and 'count'
1635-(which is incremented after each use).
1636-The result of this is kept in 'md' and also xored into the
1637-'state' at the same locations that were used as input into the
1638-hash function. I
1639-believe this system addresses points 1 (hash function; currently
1640-SHA-1), 3 (the 'state'), 4 (via the 'md'), 5 (by the use of a hash
1641-function and xor).
1642-
1643-When bytes are extracted from the RNG, the following process is used.
1644-For each group of 10 bytes (or less), we do the following:
1645-
1646-Input into the hash function the local 'md' (which is initialized from
1647-the global 'md' before any bytes are generated), the bytes that are to
1648-be overwritten by the random bytes, and bytes from the 'state'
1649-(incrementing looping index). From this digest output (which is kept
1650-in 'md'), the top (up to) 10 bytes are returned to the caller and the
1651-bottom 10 bytes are xored into the 'state'.
1652-
1653-Finally, after we have finished 'num' random bytes for the caller,
1654-'count' (which is incremented) and the local and global 'md' are fed
1655-into the hash function and the results are kept in the global 'md'.
1656-
1657-I believe the above addressed points 1 (use of SHA-1), 6 (by hashing
1658-into the 'state' the 'old' data from the caller that is about to be
1659-overwritten) and 7 (by not using the 10 bytes given to the caller to
1660-update the 'state', but they are used to update 'md').
1661-
1662-So of the points raised, only 2 is not addressed (but see
1663-L<RAND_add(3)|RAND_add(3)>).
1664-
1665-=head1 SEE ALSO
1666-
1667-L<BN_rand(3)|BN_rand(3)>, L<RAND_add(3)|RAND_add(3)>,
1668-L<RAND_load_file(3)|RAND_load_file(3)>, L<RAND_egd(3)|RAND_egd(3)>,
1669-L<RAND_bytes(3)|RAND_bytes(3)>,
1670-L<RAND_set_rand_method(3)|RAND_set_rand_method(3)>,
1671-L<RAND_cleanup(3)|RAND_cleanup(3)>
1672-
1673-=cut
1674diff -Naur openssl-0.9.8a.orig/doc/crypto/rsa.pod openssl-0.9.8a/doc/crypto/rsa.pod
1675--- openssl-0.9.8a.orig/doc/crypto/rsa.pod 2002-08-04 21:08:36.000000000 +0000
1676+++ openssl-0.9.8a/doc/crypto/rsa.pod 2005-11-14 03:59:59.000000000 +0000
1677@@ -108,7 +108,7 @@
1678 =head1 SEE ALSO
1679
1680 L<rsa(1)|rsa(1)>, L<bn(3)|bn(3)>, L<dsa(3)|dsa(3)>, L<dh(3)|dh(3)>,
1681-L<rand(3)|rand(3)>, L<engine(3)|engine(3)>, L<RSA_new(3)|RSA_new(3)>,
1682+L<openssl_rand(3)|openssl_rand(3)>, L<engine(3)|engine(3)>, L<RSA_new(3)|RSA_new(3)>,
1683 L<RSA_public_encrypt(3)|RSA_public_encrypt(3)>,
1684 L<RSA_sign(3)|RSA_sign(3)>, L<RSA_size(3)|RSA_size(3)>,
1685 L<RSA_generate_key(3)|RSA_generate_key(3)>,
1686diff -Naur openssl-0.9.8a.orig/doc/crypto/threads.pod openssl-0.9.8a/doc/crypto/threads.pod
1687--- openssl-0.9.8a.orig/doc/crypto/threads.pod 2005-06-18 05:52:23.000000000 +0000
1688+++ openssl-0.9.8a/doc/crypto/threads.pod 1970-01-01 00:00:00.000000000 +0000
1689@@ -1,175 +0,0 @@
1690-=pod
1691-
1692-=head1 NAME
1693-
1694-CRYPTO_set_locking_callback, CRYPTO_set_id_callback, CRYPTO_num_locks,
1695-CRYPTO_set_dynlock_create_callback, CRYPTO_set_dynlock_lock_callback,
1696-CRYPTO_set_dynlock_destroy_callback, CRYPTO_get_new_dynlockid,
1697-CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support
1698-
1699-=head1 SYNOPSIS
1700-
1701- #include <openssl/crypto.h>
1702-
1703- void CRYPTO_set_locking_callback(void (*locking_function)(int mode,
1704- int n, const char *file, int line));
1705-
1706- void CRYPTO_set_id_callback(unsigned long (*id_function)(void));
1707-
1708- int CRYPTO_num_locks(void);
1709-
1710-
1711- /* struct CRYPTO_dynlock_value needs to be defined by the user */
1712- struct CRYPTO_dynlock_value;
1713-
1714- void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *
1715- (*dyn_create_function)(char *file, int line));
1716- void CRYPTO_set_dynlock_lock_callback(void (*dyn_lock_function)
1717- (int mode, struct CRYPTO_dynlock_value *l,
1718- const char *file, int line));
1719- void CRYPTO_set_dynlock_destroy_callback(void (*dyn_destroy_function)
1720- (struct CRYPTO_dynlock_value *l, const char *file, int line));
1721-
1722- int CRYPTO_get_new_dynlockid(void);
1723-
1724- void CRYPTO_destroy_dynlockid(int i);
1725-
1726- void CRYPTO_lock(int mode, int n, const char *file, int line);
1727-
1728- #define CRYPTO_w_lock(type) \
1729- CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
1730- #define CRYPTO_w_unlock(type) \
1731- CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__)
1732- #define CRYPTO_r_lock(type) \
1733- CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__)
1734- #define CRYPTO_r_unlock(type) \
1735- CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__)
1736- #define CRYPTO_add(addr,amount,type) \
1737- CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__)
1738-
1739-=head1 DESCRIPTION
1740-
1741-OpenSSL can safely be used in multi-threaded applications provided
1742-that at least two callback functions are set.
1743-
1744-locking_function(int mode, int n, const char *file, int line) is
1745-needed to perform locking on shared data structures.
1746-(Note that OpenSSL uses a number of global data structures that
1747-will be implicitly shared whenever multiple threads use OpenSSL.)
1748-Multi-threaded applications will crash at random if it is not set.
1749-
1750-locking_function() must be able to handle up to CRYPTO_num_locks()
1751-different mutex locks. It sets the B<n>-th lock if B<mode> &
1752-B<CRYPTO_LOCK>, and releases it otherwise.
1753-
1754-B<file> and B<line> are the file number of the function setting the
1755-lock. They can be useful for debugging.
1756-
1757-id_function(void) is a function that returns a thread ID, for example
1758-pthread_self() if it returns an integer (see NOTES below). It isn't
1759-needed on Windows nor on platforms where getpid() returns a different
1760-ID for each thread (see NOTES below).
1761-
1762-Additionally, OpenSSL supports dynamic locks, and sometimes, some parts
1763-of OpenSSL need it for better performance. To enable this, the following
1764-is required:
1765-
1766-=over 4
1767-
1768-=item *
1769-Three additional callback function, dyn_create_function, dyn_lock_function
1770-and dyn_destroy_function.
1771-
1772-=item *
1773-A structure defined with the data that each lock needs to handle.
1774-
1775-=back
1776-
1777-struct CRYPTO_dynlock_value has to be defined to contain whatever structure
1778-is needed to handle locks.
1779-
1780-dyn_create_function(const char *file, int line) is needed to create a
1781-lock. Multi-threaded applications might crash at random if it is not set.
1782-
1783-dyn_lock_function(int mode, CRYPTO_dynlock *l, const char *file, int line)
1784-is needed to perform locking off dynamic lock numbered n. Multi-threaded
1785-applications might crash at random if it is not set.
1786-
1787-dyn_destroy_function(CRYPTO_dynlock *l, const char *file, int line) is
1788-needed to destroy the lock l. Multi-threaded applications might crash at
1789-random if it is not set.
1790-
1791-CRYPTO_get_new_dynlockid() is used to create locks. It will call
1792-dyn_create_function for the actual creation.
1793-
1794-CRYPTO_destroy_dynlockid() is used to destroy locks. It will call
1795-dyn_destroy_function for the actual destruction.
1796-
1797-CRYPTO_lock() is used to lock and unlock the locks. mode is a bitfield
1798-describing what should be done with the lock. n is the number of the
1799-lock as returned from CRYPTO_get_new_dynlockid(). mode can be combined
1800-from the following values. These values are pairwise exclusive, with
1801-undefined behaviour if misused (for example, CRYPTO_READ and CRYPTO_WRITE
1802-should not be used together):
1803-
1804- CRYPTO_LOCK 0x01
1805- CRYPTO_UNLOCK 0x02
1806- CRYPTO_READ 0x04
1807- CRYPTO_WRITE 0x08
1808-
1809-=head1 RETURN VALUES
1810-
1811-CRYPTO_num_locks() returns the required number of locks.
1812-
1813-CRYPTO_get_new_dynlockid() returns the index to the newly created lock.
1814-
1815-The other functions return no values.
1816-
1817-=head1 NOTES
1818-
1819-You can find out if OpenSSL was configured with thread support:
1820-
1821- #define OPENSSL_THREAD_DEFINES
1822- #include <openssl/opensslconf.h>
1823- #if defined(OPENSSL_THREADS)
1824- // thread support enabled
1825- #else
1826- // no thread support
1827- #endif
1828-
1829-Also, dynamic locks are currently not used internally by OpenSSL, but
1830-may do so in the future.
1831-
1832-Defining id_function(void) has it's own issues. Generally speaking,
1833-pthread_self() should be used, even on platforms where getpid() gives
1834-different answers in each thread, since that may depend on the machine
1835-the program is run on, not the machine where the program is being
1836-compiled. For instance, Red Hat 8 Linux and earlier used
1837-LinuxThreads, whose getpid() returns a different value for each
1838-thread. Red Hat 9 Linux and later use NPTL, which is
1839-Posix-conformant, and has a getpid() that returns the same value for
1840-all threads in a process. A program compiled on Red Hat 8 and run on
1841-Red Hat 9 will therefore see getpid() returning the same value for
1842-all threads.
1843-
1844-There is still the issue of platforms where pthread_self() returns
1845-something other than an integer. This is a bit unusual, and this
1846-manual has no cookbook solution for that case.
1847-
1848-=head1 EXAMPLES
1849-
1850-B<crypto/threads/mttest.c> shows examples of the callback functions on
1851-Solaris, Irix and Win32.
1852-
1853-=head1 HISTORY
1854-
1855-CRYPTO_set_locking_callback() and CRYPTO_set_id_callback() are
1856-available in all versions of SSLeay and OpenSSL.
1857-CRYPTO_num_locks() was added in OpenSSL 0.9.4.
1858-All functions dealing with dynamic locks were added in OpenSSL 0.9.5b-dev.
1859-
1860-=head1 SEE ALSO
1861-
1862-L<crypto(3)|crypto(3)>
1863-
1864-=cut
1865diff -Naur openssl-0.9.8a.orig/doc/ssl/SSL_get_error.pod openssl-0.9.8a/doc/ssl/SSL_get_error.pod
1866--- openssl-0.9.8a.orig/doc/ssl/SSL_get_error.pod 2005-03-30 11:50:14.000000000 +0000
1867+++ openssl-0.9.8a/doc/ssl/SSL_get_error.pod 2005-11-14 03:59:59.000000000 +0000
1868@@ -105,7 +105,7 @@
1869
1870 =head1 SEE ALSO
1871
1872-L<ssl(3)|ssl(3)>, L<err(3)|err(3)>
1873+L<ssl(3)|ssl(3)>, L<openssl_err(3)|openssl_err(3)>
1874
1875 =head1 HISTORY
1876
1877diff -Naur openssl-0.9.8a.orig/doc/ssl/SSL_want.pod openssl-0.9.8a/doc/ssl/SSL_want.pod
1878--- openssl-0.9.8a.orig/doc/ssl/SSL_want.pod 2005-03-30 11:50:14.000000000 +0000
1879+++ openssl-0.9.8a/doc/ssl/SSL_want.pod 2005-11-14 03:59:59.000000000 +0000
1880@@ -72,6 +72,6 @@
1881
1882 =head1 SEE ALSO
1883
1884-L<ssl(3)|ssl(3)>, L<err(3)|err(3)>, L<SSL_get_error(3)|SSL_get_error(3)>
1885+L<ssl(3)|ssl(3)>, L<openssl_err(3)|openssl_err(3)>, L<SSL_get_error(3)|SSL_get_error(3)>
1886
1887 =cut