diff options
Diffstat (limited to 'Swiften/StringCodecs/PBKDF2.cpp')
-rw-r--r-- | Swiften/StringCodecs/PBKDF2.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Swiften/StringCodecs/PBKDF2.cpp b/Swiften/StringCodecs/PBKDF2.cpp new file mode 100644 index 0000000..c09c10e --- /dev/null +++ b/Swiften/StringCodecs/PBKDF2.cpp @@ -0,0 +1,20 @@ +#include "Swiften/StringCodecs/PBKDF2.h" +#include "Swiften/StringCodecs/HMACSHA1.h" + +namespace Swift { + +ByteArray PBKDF2::encode(const ByteArray& password, const ByteArray& salt, int iterations) { + ByteArray u = HMACSHA1::getResult(password, salt + ByteArray("\0\0\0\1", 4)); + ByteArray result = u; + int i = 1; + while (i < iterations) { + u = HMACSHA1::getResult(password, u); + for (unsigned int j = 0; j < u.getSize(); ++j) { + result[j] ^= u[j]; + } + ++i; + } + return result; +} + +} |