The providers are loaded per library context. If NULL is used as the libctx parameter of the OSSL_PROVIDER_load() function the default library context is used. There is one implicit global default library context per process. However please note that you can temporarily override per thread what the NULL parameter means by using the OSSL_LIB_CTX_set0_default() function. Tomas Mraz, OpenSSL On Thu, 2023-11-09 at 13:13 +0530, Ishani wrote: > Hi All, > > Hope you all are having a great day 🙂! I have a question > regarding loading providers in multi- threaded environment. > > I would like to ask in what way providers to be loaded, if it is to > be loaded once per thread or once per process. These details will > help us better understand provider loading and to resolve some issues > we are facing in our product. > > Thanks, > Ishani -- Tomáš Mráz, OpenSSL