<div dir="ltr">Hi all,<div><br></div><div>I'm trying to migrate some application code from OpenSSL 1.0.1e to 1.1.0g. I keep seeing that the locking and threading callbacks I had used earlier (with CRYPTO_set_locking_callback and CRYPTO_set_id_callback respectively) now show up as "unused" during compilation.</div><div><br></div><div>I checked <a href="https://www.openssl.org/blog/blog/2017/02/21/threads/">https://www.openssl.org/blog/blog/2017/02/21/threads/</a> and it seems like OpenSSL is trying to ditch callbacks and use more native facilities. In 1.1.0g's crypto.h, CRYPTO_set_locking_callback is defined as a no-op, with the following comment:</div><div><br></div><div><div>/*</div><div> * The old locking functions have been removed completely without compatibility</div><div> * macros. This is because the old functions either could not properly report</div><div> * errors, or the returned error values were not clearly documented.</div><div> * Replacing the locking functions with with no-ops would cause race condition</div><div> * issues in the affected applications. It is far better for them to fail at</div><div> * compile time.</div><div> * On the other hand, the locking callbacks are no longer used.  Consequently,</div><div> * the callback management functions can be safely replaced with no-op macros.</div><div> */</div></div><div><br></div><div>Does this mean I can safely remove all usages of the above functions from my application code? I'd appreciate if someone could explain the above comment in a little more detail or confirm what I'm saying. Or has anyone else been in the same situation?</div><div><br></div><div>Thanks,</div><div>Pratyush</div></div>