1=pod
2
3=head1 NAME
4
5EVP_KDF-PBKDF1 - The PBKDF1 EVP_KDF implementation
6
7=head1 DESCRIPTION
8
9Support for computing the B<PBKDF1> password-based KDF through the B<EVP_KDF>
10API.
11
12The EVP_KDF-PBKDF1 algorithm implements the PBKDF1 password-based key
13derivation function, as described in RFC 8018; it derives a key from a password
14using a salt and iteration count.
15
16=head2 Identity
17
18"PBKDF1" is the name for this implementation; it
19can be used with the EVP_KDF_fetch() function.
20
21=head2 Supported parameters
22
23The supported parameters are:
24
25=over 4
26
27=item "pass" (B<OSSL_KDF_PARAM_PASSWORD>) <octet string>
28
29=item "salt" (B<OSSL_KDF_PARAM_SALT>) <octet string>
30
31=item "iter" (B<OSSL_KDF_PARAM_ITER>) <unsigned integer>
32
33This parameter has a default value of 0 and should be set.
34
35=item "properties" (B<OSSL_KDF_PARAM_PROPERTIES>) <UTF8 string>
36
37=item "digest" (B<OSSL_KDF_PARAM_DIGEST>) <UTF8 string>
38
39These parameters work as described in L<EVP_KDF(3)/PARAMETERS>.
40
41=back
42
43=head1 NOTES
44
45A typical application of this algorithm is to derive keying material for an
46encryption algorithm from a password in the "pass", a salt in "salt",
47and an iteration count.
48
49Increasing the "iter" parameter slows down the algorithm which makes it
50harder for an attacker to perform a brute force attack using a large number
51of candidate passwords.
52
53No assumption is made regarding the given password; it is simply treated as a
54byte sequence.
55
56=head1 CONFORMING TO
57
58RFC 8018
59
60=head1 SEE ALSO
61
62L<EVP_KDF(3)>,
63L<EVP_KDF_CTX_new(3)>,
64L<EVP_KDF_CTX_free(3)>,
65L<EVP_KDF_CTX_set_params(3)>,
66L<EVP_KDF_derive(3)>,
67L<EVP_KDF(3)/PARAMETERS>
68
69=head1 HISTORY
70
71This functionality was added in OpenSSL 3.0.
72
73=head1 COPYRIGHT
74
75Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
76
77Licensed under the Apache License 2.0 (the "License").  You may not use
78this file except in compliance with the License.  You can obtain a copy
79in the file LICENSE in the source distribution or at
80L<https://www.openssl.org/source/license.html>.
81
82=cut
83