aboutsummaryrefslogtreecommitdiffstats
path: root/src/kdf/kdf2
diff options
context:
space:
mode:
Diffstat (limited to 'src/kdf/kdf2')
-rw-r--r--src/kdf/kdf2/kdf2.cpp12
-rw-r--r--src/kdf/kdf2/kdf2.h7
2 files changed, 5 insertions, 14 deletions
diff --git a/src/kdf/kdf2/kdf2.cpp b/src/kdf/kdf2/kdf2.cpp
index fa975ccb9..fdeb09869 100644
--- a/src/kdf/kdf2/kdf2.cpp
+++ b/src/kdf/kdf2/kdf2.cpp
@@ -4,9 +4,7 @@
*************************************************/
#include <botan/kdf2.h>
-#include <botan/lookup.h>
#include <botan/loadstor.h>
-#include <memory>
namespace Botan {
@@ -20,7 +18,6 @@ SecureVector<byte> KDF2::derive(u32bit out_len,
SecureVector<byte> output;
u32bit counter = 1;
- std::auto_ptr<HashFunction> hash(get_hash(hash_name));
while(out_len && counter)
{
hash->update(secret, secret_len);
@@ -39,13 +36,4 @@ SecureVector<byte> KDF2::derive(u32bit out_len,
return output;
}
-/*************************************************
-* KDF2 Constructor *
-*************************************************/
-KDF2::KDF2(const std::string& h_name) : hash_name(h_name)
- {
- if(!have_hash(hash_name))
- throw Algorithm_Not_Found(hash_name);
- }
-
}
diff --git a/src/kdf/kdf2/kdf2.h b/src/kdf/kdf2/kdf2.h
index f3768f15f..33db36ad4 100644
--- a/src/kdf/kdf2/kdf2.h
+++ b/src/kdf/kdf2/kdf2.h
@@ -7,6 +7,7 @@
#define BOTAN_KDF2_H__
#include <botan/kdf.h>
+#include <botan/base.h>
namespace Botan {
@@ -19,9 +20,11 @@ class BOTAN_DLL KDF2 : public KDF
SecureVector<byte> derive(u32bit, const byte[], u32bit,
const byte[], u32bit) const;
- KDF2(const std::string&);
+ KDF2(HashFunction* h) : hash(h) {}
+ KDF2(const KDF2& other) : hash(other.hash->clone()) {}
+ ~KDF2() { delete hash; }
private:
- const std::string hash_name;
+ HashFunction* hash;
};
}