From 6270d31133b8894bca1be998ff65b2a5fa502b31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 1 Oct 2014 12:27:47 -0400 Subject: [PATCH] srtp: generate SDES key using real random numbers Regression from commit bebe12d46c3754f1897f9f8bf2ddc298f45df8cd Refs #56557 Change-Id: Iafb7d2a92e5c80d55bcae9a44d276eae5ecef44f --- .../src/audio/audiortp/audio_srtp_session.cpp | 36 +++++++------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/daemon/src/audio/audiortp/audio_srtp_session.cpp b/daemon/src/audio/audiortp/audio_srtp_session.cpp index d0d067a946..193898e4a1 100644 --- a/daemon/src/audio/audiortp/audio_srtp_session.cpp +++ b/daemon/src/audio/audiortp/audio_srtp_session.cpp @@ -71,42 +71,30 @@ decodeBase64(unsigned char *input, int length) // Fills the array dest with length random bytes static void -bufferFillMasterKey(std::vector<uint8>& dest) +bufferFillMasterKey(std::vector<uint8_t>& dest) { DEBUG("Init local master key"); - - // Prepare pseudo random generationusing Mersenne Twister - std::mt19937 eng; - std::uniform_int_distribution<uint8_t> dist(0, 255); - - // Allocate memory for key - std::vector<unsigned char> random_key(dest.size()); + std::uniform_int_distribution<uint8_t> rand_byte(0, 255); // Fill the key - for (size_t i = 0; i < dest.size(); i++) - random_key[i] = dist(eng); - - std::copy(random_key.begin(), random_key.end(), dest.begin()); + { + std::random_device rdev; + std::generate(dest.begin(), dest.end(), std::bind(rand_byte, std::ref(rdev))); + } } // Fills the array dest with length random bytes static void -bufferFillMasterSalt(std::vector<uint8>& dest) +bufferFillMasterSalt(std::vector<uint8_t>& dest) { DEBUG("Init local master salt"); - - // Prepare pseudo random generation using Mersenne Twister - std::mt19937 eng; - std::uniform_int_distribution<uint8_t> dist(0, 255); - - // Allocate memory for key - std::vector<unsigned char> random_key(dest.size()); + std::uniform_int_distribution<uint8_t> rand_byte(0, 255); // Fill the key - for (size_t i = 0; i < dest.size(); i++) - random_key[i] = dist(eng); - - std::copy(random_key.begin(), random_key.end(), dest.begin()); + { + std::random_device rdev; + std::generate(dest.begin(), dest.end(), std::bind(rand_byte, std::ref(rdev))); + } } static const unsigned MAX_MASTER_KEY_LENGTH = 16; -- GitLab