Botan 2.19.1
Crypto and TLS for C&
|
#include <pgp_s2k.h>
Public Member Functions | |
void | derive_key (uint8_t out[], size_t out_len, const char *password, size_t password_len, const uint8_t salt[], size_t salt_len) const override |
size_t | iterations () const override |
virtual size_t | memory_param () const |
virtual size_t | parallelism () const |
RFC4880_S2K (HashFunction *hash, size_t iterations) | |
std::string | to_string () const override |
virtual size_t | total_memory_usage () const |
OpenPGP's S2K
See RFC 4880 sections 3.7.1.1, 3.7.1.2, and 3.7.1.3 If the salt is empty and iterations == 1, "simple" S2K is used If the salt is non-empty and iterations == 1, "salted" S2K is used If the salt is non-empty and iterations > 1, "iterated" S2K is used
Note that unlike PBKDF2, OpenPGP S2K's "iterations" are defined as the number of bytes hashed.
Botan::RFC4880_S2K::RFC4880_S2K | ( | HashFunction * | hash, |
size_t | iterations | ||
) |
hash | the hash function to use |
iterations | is rounded due to PGP formatting |
Definition at line 198 of file pgp_s2k.cpp.
|
overridevirtual |
Derive a key from a password
out | buffer to store the derived key, must be of out_len bytes |
out_len | the desired length of the key to produce |
password | the password to derive the key from |
password_len | the length of password in bytes |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
This function is const, but is not thread safe. Different threads should either use unique objects, or serialize all access.
Implements Botan::PasswordHash.
Definition at line 209 of file pgp_s2k.cpp.
References salt_len.
|
inlineoverridevirtual |
Most password hashes have some notion of iterations.
Implements Botan::PasswordHash.
Definition at line 125 of file pgp_s2k.h.
|
inlinevirtualinherited |
Some password hashing algorithms have a parameter which controls how much memory is used. If not supported by some algorithm, returns 0.
Reimplemented in Botan::Argon2, Botan::Bcrypt_PBKDF, and Botan::Scrypt.
Definition at line 40 of file pwdhash.h.
|
inlinevirtualinherited |
Some password hashing algorithms have a parallelism parameter. If the algorithm does not support this notion, then the function returns zero. This allows distinguishing between a password hash which just does not support parallel operation, vs one that does support parallel operation but which has been configured to use a single lane.
Reimplemented in Botan::Argon2, Botan::Bcrypt_PBKDF, and Botan::Scrypt.
Definition at line 50 of file pwdhash.h.
|
overridevirtual |
Implements Botan::PasswordHash.
Definition at line 204 of file pgp_s2k.cpp.
References Botan::ASN1::to_string().
|
inlinevirtualinherited |
Returns an estimate of the total memory usage required to perform this key derivation.
If this algorithm uses a small and constant amount of memory, with no effort made towards being memory hard, this function returns 0.
Reimplemented in Botan::Argon2, Botan::Bcrypt_PBKDF, and Botan::Scrypt.
Definition at line 59 of file pwdhash.h.