aboutsummaryrefslogtreecommitdiffstats
path: root/include/engine.h
diff options
context:
space:
mode:
authorlloyd <[email protected]>2006-05-18 18:33:19 +0000
committerlloyd <[email protected]>2006-05-18 18:33:19 +0000
commita2c99d3270eb73ef2db5704fc54356c6b75096f8 (patch)
treead3d6c4fcc8dd0f403f8105598943616246fe172 /include/engine.h
Initial checkin1.5.6
Diffstat (limited to 'include/engine.h')
-rw-r--r--include/engine.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/include/engine.h b/include/engine.h
new file mode 100644
index 000000000..d28095b71
--- /dev/null
+++ b/include/engine.h
@@ -0,0 +1,97 @@
+/*************************************************
+* Engine Header File *
+* (C) 1999-2006 The Botan Project *
+*************************************************/
+
+#ifndef BOTAN_ENGINE_H__
+#define BOTAN_ENGINE_H__
+
+#include <botan/base.h>
+#include <botan/mutex.h>
+#include <botan/pk_ops.h>
+#include <botan/pow_mod.h>
+#include <botan/basefilt.h>
+#include <utility>
+#include <map>
+
+namespace Botan {
+
+/*************************************************
+* Engine Base Class *
+*************************************************/
+class Engine
+ {
+ public:
+ virtual IF_Operation* if_op(const BigInt&, const BigInt&, const BigInt&,
+ const BigInt&, const BigInt&, const BigInt&,
+ const BigInt&, const BigInt&) const;
+ virtual DSA_Operation* dsa_op(const DL_Group&, const BigInt&,
+ const BigInt&) const;
+ virtual NR_Operation* nr_op(const DL_Group&, const BigInt&,
+ const BigInt&) const;
+ virtual ELG_Operation* elg_op(const DL_Group&, const BigInt&,
+ const BigInt&) const;
+ virtual DH_Operation* dh_op(const DL_Group&, const BigInt&) const;
+
+ virtual Modular_Exponentiator* mod_exp(const BigInt&,
+ Power_Mod::Usage_Hints) const;
+
+ virtual Keyed_Filter* get_cipher(const std::string&, Cipher_Dir);
+
+ const BlockCipher* block_cipher(const std::string&) const;
+ 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;
+
+ void add_algorithm(BlockCipher*) const;
+ 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();
+ virtual ~Engine();
+ private:
+ virtual BlockCipher* find_block_cipher(const std::string&) const;
+ virtual StreamCipher* find_stream_cipher(const std::string&) const;
+ virtual HashFunction* find_hash(const std::string&) const;
+ virtual MessageAuthenticationCode* find_mac(const std::string&) const;
+ virtual class S2K* find_s2k(const std::string&) const;
+ virtual class BlockCipherModePaddingMethod*
+ find_bc_pad(const std::string&) const;
+
+ Algorithm* get_algo(const std::string&, const std::string&) const;
+ void add_algo(const std::string&, Algorithm*) const;
+
+ typedef std::pair<Mutex*, std::map<std::string, Algorithm*> >
+ mutex_map_pair;
+ mutable std::map<std::string, mutex_map_pair> mappings;
+ };
+
+namespace Engine_Core {
+
+/*************************************************
+* Get an operation from an Engine *
+*************************************************/
+Modular_Exponentiator* mod_exp(const BigInt&, Power_Mod::Usage_Hints);
+
+IF_Operation* if_op(const BigInt&, const BigInt&, const BigInt&,
+ const BigInt&, const BigInt&, const BigInt&,
+ const BigInt&, const BigInt&);
+
+DSA_Operation* dsa_op(const DL_Group&, const BigInt&, const BigInt&);
+NR_Operation* nr_op(const DL_Group&, const BigInt&, const BigInt&);
+
+ELG_Operation* elg_op(const DL_Group&, const BigInt&, const BigInt&);
+
+DH_Operation* dh_op(const DL_Group&, const BigInt&);
+
+}
+
+}
+
+#endif