A place for thoughts, rants and progress reports
I was reading Linux’s keys.txt and realised that this provided a place to store process or even thread local data that didn’t depend on libc.
Detecting if the current process has been forked is important for PRNGs (Psuedo random number generators). Normally fork detection has been done by checking getpid()
and/or the installation of an pthread_atfork
handler, but this can be fooled due to pid wrapping (see here).
I wrote up this example to show how you might accomplish pid detection on Linux utilising the kernel’s thread specific keyring.
Most guides out on the internet about how to generate a self-signed cert and long and complicated, but it can be done in a single command:
openssl req -newkey 2048 -keyout cert.key -nodes -x509 -out cert.pem -batch
The meaning of the options:
-newkey 2048
: generate a new 2048 bit RSA private key instead of using an existing one-keyout cert.key
: save the rsa key in cert.key
-nodes
: don’t encrypt the private key-x509
: generate an actual cert (rather than a certificate request)-out cert.epm
: save the certificate as cert.pem
-batch
: don’t ask for the various SSL cert metadata fieldsSo today I finally got around to creating a GPG Key.
If you know me, please sign C91A9911192C187A
-----BEGIN PGP PUBLIC KEY BLOCK----- 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 E4JgDu0f4b6iaBg/Eeoow75iDPt235/2 =TuFA -----END PGP PUBLIC KEY BLOCK-----
I need a Lua library to communicate with rabbitmq, so after looking around and only finding luajit ffi based ones, and an nginx specific STOMP driver, I decided to create my own.
rabbitmq-c seems to be the most popular C library, so I spent about half the day getting some bindings working. But as I made slow progress, I realised that the most functions (e.g. amqp_login) provided by rabbitmq-c were blocking, with no async variants were available. This was a no-go, as I need to use talk to rabbit from within another server process that cannot be held up.
Instead of letting it go to a complete waste, I figured I might as well open source the attempt. At least it might be a starting point for the next person to come along.