xref: /openssl/doc/man7/EVP_RAND-CRNG-TEST.pod (revision d927eb29)
1=pod
2
3=head1 NAME
4
5EVP_RAND-CRNG-TEST - The FIPS health testing EVP_RAND filter
6
7=head1 DESCRIPTION
8
9This B<EVP_RAND> object acts as a filter between the entropy source
10and its users.  It performs CRNG health tests as defined in
11L<SP 800-90B|https://csrc.nist.gov/pubs/sp/800/90/b/final> Section 4 "Health
12Tests".  Most requests are forwarded to the entropy source, either via
13its parent reference or via the provider entropy upcalls.
14
15=head2 Identity
16
17"CRNG-TEST" is the name for this implementation; it can be used with the
18EVP_RAND_fetch() function.
19
20=head2 Supported parameters
21
22If a parent EVP_RAND is specified on context creation, the parent's
23parameters are supported because the request is forwarded to the parent
24seed source for processing.
25
26If no parent EVP_RAND is specified on context creation, the following parameters
27are supported:
28
29=over 4
30
31=item "state" (B<OSSL_RAND_PARAM_STATE>) <integer>
32
33=item "strength" (B<OSSL_RAND_PARAM_STRENGTH>) <unsigned integer>
34
35=item "max_request" (B<OSSL_RAND_PARAM_MAX_REQUEST>) <unsigned integer>
36
37These parameters work as described in L<EVP_RAND(3)/PARAMETERS>.
38
39=item "fips-indicator" (B<OSSL_DRBG_PARAM_FIPS_APPROVED_INDICATOR>) <integer>
40
41This parameter works as described in L<provider-rand(7)/PARAMETERS>.
42
43=back
44
45=head1 NOTES
46
47This EVP_RAND is only implemented by the OpenSSL FIPS provider.
48
49A context for a health test filter can be obtained by calling:
50
51 EVP_RAND *parent = ...;
52 EVP_RAND *rand = EVP_RAND_fetch(NULL, "CRNG-TEST", NULL);
53 EVP_RAND_CTX *rctx = EVP_RAND_CTX_new(rand, parent);
54
55=head1 SEE ALSO
56
57L<EVP_RAND(3)>, L<OSSL_PROVIDER-FIPS(7)>
58
59=head1 HISTORY
60
61This functionality was added in OpenSSL 3.4.
62
63=head1 COPYRIGHT
64
65Copyright 2024 The OpenSSL Project Authors. All Rights Reserved.
66
67Licensed under the Apache License 2.0 (the "License").  You may not use
68this file except in compliance with the License.  You can obtain a copy
69in the file LICENSE in the source distribution or at
70L<https://www.openssl.org/source/license.html>.
71
72=cut
73