aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/def_engine/lookup_stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/def_engine/lookup_stream.cpp')
-rw-r--r--src/engine/def_engine/lookup_stream.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/engine/def_engine/lookup_stream.cpp b/src/engine/def_engine/lookup_stream.cpp
new file mode 100644
index 000000000..e7f1ff41d
--- /dev/null
+++ b/src/engine/def_engine/lookup_stream.cpp
@@ -0,0 +1,59 @@
+/*************************************************
+* Stream Cipher Lookup *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#include <botan/def_eng.h>
+#include <botan/scan_name.h>
+
+#if defined(BOTAN_HAS_ARC4)
+ #include <botan/arc4.h>
+#endif
+
+#if defined(BOTAN_HAS_SALSA20)
+ #include <botan/salsa20.h>
+#endif
+
+#if defined(BOTAN_HAS_TURING)
+ #include <botan/turing.h>
+#endif
+
+#if defined(BOTAN_HAS_WID_WAKE)
+ #include <botan/wid_wake.h>
+#endif
+
+namespace Botan {
+
+/*************************************************
+* Look for an algorithm with this name *
+*************************************************/
+StreamCipher*
+Default_Engine::find_stream_cipher(const SCAN_Name& request,
+ Algorithm_Factory&) const
+ {
+#if defined(BOTAN_HAS_ARC4)
+ if(request.algo_name() == "ARC4")
+ return new ARC4(request.arg_as_u32bit(0, 0));
+ if(request.algo_name() == "RC4_drop")
+ return new ARC4(768);
+#endif
+
+#if defined(BOTAN_HAS_SALSA20)
+ if(request.algo_name() == "Salsa20")
+ return new Salsa20;
+#endif
+
+#if defined(BOTAN_HAS_TURING)
+ if(request.algo_name() == "Turing")
+ return new Turing;
+#endif
+
+#if defined(BOTAN_HAS_WID_WAKE)
+ if(request.algo_name() == "WiderWake4+1-BE")
+ return new WiderWake_41_BE;
+#endif
+
+ return 0;
+ }
+
+}