encfs/cipher/PBKDF.h
Valient Gough 7e95ff90c8 encapsulate old cipher support layer
git-svn-id: http://encfs.googlecode.com/svn/trunk@95 db9cf616-1c43-0410-9cb8-a902689de0d6
2013-03-05 06:36:32 +00:00

46 lines
1.0 KiB
C++

#ifndef ENCFS_PBKDF_H
#define ENCFS_PBKDF_H
#include <string>
#include "base/Registry.h"
#include "base/types.h"
#include "cipher/CipherKey.h"
namespace encfs {
// Well-known algorithms.
static const char NAME_PKCS5_PBKDF2_HMAC_SHA1[] = "PKCS5_PBKDF2_HMAC_SHA1";
// Password Based Key Derivation Function.
class PBKDF
{
public:
DECLARE_REGISTERABLE_TYPE(PBKDF);
struct Properties {
std::string mode;
std::string library;
std::string toString() const { return mode; }
};
PBKDF();
virtual ~PBKDF();
virtual bool makeKey(const char *password, int passwordLength,
const byte *salt, int saltLength,
int numIterations, CipherKey *outKey) = 0;
// Create a new key with strong randomization.
virtual CipherKey randomKey(int length) =0;
// Randomize the output. Pseudo randomization is allowed, so this may not be
// used for keys or other critical values.
virtual bool pseudoRandom(byte *out, int byteLen) =0;
};
} // namespace encfs
#endif // ENCFS_PBKDF_H