summaryrefslogtreecommitdiffstats
path: root/botan/src/engine/def_engine/lookup_stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'botan/src/engine/def_engine/lookup_stream.cpp')
-rw-r--r--botan/src/engine/def_engine/lookup_stream.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/botan/src/engine/def_engine/lookup_stream.cpp b/botan/src/engine/def_engine/lookup_stream.cpp
new file mode 100644
index 0000000..e2f1b32
--- /dev/null
+++ b/botan/src/engine/def_engine/lookup_stream.cpp
@@ -0,0 +1,61 @@
+/*
+* Stream Cipher Lookup
+* (C) 1999-2007 Jack Lloyd
+*
+* Distributed under the terms of the Botan license
+*/
+
+#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;
+ }
+
+}