aboutsummaryrefslogtreecommitdiffstats
path: root/src/kdf/kdf1/kdf1.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdf/kdf1/kdf1.cpp')
-rw-r--r--src/kdf/kdf1/kdf1.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/kdf/kdf1/kdf1.cpp b/src/kdf/kdf1/kdf1.cpp
new file mode 100644
index 000000000..aac32db80
--- /dev/null
+++ b/src/kdf/kdf1/kdf1.cpp
@@ -0,0 +1,35 @@
+/*************************************************
+* KDF1 Source File *
+* (C) 1999-2007 Jack Lloyd *
+*************************************************/
+
+#include <botan/kdf1.h>
+#include <botan/lookup.h>
+#include <memory>
+
+namespace Botan {
+
+/*************************************************
+* KDF1 Key Derivation Mechanism *
+*************************************************/
+SecureVector<byte> KDF1::derive(u32bit,
+ const byte secret[], u32bit secret_len,
+ const byte P[], u32bit P_len) const
+ {
+ std::auto_ptr<HashFunction> hash(get_hash(hash_name));
+
+ hash->update(secret, secret_len);
+ hash->update(P, P_len);
+ return hash->final();
+ }
+
+/*************************************************
+* KDF1 Constructor *
+*************************************************/
+KDF1::KDF1(const std::string& h_name) : hash_name(h_name)
+ {
+ if(!have_hash(hash_name))
+ throw Algorithm_Not_Found(hash_name);
+ }
+
+}