Hi deepceleron,
Im the guy behind Piper. This is a cool alternative to standard entropy collection, however, Piper uses a hardware random number generator which collects entropy from thermal gradients. It does use a vanitygen binary, but that's because it supports setting your own address prefix and generating vanity keys. But, the source for vanitygen is included and you can easily compile it yourself and compare the MD5 of the binary to the one used by the Piper software.
RNGD runs on Piper and continuously feeds entropy into the /dev/random entropy pool from the hardware random number generator. Vanitygen is called with parameters to tell it to use /dev/random instead of the default which is /dev/urandom. Vanitygen is widely accepted in the bitcoin community as a good tool to generate safe keypairs and is used by hundreds of people everyday.
So my point is, that the key generation method used by Piper is perfectly safe and the same solution widely used in the bitcoin community everyday. I put a lot of thought into it and took community advice into account to make sure that the solution Piper uses is secure and safe. I store my own coins with an unmodified Piper and I feel totally safe doing so.
That said, this is a really cool alternative to the standard entropy collection methods and if some community members can do a code audit on it and give it a thumbs up, I'm happy to include it on the base Piper SD card image or even eventually integrate it with the Piper GUI software. I love giving people options, and this is a really cool one, especially for people who mistrust the OS random number generator.
Finally, I know you mentioned adding BIP0038 to this script. Here's a python implementation of BIP0038 which should get you quite a bit closer to that goal. I believe it could be added to your single file since it's only about 40 lines:
https://github.com/zimage/python-bitcoinlib/blob/e9506aba6d53ad5bf760d67815d711a1c55b2557/bitcoin/bip38.pyThat BIP0038 implementation has also been looked over by jgzarik in a pull request for the python-bitcoinlib and he doesn't seem to have any issues with it:
https://github.com/jgarzik/python-bitcoinlib/pull/5Thanks for making this really cool script. I love creative ways of generating entropy!