aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/kdf/hkdf/hkdf.h
diff options
context:
space:
mode:
authorlloyd <[email protected]>2015-02-18 04:51:17 +0000
committerlloyd <[email protected]>2015-02-18 04:51:17 +0000
commit888aed4ec2f08684a9707c1251f27285942578c5 (patch)
tree4c78c5ca5a31b217f407c3adbd138a227181b1c5 /src/lib/kdf/hkdf/hkdf.h
parent88285f51ba4fd5bc1a1cc06b0760b3926046f29b (diff)
Convert HKDF to the normal KDF interface
Diffstat (limited to 'src/lib/kdf/hkdf/hkdf.h')
-rw-r--r--src/lib/kdf/hkdf/hkdf.h29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/lib/kdf/hkdf/hkdf.h b/src/lib/kdf/hkdf/hkdf.h
index f1ae61453..c5737b1cc 100644
--- a/src/lib/kdf/hkdf/hkdf.h
+++ b/src/lib/kdf/hkdf/hkdf.h
@@ -1,6 +1,6 @@
/*
* HKDF
-* (C) 2013 Jack Lloyd
+* (C) 2013,2015 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -16,33 +16,24 @@ namespace Botan {
/**
* HKDF, see @rfc 5869 for details
+* This is only the expansion portion of HKDF
*/
-class BOTAN_DLL HKDF
+class BOTAN_DLL HKDF : public KDF
{
public:
- HKDF(MessageAuthenticationCode* extractor,
- MessageAuthenticationCode* prf) :
- m_extractor(extractor), m_prf(prf) {}
+ HKDF(MessageAuthenticationCode* prf) : m_prf(prf) {}
- HKDF(MessageAuthenticationCode* prf) :
- m_extractor(prf), m_prf(m_extractor->clone()) {}
+ static HKDF* make(const Spec& spec);
- void start_extract(const byte salt[], size_t salt_len);
- void extract(const byte input[], size_t input_len);
- void finish_extract();
+ KDF* clone() const { return new HKDF(m_prf->clone()); }
- /**
- * Only call after extract
- * @param output_len must be less than 256*hashlen
- */
- void expand(byte output[], size_t output_len,
- const byte info[], size_t info_len);
+ std::string name() const { return "HKDF(" + m_prf->name() + ")"; }
- std::string name() const;
+ size_t kdf(byte out[], size_t out_len,
+ const byte secret[], size_t secret_len,
+ const byte salt[], size_t salt_len) const override;
- void clear();
private:
- std::unique_ptr<MessageAuthenticationCode> m_extractor;
std::unique_ptr<MessageAuthenticationCode> m_prf;
};