diff options
Diffstat (limited to 'src/lib/kdf/kdf.cpp')
-rw-r--r-- | src/lib/kdf/kdf.cpp | 49 |
1 files changed, 4 insertions, 45 deletions
diff --git a/src/lib/kdf/kdf.cpp b/src/lib/kdf/kdf.cpp index a0ee580ab..e18d9ce75 100644 --- a/src/lib/kdf/kdf.cpp +++ b/src/lib/kdf/kdf.cpp @@ -6,24 +6,8 @@ */ #include <botan/kdf.h> -#include <botan/libstate.h> -#include <botan/scan_name.h> - -#if defined(BOTAN_HAS_KDF1) - #include <botan/kdf1.h> -#endif - -#if defined(BOTAN_HAS_KDF2) - #include <botan/kdf2.h> -#endif - -#if defined(BOTAN_HAS_X942_PRF) - #include <botan/prf_x942.h> -#endif - -#if defined(BOTAN_HAS_TLS_V10_PRF) - #include <botan/prf_tls.h> -#endif +#include <botan/algo_registry.h> +#include <botan/exceptn.h> namespace Botan { @@ -31,36 +15,11 @@ KDF* get_kdf(const std::string& algo_spec) { SCAN_Name request(algo_spec); - Algorithm_Factory& af = global_state().algorithm_factory(); - if(request.algo_name() == "Raw") return nullptr; // No KDF -#if defined(BOTAN_HAS_KDF1) - if(request.algo_name() == "KDF1" && request.arg_count() == 1) - return new KDF1(af.make_hash_function(request.arg(0))); -#endif - -#if defined(BOTAN_HAS_KDF2) - if(request.algo_name() == "KDF2" && request.arg_count() == 1) - return new KDF2(af.make_hash_function(request.arg(0))); -#endif - -#if defined(BOTAN_HAS_X942_PRF) - if(request.algo_name() == "X9.42-PRF" && request.arg_count() == 1) - return new X942_PRF(request.arg(0)); // OID -#endif - -#if defined(BOTAN_HAS_TLS_V10_PRF) - if(request.algo_name() == "TLS-PRF" && request.arg_count() == 0) - return new TLS_PRF; -#endif - -#if defined(BOTAN_HAS_TLS_V12_PRF) - if(request.algo_name() == "TLS-12-PRF" && request.arg_count() == 1) - return new TLS_12_PRF(af.make_mac("HMAC(" + request.arg(0) + ")")); -#endif - + if(KDF* kdf = make_a<KDF>(algo_spec)) + return kdf; throw Algorithm_Not_Found(algo_spec); } |