diff options
Diffstat (limited to 'src/lib/libcrypto/doc/RAND_set_rand_method.pod')
-rw-r--r-- | src/lib/libcrypto/doc/RAND_set_rand_method.pod | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/lib/libcrypto/doc/RAND_set_rand_method.pod b/src/lib/libcrypto/doc/RAND_set_rand_method.pod new file mode 100644 index 0000000000..e5b780fad0 --- /dev/null +++ b/src/lib/libcrypto/doc/RAND_set_rand_method.pod | |||
@@ -0,0 +1,83 @@ | |||
1 | =pod | ||
2 | |||
3 | =head1 NAME | ||
4 | |||
5 | RAND_set_rand_method, RAND_get_rand_method, RAND_SSLeay - select RAND method | ||
6 | |||
7 | =head1 SYNOPSIS | ||
8 | |||
9 | #include <openssl/rand.h> | ||
10 | |||
11 | void RAND_set_rand_method(const RAND_METHOD *meth); | ||
12 | |||
13 | const RAND_METHOD *RAND_get_rand_method(void); | ||
14 | |||
15 | RAND_METHOD *RAND_SSLeay(void); | ||
16 | |||
17 | =head1 DESCRIPTION | ||
18 | |||
19 | A B<RAND_METHOD> specifies the functions that OpenSSL uses for random number | ||
20 | generation. By modifying the method, alternative implementations such as | ||
21 | hardware RNGs may be used. IMPORTANT: See the NOTES section for important | ||
22 | information about how these RAND API functions are affected by the use of | ||
23 | B<ENGINE> API calls. | ||
24 | |||
25 | Initially, the default RAND_METHOD is the OpenSSL internal implementation, as | ||
26 | returned by RAND_SSLeay(). | ||
27 | |||
28 | RAND_set_default_method() makes B<meth> the method for PRNG use. B<NB>: This is | ||
29 | true only whilst no ENGINE has been set as a default for RAND, so this function | ||
30 | is no longer recommended. | ||
31 | |||
32 | RAND_get_default_method() returns a pointer to the current RAND_METHOD. | ||
33 | However, the meaningfulness of this result is dependent on whether the ENGINE | ||
34 | API is being used, so this function is no longer recommended. | ||
35 | |||
36 | =head1 THE RAND_METHOD STRUCTURE | ||
37 | |||
38 | typedef struct rand_meth_st | ||
39 | { | ||
40 | void (*seed)(const void *buf, int num); | ||
41 | int (*bytes)(unsigned char *buf, int num); | ||
42 | void (*cleanup)(void); | ||
43 | void (*add)(const void *buf, int num, int entropy); | ||
44 | int (*pseudorand)(unsigned char *buf, int num); | ||
45 | int (*status)(void); | ||
46 | } RAND_METHOD; | ||
47 | |||
48 | The components point to the implementation of RAND_seed(), | ||
49 | RAND_bytes(), RAND_cleanup(), RAND_add(), RAND_pseudo_rand() | ||
50 | and RAND_status(). | ||
51 | Each component may be NULL if the function is not implemented. | ||
52 | |||
53 | =head1 RETURN VALUES | ||
54 | |||
55 | RAND_set_rand_method() returns no value. RAND_get_rand_method() and | ||
56 | RAND_SSLeay() return pointers to the respective methods. | ||
57 | |||
58 | =head1 NOTES | ||
59 | |||
60 | As of version 0.9.7, RAND_METHOD implementations are grouped together with other | ||
61 | algorithmic APIs (eg. RSA_METHOD, EVP_CIPHER, etc) in B<ENGINE> modules. If a | ||
62 | default ENGINE is specified for RAND functionality using an ENGINE API function, | ||
63 | that will override any RAND defaults set using the RAND API (ie. | ||
64 | RAND_set_rand_method()). For this reason, the ENGINE API is the recommended way | ||
65 | to control default implementations for use in RAND and other cryptographic | ||
66 | algorithms. | ||
67 | |||
68 | =head1 SEE ALSO | ||
69 | |||
70 | L<rand(3)|rand(3)>, L<engine(3)|engine(3)> | ||
71 | |||
72 | =head1 HISTORY | ||
73 | |||
74 | RAND_set_rand_method(), RAND_get_rand_method() and RAND_SSLeay() are | ||
75 | available in all versions of OpenSSL. | ||
76 | |||
77 | In the engine version of version 0.9.6, RAND_set_rand_method() was altered to | ||
78 | take an ENGINE pointer as its argument. As of version 0.9.7, that has been | ||
79 | reverted as the ENGINE API transparently overrides RAND defaults if used, | ||
80 | otherwise RAND API functions work as before. RAND_set_rand_engine() was also | ||
81 | introduced in version 0.9.7. | ||
82 | |||
83 | =cut | ||