Indeed,
I am trying to install Neug (True Random Number Generator) and Gnuk in a much less complicate system and there always something broken ...
In my case, Regards to secp256k1 reminds me ...
http://gnupg.10057.n7.nabble.com/Adding-the-secp256k1-curve-for-ECDSA-td34670.html
https://github.com/ggkitsas/gnuk/blob/master/src/ec_p256k1.c
Interesting. Using an isolated agent (such as gpg-agent) for Bitcoin signing would be a generally excellent idea, of course.
From your first link:
Right. Though I make moderate use of some “pure Python” Bitcoin stuff, in the back of my mind, I always have the same worry. IMO, crypto algorithms should be done reasonably “close to the metal”. Does the Python interpreter have any behavior which opens side channels? And in a related matter, don’t get me started on all the advice to “download bitaddress.org and burn it into a CD”, or the like. Forget algorithm implementation side channels: In Javascriptland, whence comes its randomness? I peeked, and it’s not a pretty sight!
I do want to get Core’s secp256k1 running on all my systems. Despite being plastered with warnings, “work in progress... research... Use at your own risk,” I trust it more (or distrust it less) than the vast heaps of junk out there. I definitely trust it more than OpenSSL. It was designed specifically for safety (as well as performance), “structured to facilitate review and analysis”, and made with an explicit design goal, “‘Be difficult to use insecurely.’” I know the difference between a programmer and a cryptographer; and I am a programmer. secp256k1 is exactly the kind of library I want. I don’t want any coins lost to accident or malice!
There is also the matter of programming sanity. Using OpenSSL, I don’t even know which context objects (if any) can be safely reused, and/or shared between threads. The manpages do not mention such trifling concerns. Core’s secp256k1 gives explicit instructions about this in the reasonably concise, copiously commented header which currently seems to serve as its documentation. For my little “toy”, I am only generating keys; so I can initialize a context once, then reuse it a few billion times without reinitialization.
Core secp256k1’s README says, “Intended to be portable to any system with a C89 compiler and uint64_t support.” Excellent! I’ve poked around in the code; and I think the Autohell build requirement could be excised with relative ease. But for the same aforestated reason, this is just not something I want to mess with. (libbase58 is a different matter, plus a few orders of magnitude smaller and simpler; I should poke at it later.)
as EVE used to say .... you have no idea what is possile ....
Hela Destroys Thor's Hammer
https://www.youtube.com/watch?v=cszhXmN_uGY