<div dir="ltr">Thanks for the responses everyone!<div><br></div><div>Reg. making a CSPRNG in JS: I don't have experience and wouldn't trust it. Using someone else's is even worse, I find other's often do things even worse (somehow). And seeding it would sort of have moved the problem rather than solving it. A PRNG shouldn't be able to generate entropy out of nothing and I don't really feel like doing the cryptanalysis (or trusting someone else's ;) (but it's probably a decent way to do it, I've seen a JS Fortuna for example)<br>

<br>Everyone else told me basically the same thing, but somehow it all made complete sense only after James' comment.</div><div><br></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<span style="font-family:arial,sans-serif;font-size:13px">It sounds like what you want is a way to generate randomness a user<br></span><span style="font-family:arial,sans-serif;font-size:13px">can trust, in a browser lacking crypto.getRandomValues.  That's hard<br>

</span><span style="font-family:arial,sans-serif;font-size:13px">to impossible - it's why crypto.getRandomValues was made.  I believe<br></span><span style="font-family:arial,sans-serif;font-size:13px">state of the art prior to crypto.gRV was using mouse movements and<br>

</span><span style="font-family:arial,sans-serif;font-size:13px">other server-unpredictable events.</span></blockquote><br></div><div>That's exactly it! I'm not 100% on the security of the wiggle-mouse based entropy, still seems a bit too sketchy to me. I'd also prefer not to annoy users any more than I have to. It's also just a lot of hassle. Do touchscreens provide the same entropy? What about a user with a <i>very</i> slow phone (maybe an update in the background)? Prefer avoiding dragons, even if they seem small enough to slay.</div>

<div><br></div><div>If I just hand the user data it's deferred computing, not clientside crypto. There's also the question of whether crypto.getRandomValues can be trusted. Where does the browser get it's entropy? Does the browser add flaws? HTML runs on a wide device landscape, PC's, Game Consoles, SmartTV's, e-readers, smartphones, etc. (in the future they'll support the current HTML5 or I may support them, now I doubt many would run my website properly) <br>

<br>As an added bonus I can more easily reach users that just don't care. If you get a stern warning to upgrade or suffer decreased security and ignore it, I'd like to say I don't have to care. The problem is that users are unknowing, so you can't expect them to respond to such a warning. Now I can rest easy knowing I gave them good randomness. The client-side randomness assurance couldn't be important to people running aged software.<br>

<br>So, thanks everyone, for checking my sanity. Wouldn't know what to do without a list like this.</div></div>