aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstate/engine/def_engine/lookup_s2k.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstate/engine/def_engine/lookup_s2k.cpp')
-rw-r--r--src/libstate/engine/def_engine/lookup_s2k.cpp33
1 files changed, 8 insertions, 25 deletions
diff --git a/src/libstate/engine/def_engine/lookup_s2k.cpp b/src/libstate/engine/def_engine/lookup_s2k.cpp
index 2f33ef6fc..73f012b18 100644
--- a/src/libstate/engine/def_engine/lookup_s2k.cpp
+++ b/src/libstate/engine/def_engine/lookup_s2k.cpp
@@ -5,8 +5,7 @@
#include <botan/def_eng.h>
#include <botan/lookup.h>
-#include <botan/libstate.h>
-#include <botan/parsing.h>
+#include <botan/scan_name.h>
#if defined(BOTAN_HAS_PBKDF1)
#include <botan/pbkdf1.h>
@@ -28,37 +27,21 @@ namespace Botan {
*************************************************/
S2K* Default_Engine::find_s2k(const std::string& algo_spec) const
{
- std::vector<std::string> name = parse_algorithm_name(algo_spec);
- if(name.empty())
- return 0;
-
- const std::string algo_name = global_state().deref_alias(name[0]);
+ SCAN_Name request(algo_spec);
#if defined(BOTAN_HAS_PBKDF1)
- if(algo_name == "PBKDF1")
- {
- if(name.size() == 2)
- return new PKCS5_PBKDF1(get_hash(name[1]));
- throw Invalid_Algorithm_Name(algo_spec);
- }
+ if(request.algo_name() == "PBKDF1" && request.arg_count() == 1)
+ return new PKCS5_PBKDF1(get_hash(request.argument(0)));
#endif
#if defined(BOTAN_HAS_PBKDF2)
- if(algo_name == "PBKDF2")
- {
- if(name.size() == 2)
- return new PKCS5_PBKDF2(new HMAC(get_hash(name[1])));
- throw Invalid_Algorithm_Name(algo_spec);
- }
+ if(request.algo_name() == "PBKDF2" && request.arg_count() == 1)
+ return new PKCS5_PBKDF2(new HMAC(get_hash(request.argument(0))));
#endif
#if defined(BOTAN_HAS_PGPS2K)
- if(algo_name == "OpenPGP-S2K")
- {
- if(name.size() == 2)
- return new OpenPGP_S2K(get_hash(name[1]));
- throw Invalid_Algorithm_Name(algo_spec);
- }
+ if(request.algo_name() == "OpenPGP-S2K" && request.arg_count() == 1)
+ return new OpenPGP_S2K(get_hash(request.argument(0)));
#endif
return 0;