Согласно FAQ , подпрограммы OpenSSL являются поточно-ориентированными. Я посмотрел на источник этой функции, и она действительно выглядит поточно-ориентированной. Конечно, это предполагает, что вы не передаете одни и те же буферы ввода / вывода в функцию в разных потоках.
Например, вы можете посмотреть в исходном коде OpenSSL. Существует файл с именем bftest.c, расположенный в openssl / crypto / bf /, в котором есть тестовые вызовы функции.
Редактировать Подумав немного об этом, вероятно, все же разумно использовать функциональность CRYPTO_set_locking_callback для многопоточной блокировки. Алгоритм Blowfish, о котором говорилось в первоначальном вопросе, в настоящее время (в используемой мной версии OpenSSL) не использует эти блокировки, но это не гарантирует, что по какой-то причине он не будет в будущем. Кроме того, это избавит от боли в будущем, если вы в конечном итоге будете использовать функциональность (например, RAND_bytes), для которой нужны эти блокировки.