Check out my first novel, midnight's simulacra!

OpenSSL

From dankwiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Threads

  • The threads(3ssl) man page is pretty good.
  • Unless you're using OpenSSL 0.9.9, the CRYPTO_set_id_callback(3ssl) is pretty much broken on pthreads implementations which don't return an integer value from pthread_self(3). This is true for the FreeBSD native implementations (the LinuxThreads emulation package should work, but is broken in other, more grave, ways). On OpenSSL 0.9.9, CRYPTO_set_idptr_callback(3ssl) can be used for implementations which return a pointer or an aggregate.
    • libdank's OpenSSL layer handles this via a pthread_once_t which installs a class of thread-specific data. If the thread executing the callback has a NULL value for pthread_get_specific(), a static key is incremented and copied into the TSD. The increment, and copy of the result, forms a static mutex-protected critical section.

See also