Skip to content

Commit

Permalink
chacha8: add a key generation variant that take a pointer and size
Browse files Browse the repository at this point in the history
  • Loading branch information
moneromooo-monero committed Aug 22, 2015
1 parent 776b4fc commit 98c76a3
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/crypto/chacha8.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,17 @@ namespace crypto {
chacha8(data, length, reinterpret_cast<const uint8_t*>(&key), reinterpret_cast<const uint8_t*>(&iv), cipher);
}

inline void generate_chacha8_key(std::string password, chacha8_key& key) {
inline void generate_chacha8_key(const void *data, size_t size, chacha8_key& key) {
static_assert(sizeof(chacha8_key) <= sizeof(hash), "Size of hash must be at least that of chacha8_key");
char pwd_hash[HASH_SIZE];
crypto::cn_slow_hash(password.data(), password.size(), pwd_hash);
crypto::cn_slow_hash(data, size, pwd_hash);
memcpy(&key, pwd_hash, sizeof(key));
memset(pwd_hash, 0, sizeof(pwd_hash));
}

inline void generate_chacha8_key(std::string password, chacha8_key& key) {
return generate_chacha8_key(password.data(), password.size(), key);
}
}

#endif

0 comments on commit 98c76a3

Please sign in to comment.