Botan 2.19.1
Crypto and TLS for C&
|
#include <pgp_s2k.h>
Public Member Functions | |
PBKDF * | clone () const override |
template<typename Alloc > | |
OctetString | derive_key (size_t out_len, const std::string &passphrase, const std::vector< uint8_t, Alloc > &salt, size_t iterations) const |
template<typename Alloc > | |
OctetString | derive_key (size_t out_len, const std::string &passphrase, const std::vector< uint8_t, Alloc > &salt, std::chrono::milliseconds msec, size_t &iterations) const |
OctetString | derive_key (size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, size_t iterations) const |
OctetString | derive_key (size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, std::chrono::milliseconds msec, size_t &iterations) const |
std::string | name () const override |
OpenPGP_S2K (HashFunction *hash) | |
size_t | pbkdf (uint8_t output_buf[], size_t output_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, size_t iterations, std::chrono::milliseconds msec) const override |
secure_vector< uint8_t > | pbkdf_iterations (size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, size_t iterations) const |
void | pbkdf_iterations (uint8_t out[], size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, size_t iterations) const |
secure_vector< uint8_t > | pbkdf_timed (size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, std::chrono::milliseconds msec, size_t &iterations) const |
void | pbkdf_timed (uint8_t out[], size_t out_len, const std::string &passphrase, const uint8_t salt[], size_t salt_len, std::chrono::milliseconds msec, size_t &iterations) const |
Static Public Member Functions | |
static std::unique_ptr< PBKDF > | create (const std::string &algo_spec, const std::string &provider="") |
static std::unique_ptr< PBKDF > | create_or_throw (const std::string &algo_spec, const std::string &provider="") |
static size_t | decode_count (uint8_t encoded_iter) |
static uint8_t | encode_count (size_t iterations) |
static std::vector< std::string > | providers (const std::string &algo_spec) |
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
Due to complexities of the PGP S2K algorithm, time-based derivation is not supported. So if iterations == 0 and msec.count() > 0, an exception is thrown. In the future this may be supported, in which case "iterated" S2K will be used and the number of iterations performed is returned.
Note that unlike PBKDF2, OpenPGP S2K's "iterations" are defined as the number of bytes hashed.
|
inlineexplicit |
|
inlineoverridevirtual |
Implements Botan::PBKDF.
Definition at line 75 of file pgp_s2k.h.
|
staticinherited |
Create an instance based on a name If provider is empty then best available is chosen.
algo_spec | algorithm name |
provider | provider implementation to choose |
Definition at line 26 of file pbkdf.cpp.
References Botan::SCAN_Name::algo_name(), Botan::SCAN_Name::arg(), Botan::SCAN_Name::arg_count(), BOTAN_UNUSED, Botan::HashFunction::create(), Botan::MessageAuthenticationCode::create(), and hash.
Referenced by Botan::PBKDF::create_or_throw().
|
staticinherited |
Create an instance based on a name, or throw if the algo/provider combination cannot be found. If provider is empty then best available is chosen.
Definition at line 74 of file pbkdf.cpp.
References Botan::PBKDF::create(), and Botan::PBKDF::pbkdf().
Referenced by Botan::CryptoBox::decrypt_bin(), Botan::CryptoBox::encrypt(), and Botan::get_pbkdf().
|
inlinestatic |
|
inlineinherited |
Derive a key from a passphrase
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
iterations | the number of iterations to use (use 10K or more) |
Definition at line 176 of file pbkdf.h.
|
inlineinherited |
Derive a key from a passphrase using a certain amount of time
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
msec | is how long to run the PBKDF |
iterations | is set to the number of iterations used |
Definition at line 211 of file pbkdf.h.
|
inlineinherited |
Derive a key from a passphrase
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
iterations | the number of iterations to use (use 10K or more) |
Definition at line 160 of file pbkdf.h.
References salt_len.
Referenced by Botan::check_passhash9(), and Botan::generate_passhash9().
|
inlineinherited |
Derive a key from a passphrase
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
msec | is how long to run the PBKDF |
iterations | is set to the number of iterations used |
Definition at line 193 of file pbkdf.h.
References salt_len.
|
inlinestatic |
RFC 4880 encodes the iteration count to a single-byte value
Definition at line 89 of file pgp_s2k.h.
References Botan::RFC4880_encode_count().
|
inlineoverridevirtual |
Implements Botan::PBKDF.
Definition at line 70 of file pgp_s2k.h.
|
overridevirtual |
Derive a key from a passphrase for a number of iterations specified by either iterations or if iterations == 0 then running until msec time has elapsed.
out | buffer to store the derived key, must be of out_len bytes |
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
iterations | the number of iterations to use (use 10K or more) |
msec | if iterations is zero, then instead the PBKDF is run until msec milliseconds has passed. |
Implements Botan::PBKDF.
Definition at line 132 of file pgp_s2k.cpp.
References salt_len, and Botan::RFC4880_S2K_Family::tune().
|
inherited |
Derive a key from a passphrase for a number of iterations.
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
iterations | the number of iterations to use (use 10K or more) |
Definition at line 112 of file pbkdf.cpp.
References Botan::PBKDF::pbkdf_iterations(), and salt_len.
|
inherited |
Derive a key from a passphrase for a number of iterations.
out | buffer to store the derived key, must be of out_len bytes |
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
iterations | the number of iterations to use (use 10K or more) |
Definition at line 98 of file pbkdf.cpp.
References BOTAN_ASSERT_EQUAL, Botan::PBKDF::name(), Botan::PBKDF::pbkdf(), and salt_len.
Referenced by Botan::PBKDF::pbkdf_iterations().
|
inherited |
Derive a key from a passphrase, running until msec time has elapsed.
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
msec | if iterations is zero, then instead the PBKDF is run until msec milliseconds has passed. |
iterations | set to the number iterations executed |
Definition at line 122 of file pbkdf.cpp.
References Botan::PBKDF::pbkdf_timed(), and salt_len.
|
inherited |
Derive a key from a passphrase, running until msec time has elapsed.
out | buffer to store the derived key, must be of out_len bytes |
out_len | the desired length of the key to produce |
passphrase | the password to derive the key from |
salt | a randomly chosen salt |
salt_len | length of salt in bytes |
msec | if iterations is zero, then instead the PBKDF is run until msec milliseconds has passed. |
iterations | set to the number iterations executed |
Definition at line 89 of file pbkdf.cpp.
References Botan::PBKDF::pbkdf(), and salt_len.
Referenced by Botan::PBKDF::pbkdf_timed().
|
staticinherited |