[Development] websockets (was RE: Qt 5.3 Feature freeze is coming quite soon...)

Kurt Pattyn pattyn.kurt at gmail.com
Mon Feb 10 19:38:22 CET 2014


On 09 Feb 2014, at 23:57, Olivier Goffart <olivier at woboq.com> wrote:

> On Sunday 09 February 2014 22:40:22 Kurt Pattyn wrote:
> 
> I think you are making it more complicated than it  need to be.
> It turns out 32 bit entropy is enough because that's the size of your mask, so 
> just use qrand with a decent proper seed:
> 
> #if has_std_randrom_device
> return qsrand(std::random_device()());
you still need to check for the entropy and must be prepared to catch
std::exception
> #else
> static QElapsedTimer t;
> return qsrand(t.nsecsElapsed());
> #endif
Well, I can simplify to
   quint32 seed = 0;
   try {
       std::random_device seeder;
       if (seeder.entropy() >= 0.5) {
           seed = seeder();
           success = true;
       }
   } catch (const std::exception &) {
       //fall through
   }
   if (!success) {
      //need to do something here
      //it is known that the MingW version of GCC 4.8 has a bug
      //in std::random_device
      //in that case, we can fall back to the Windows CryptoAPI
      //or we can make our live easy and fall back to some low entropy
      //source (also for the cases where std::random_device fails)
      //using std::seek_seq can then partially obscure the low entropy
   }

> -- 
> Olivier 
> 
> Woboq - Qt services and support - http://woboq.com - http://code.woboq.org
> 
> 




More information about the Development mailing list