diff options
author | lloyd <[email protected]> | 2008-11-10 02:44:12 +0000 |
---|---|---|
committer | lloyd <[email protected]> | 2008-11-10 02:44:12 +0000 |
commit | ba1271baf1ccbc0302971e7300229d0dec0405ab (patch) | |
tree | cbf5b81dd55f71a6c4b9fa220aef0424853498db | |
parent | 032a4574bee834337b8ccf7fc29779c69c161e2b (diff) |
Remove support for S2K in Engines. There are only three implementations of
an S2K in Botan, all in the core library, and it's relatively unlikely
that that many more will be added. get_s2k still exists and performs a
direct search across the possibilities.
-rw-r--r-- | src/libstate/engine/def_engine/def_eng.h | 1 | ||||
-rw-r--r-- | src/libstate/engine/def_engine/info.txt | 1 | ||||
-rw-r--r-- | src/libstate/engine/def_engine/lookup_s2k.cpp | 50 | ||||
-rw-r--r-- | src/libstate/engine/engine.cpp | 20 | ||||
-rw-r--r-- | src/libstate/engine/engine.h | 6 | ||||
-rw-r--r-- | src/libstate/get_enc.cpp | 40 | ||||
-rw-r--r-- | src/libstate/lookup.cpp | 29 | ||||
-rw-r--r-- | src/libstate/lookup.h | 2 |
8 files changed, 39 insertions, 110 deletions
diff --git a/src/libstate/engine/def_engine/def_eng.h b/src/libstate/engine/def_engine/def_eng.h index 3d3fba809..4f1bd89a7 100644 --- a/src/libstate/engine/def_engine/def_eng.h +++ b/src/libstate/engine/def_engine/def_eng.h @@ -64,7 +64,6 @@ class BOTAN_DLL Default_Engine : public Engine HashFunction* find_hash(const std::string&) const; MessageAuthenticationCode* find_mac(const std::string&) const; - class S2K* find_s2k(const std::string&) const; class BlockCipherModePaddingMethod* find_bc_pad(const std::string&) const; }; diff --git a/src/libstate/engine/def_engine/info.txt b/src/libstate/engine/def_engine/info.txt index 823df1559..da2683bb7 100644 --- a/src/libstate/engine/def_engine/info.txt +++ b/src/libstate/engine/def_engine/info.txt @@ -13,6 +13,5 @@ lookup_bc_pad.cpp lookup_block.cpp lookup_hash.cpp lookup_mac.cpp -lookup_s2k.cpp lookup_stream.cpp </add> diff --git a/src/libstate/engine/def_engine/lookup_s2k.cpp b/src/libstate/engine/def_engine/lookup_s2k.cpp deleted file mode 100644 index 73f012b18..000000000 --- a/src/libstate/engine/def_engine/lookup_s2k.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/************************************************* -* S2K Lookup * -* (C) 1999-2007 Jack Lloyd * -*************************************************/ - -#include <botan/def_eng.h> -#include <botan/lookup.h> -#include <botan/scan_name.h> - -#if defined(BOTAN_HAS_PBKDF1) - #include <botan/pbkdf1.h> -#endif - -#if defined(BOTAN_HAS_PBKDF2) - #include <botan/pbkdf2.h> - #include <botan/hmac.h> -#endif - -#if defined(BOTAN_HAS_PGPS2K) - #include <botan/pgp_s2k.h> -#endif - -namespace Botan { - -/************************************************* -* Look for an algorithm with this name * -*************************************************/ -S2K* Default_Engine::find_s2k(const std::string& algo_spec) const - { - SCAN_Name request(algo_spec); - -#if defined(BOTAN_HAS_PBKDF1) - 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(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(request.algo_name() == "OpenPGP-S2K" && request.arg_count() == 1) - return new OpenPGP_S2K(get_hash(request.argument(0))); -#endif - - return 0; - } - -} diff --git a/src/libstate/engine/engine.cpp b/src/libstate/engine/engine.cpp index 59621a7d3..b5d48a0ca 100644 --- a/src/libstate/engine/engine.cpp +++ b/src/libstate/engine/engine.cpp @@ -7,7 +7,6 @@ #include <botan/libstate.h> #include <botan/stl_util.h> #include <botan/mode_pad.h> -#include <botan/s2k.h> namespace Botan { @@ -101,15 +100,6 @@ const MessageAuthenticationCode* Engine::mac(const std::string& name) const } /************************************************* -* Acquire a S2K object * -*************************************************/ -const S2K* Engine::s2k(const std::string& name) const - { - return lookup_algo(cache_of_s2k, global_state().deref_alias(name), - this, &Engine::find_s2k); - } - -/************************************************* * Acquire a cipher padding object * *************************************************/ const BlockCipherModePaddingMethod* @@ -152,14 +142,6 @@ void Engine::add_algorithm(MessageAuthenticationCode* algo) const } /************************************************* -* Add a S2K to the lookup table * -*************************************************/ -void Engine::add_algorithm(S2K* algo) const - { - cache_of_s2k->add(algo); - } - -/************************************************* * Add a cipher pad method to the lookup table * *************************************************/ void Engine::add_algorithm(BlockCipherModePaddingMethod* algo) const @@ -176,7 +158,6 @@ Engine::Engine() cache_of_sc = new Algorithm_Cache_Impl<StreamCipher>(); cache_of_hf = new Algorithm_Cache_Impl<HashFunction>(); cache_of_mac = new Algorithm_Cache_Impl<MessageAuthenticationCode>(); - cache_of_s2k = new Algorithm_Cache_Impl<S2K>(); cache_of_bc_pad = new Algorithm_Cache_Impl<BlockCipherModePaddingMethod>(); } @@ -190,7 +171,6 @@ Engine::~Engine() delete cache_of_sc; delete cache_of_hf; delete cache_of_mac; - delete cache_of_s2k; delete cache_of_bc_pad; } diff --git a/src/libstate/engine/engine.h b/src/libstate/engine/engine.h index 5073b6d0d..584219045 100644 --- a/src/libstate/engine/engine.h +++ b/src/libstate/engine/engine.h @@ -119,7 +119,6 @@ class BOTAN_DLL Engine const StreamCipher* stream_cipher(const std::string&) const; const HashFunction* hash(const std::string&) const; const MessageAuthenticationCode* mac(const std::string&) const; - const class S2K* s2k(const std::string&) const; const class BlockCipherModePaddingMethod* bc_pad(const std::string&) const; @@ -129,7 +128,6 @@ class BOTAN_DLL Engine void add_algorithm(StreamCipher*) const; void add_algorithm(HashFunction*) const; void add_algorithm(MessageAuthenticationCode*) const; - void add_algorithm(class S2K*) const; void add_algorithm(class BlockCipherModePaddingMethod*) const; Engine(); @@ -147,9 +145,6 @@ class BOTAN_DLL Engine virtual MessageAuthenticationCode* find_mac(const std::string&) const { return 0; } - virtual class S2K* find_s2k(const std::string&) const - { return 0; } - virtual class BlockCipherModePaddingMethod* find_bc_pad(const std::string&) const { return 0; } @@ -175,7 +170,6 @@ class BOTAN_DLL Engine Algorithm_Cache<HashFunction>* cache_of_hf; Algorithm_Cache<MessageAuthenticationCode>* cache_of_mac; Algorithm_Cache<BlockCipherModePaddingMethod>* cache_of_bc_pad; - Algorithm_Cache<S2K>* cache_of_s2k; }; namespace Engine_Core { diff --git a/src/libstate/get_enc.cpp b/src/libstate/get_enc.cpp index f93ecb703..f2398e318 100644 --- a/src/libstate/get_enc.cpp +++ b/src/libstate/get_enc.cpp @@ -1,5 +1,5 @@ /************************************************* -* EMSA/EME/KDF/MGF Retrieval Source File * +* PBKDF/EMSA/EME/KDF/MGF Retrieval Source File * * (C) 1999-2007 Jack Lloyd * *************************************************/ @@ -7,6 +7,19 @@ #include <botan/libstate.h> #include <botan/scan_name.h> +#if defined(BOTAN_HAS_PBKDF1) + #include <botan/pbkdf1.h> +#endif + +#if defined(BOTAN_HAS_PBKDF2) + #include <botan/pbkdf2.h> + #include <botan/hmac.h> +#endif + +#if defined(BOTAN_HAS_PGPS2K) + #include <botan/pgp_s2k.h> +#endif + #if defined(BOTAN_HAS_MGF1) #include <botan/mgf1.h> #endif @@ -66,6 +79,31 @@ namespace Botan { /************************************************* +* Get a S2K algorithm by name * +*************************************************/ +S2K* get_s2k(const std::string& algo_spec) + { + SCAN_Name request(algo_spec); + +#if defined(BOTAN_HAS_PBKDF1) + 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(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(request.algo_name() == "OpenPGP-S2K" && request.arg_count() == 1) + return new OpenPGP_S2K(get_hash(request.argument(0))); +#endif + + throw Algorithm_Not_Found(algo_spec); + } + +/************************************************* * Get an EMSA by name * *************************************************/ EMSA* get_emsa(const std::string& algo_spec) diff --git a/src/libstate/lookup.cpp b/src/libstate/lookup.cpp index b34a532e3..700a62a7a 100644 --- a/src/libstate/lookup.cpp +++ b/src/libstate/lookup.cpp @@ -54,17 +54,6 @@ MessageAuthenticationCode* get_mac(const std::string& name) } /************************************************* -* Get a S2K algorithm by name * -*************************************************/ -S2K* get_s2k(const std::string& name) - { - const S2K* s2k = retrieve_s2k(global_state(), name); - if(s2k) - return s2k->clone(); - throw Algorithm_Not_Found(name); - } - -/************************************************* * Get a block cipher padding method by name * *************************************************/ const BlockCipherModePaddingMethod* get_bc_pad(const std::string& name) @@ -311,24 +300,6 @@ const MessageAuthenticationCode* retrieve_mac(Library_State& libstate, } /************************************************* -* Acquire a string-to-key algorithm * -*************************************************/ -const S2K* retrieve_s2k(Library_State& libstate, - const std::string& name) - { - Library_State::Engine_Iterator i(libstate); - - while(const Engine* engine = i.next()) - { - const S2K* algo = engine->s2k(name); - if(algo) - return algo; - } - - return 0; - } - -/************************************************* * Retrieve a block cipher padding method * *************************************************/ const BlockCipherModePaddingMethod* retrieve_bc_pad(Library_State& libstate, diff --git a/src/libstate/lookup.h b/src/libstate/lookup.h index 4a97a2aeb..34618a835 100644 --- a/src/libstate/lookup.h +++ b/src/libstate/lookup.h @@ -39,8 +39,6 @@ retrieve_hash(Library_State&, const std::string&); BOTAN_DLL const MessageAuthenticationCode* retrieve_mac(Library_State&, const std::string&); -BOTAN_DLL const S2K* retrieve_s2k(Library_State&, const std::string&); - BOTAN_DLL const BlockCipherModePaddingMethod* retrieve_bc_pad(Library_State&, const std::string&); |