Lines Matching refs:store
109 static void ossl_method_cache_flush_alg(OSSL_METHOD_STORE *store,
111 static void ossl_method_cache_flush(OSSL_METHOD_STORE *store, int nid);
227 OSSL_METHOD_STORE *store = arg; in alg_cleanup() local
235 if (store != NULL) in alg_cleanup()
236 ossl_sa_ALGORITHM_set(store->algs, idx, NULL); in alg_cleanup()
260 void ossl_method_store_free(OSSL_METHOD_STORE *store) in ossl_method_store_free() argument
262 if (store != NULL) { in ossl_method_store_free()
263 if (store->algs != NULL) in ossl_method_store_free()
264 ossl_sa_ALGORITHM_doall_arg(store->algs, &alg_cleanup, store); in ossl_method_store_free()
265 ossl_sa_ALGORITHM_free(store->algs); in ossl_method_store_free()
266 CRYPTO_THREAD_lock_free(store->lock); in ossl_method_store_free()
267 CRYPTO_THREAD_lock_free(store->biglock); in ossl_method_store_free()
268 OPENSSL_free(store); in ossl_method_store_free()
272 int ossl_method_lock_store(OSSL_METHOD_STORE *store) in ossl_method_lock_store() argument
274 return store != NULL ? CRYPTO_THREAD_write_lock(store->biglock) : 0; in ossl_method_lock_store()
277 int ossl_method_unlock_store(OSSL_METHOD_STORE *store) in ossl_method_unlock_store() argument
279 return store != NULL ? CRYPTO_THREAD_unlock(store->biglock) : 0; in ossl_method_unlock_store()
282 static ALGORITHM *ossl_method_store_retrieve(OSSL_METHOD_STORE *store, int nid) in ossl_method_store_retrieve() argument
284 return ossl_sa_ALGORITHM_get(store->algs, nid); in ossl_method_store_retrieve()
287 static int ossl_method_store_insert(OSSL_METHOD_STORE *store, ALGORITHM *alg) in ossl_method_store_insert() argument
289 return ossl_sa_ALGORITHM_set(store->algs, alg->nid, alg); in ossl_method_store_insert()
317 int ossl_method_store_add(OSSL_METHOD_STORE *store, const OSSL_PROVIDER *prov, in ossl_method_store_add() argument
327 if (nid <= 0 || method == NULL || store == NULL) in ossl_method_store_add()
350 if (!ossl_property_write_lock(store)) { in ossl_method_store_add()
366 ossl_method_cache_flush(store, nid); in ossl_method_store_add()
373 if ((impl->properties = ossl_prop_defn_get(store->ctx, properties)) == NULL) { in ossl_method_store_add()
374 impl->properties = ossl_parse_property(store->ctx, properties); in ossl_method_store_add()
377 if (!ossl_prop_defn_set(store->ctx, properties, &impl->properties)) { in ossl_method_store_add()
388 alg = ossl_method_store_retrieve(store, nid); in ossl_method_store_add()
395 if (!ossl_method_store_insert(store, alg)) in ossl_method_store_add()
419 ossl_property_unlock(store); in ossl_method_store_add()
425 ossl_property_unlock(store); in ossl_method_store_add()
431 int ossl_method_store_remove(OSSL_METHOD_STORE *store, int nid, in ossl_method_store_remove() argument
437 if (nid <= 0 || method == NULL || store == NULL) in ossl_method_store_remove()
440 if (!ossl_property_write_lock(store)) in ossl_method_store_remove()
442 ossl_method_cache_flush(store, nid); in ossl_method_store_remove()
443 alg = ossl_method_store_retrieve(store, nid); in ossl_method_store_remove()
445 ossl_property_unlock(store); in ossl_method_store_remove()
460 ossl_property_unlock(store); in ossl_method_store_remove()
464 ossl_property_unlock(store); in ossl_method_store_remove()
469 OSSL_METHOD_STORE *store; member
529 ossl_method_cache_flush_alg(data->store, alg); in alg_cleanup_by_provider()
532 int ossl_method_store_remove_all_provided(OSSL_METHOD_STORE *store, in ossl_method_store_remove_all_provided() argument
537 if (!ossl_property_write_lock(store)) in ossl_method_store_remove_all_provided()
540 data.store = store; in ossl_method_store_remove_all_provided()
541 ossl_sa_ALGORITHM_doall_arg(store->algs, &alg_cleanup_by_provider, &data); in ossl_method_store_remove_all_provided()
542 ossl_property_unlock(store); in ossl_method_store_remove_all_provided()
560 void ossl_method_store_do_all(OSSL_METHOD_STORE *store, in ossl_method_store_do_all() argument
569 if (store != NULL) { in ossl_method_store_do_all()
571 if (!ossl_property_read_lock(store)) in ossl_method_store_do_all()
575 ossl_sa_ALGORITHM_num(store->algs)); in ossl_method_store_do_all()
577 ossl_property_unlock(store); in ossl_method_store_do_all()
581 ossl_sa_ALGORITHM_doall_arg(store->algs, alg_copy, tmpalgs); in ossl_method_store_do_all()
582 ossl_property_unlock(store); in ossl_method_store_do_all()
617 int ossl_method_store_fetch(OSSL_METHOD_STORE *store, in ossl_method_store_fetch() argument
629 if (nid <= 0 || method == NULL || store == NULL) in ossl_method_store_fetch()
633 if (ossl_lib_ctx_is_default(store->ctx) in ossl_method_store_fetch()
639 if (!ossl_property_read_lock(store)) in ossl_method_store_fetch()
642 alg = ossl_method_store_retrieve(store, nid); in ossl_method_store_fetch()
644 ossl_property_unlock(store); in ossl_method_store_fetch()
653 p2 = pq = ossl_parse_query(store->ctx, prop_query, 0); in ossl_method_store_fetch()
659 plp = ossl_ctx_global_properties(store->ctx, 0); in ossl_method_store_fetch()
731 ossl_property_unlock(store); in ossl_method_store_fetch()
736 static void ossl_method_cache_flush_alg(OSSL_METHOD_STORE *store, in ossl_method_cache_flush_alg() argument
739 store->cache_nelem -= lh_QUERY_num_items(alg->cache); in ossl_method_cache_flush_alg()
743 static void ossl_method_cache_flush(OSSL_METHOD_STORE *store, int nid) in ossl_method_cache_flush() argument
745 ALGORITHM *alg = ossl_method_store_retrieve(store, nid); in ossl_method_cache_flush()
748 ossl_method_cache_flush_alg(store, alg); in ossl_method_cache_flush()
751 int ossl_method_store_cache_flush_all(OSSL_METHOD_STORE *store) in ossl_method_store_cache_flush_all() argument
753 if (!ossl_property_write_lock(store)) in ossl_method_store_cache_flush_all()
755 ossl_sa_ALGORITHM_doall(store->algs, &impl_cache_flush_alg); in ossl_method_store_cache_flush_all()
756 store->cache_nelem = 0; in ossl_method_store_cache_flush_all()
757 ossl_property_unlock(store); in ossl_method_store_cache_flush_all()
815 static void ossl_method_cache_flush_some(OSSL_METHOD_STORE *store) in ossl_method_cache_flush_some() argument
827 store->cache_need_flush = 0; in ossl_method_cache_flush_some()
828 ossl_sa_ALGORITHM_doall_arg(store->algs, &impl_cache_flush_one_alg, &state); in ossl_method_cache_flush_some()
829 store->cache_nelem = state.nelem; in ossl_method_cache_flush_some()
835 int ossl_method_store_cache_get(OSSL_METHOD_STORE *store, OSSL_PROVIDER *prov, in ossl_method_store_cache_get() argument
842 if (nid <= 0 || store == NULL || prop_query == NULL) in ossl_method_store_cache_get()
845 if (!ossl_property_read_lock(store)) in ossl_method_store_cache_get()
847 alg = ossl_method_store_retrieve(store, nid); in ossl_method_store_cache_get()
861 ossl_property_unlock(store); in ossl_method_store_cache_get()
865 int ossl_method_store_cache_set(OSSL_METHOD_STORE *store, OSSL_PROVIDER *prov, in ossl_method_store_cache_set() argument
875 if (nid <= 0 || store == NULL || prop_query == NULL) in ossl_method_store_cache_set()
881 if (!ossl_property_write_lock(store)) in ossl_method_store_cache_set()
883 if (store->cache_need_flush) in ossl_method_store_cache_set()
884 ossl_method_cache_flush_some(store); in ossl_method_store_cache_set()
885 alg = ossl_method_store_retrieve(store, nid); in ossl_method_store_cache_set()
894 store->cache_nelem--; in ossl_method_store_cache_set()
913 if (++store->cache_nelem >= IMPL_CACHE_FLUSH_THRESHOLD) in ossl_method_store_cache_set()
914 store->cache_need_flush = 1; in ossl_method_store_cache_set()
923 ossl_property_unlock(store); in ossl_method_store_cache_set()