diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/crypto/CryptStateOCB2.cpp | 7 | ||||
-rw-r--r-- | src/crypto/CryptographicRandom.cpp | 2 | ||||
-rw-r--r-- | src/murmur/PBKDF2.cpp | 6 |
3 files changed, 7 insertions, 8 deletions
diff --git a/src/crypto/CryptStateOCB2.cpp b/src/crypto/CryptStateOCB2.cpp index 51253b0a5..fbd632963 100644 --- a/src/crypto/CryptStateOCB2.cpp +++ b/src/crypto/CryptStateOCB2.cpp @@ -25,6 +25,7 @@ #include "ByteSwap.h" #include "CryptStateOCB2.h" +#include "CryptographicRandom.h" #include <cstring> #include <openssl/rand.h> @@ -42,9 +43,9 @@ bool CryptStateOCB2::isValid() const { } void CryptStateOCB2::genKey() { - RAND_bytes(raw_key, AES_KEY_SIZE_BYTES); - RAND_bytes(encrypt_iv, AES_BLOCK_SIZE); - RAND_bytes(decrypt_iv, AES_BLOCK_SIZE); + CryptographicRandom::fillBuffer(raw_key, AES_KEY_SIZE_BYTES); + CryptographicRandom::fillBuffer(encrypt_iv, AES_BLOCK_SIZE); + CryptographicRandom::fillBuffer(decrypt_iv, AES_BLOCK_SIZE); AES_set_encrypt_key(raw_key, AES_KEY_SIZE_BITS, &encrypt_key); AES_set_decrypt_key(raw_key, AES_KEY_SIZE_BITS, &decrypt_key); bInit = true; diff --git a/src/crypto/CryptographicRandom.cpp b/src/crypto/CryptographicRandom.cpp index 0c2405d43..a162c765d 100644 --- a/src/crypto/CryptographicRandom.cpp +++ b/src/crypto/CryptographicRandom.cpp @@ -24,7 +24,7 @@ void CryptographicRandom::fillBuffer(void *buf, int numBytes) { // OpenSSL needs at least 32-bytes of high-entropy random data to seed its CSPRNG. // If OpenSSL cannot acquire enough random data to seed its CSPRNG at the time Mumble and Murmur // are running, there is not much we can do about it other than aborting the program. - if (RAND_bytes(reinterpret_cast< unsigned char * >(buf), static_cast< int >(numBytes)) != 1) { + if (RAND_bytes(reinterpret_cast< unsigned char * >(buf), numBytes) != 1) { qFatal("CryptographicRandom::fillBuffer(): internal error in OpenSSL's RAND_bytes or entropy pool not yet " "filled."); } diff --git a/src/murmur/PBKDF2.cpp b/src/murmur/PBKDF2.cpp index e1038b6b2..af41c0c7f 100644 --- a/src/murmur/PBKDF2.cpp +++ b/src/murmur/PBKDF2.cpp @@ -45,6 +45,7 @@ #endif #include "PBKDF2.h" +#include "crypto/CryptographicRandom.h" #include <QtCore/QElapsedTimer> #include <QtCore/QLatin1String> @@ -109,10 +110,7 @@ QString PBKDF2::getHash(const QString &hexSalt, const QString &password, int ite QString PBKDF2::getSalt() { QByteArray salt(SALT_LENGTH, 0); - if (RAND_bytes(reinterpret_cast< unsigned char * >(salt.data()), salt.size()) != 1) { - qFatal("PBKDF2: RAND_bytes for salt failed: %s", ERR_error_string(ERR_get_error(), nullptr)); - return QString(); - } + CryptographicRandom::fillBuffer(salt.data(), salt.size()); return QString::fromLatin1(salt.toHex()); } |