Lines Matching refs:cache
684 static unsigned long decoder_cache_entry_hash(const DECODER_CACHE_ENTRY *cache) in decoder_cache_entry_hash() argument
689 + (cache->propquery == NULL in decoder_cache_entry_hash()
690 ? 0 : ossl_lh_strcasehash(cache->propquery)); in decoder_cache_entry_hash()
692 + (cache->input_structure == NULL in decoder_cache_entry_hash()
693 ? 0 : ossl_lh_strcasehash(cache->input_structure)); in decoder_cache_entry_hash()
695 + (cache->input_type == NULL in decoder_cache_entry_hash()
696 ? 0 : ossl_lh_strcasehash(cache->input_type)); in decoder_cache_entry_hash()
698 + (cache->keytype == NULL in decoder_cache_entry_hash()
699 ? 0 : ossl_lh_strcasehash(cache->keytype)); in decoder_cache_entry_hash()
701 hash ^= cache->selection; in decoder_cache_entry_hash()
752 DECODER_CACHE *cache = OPENSSL_malloc(sizeof(*cache)); in ossl_decoder_cache_new() local
754 if (cache == NULL) in ossl_decoder_cache_new()
757 cache->lock = CRYPTO_THREAD_lock_new(); in ossl_decoder_cache_new()
758 if (cache->lock == NULL) { in ossl_decoder_cache_new()
759 OPENSSL_free(cache); in ossl_decoder_cache_new()
762 cache->hashtable = lh_DECODER_CACHE_ENTRY_new(decoder_cache_entry_hash, in ossl_decoder_cache_new()
764 if (cache->hashtable == NULL) { in ossl_decoder_cache_new()
765 CRYPTO_THREAD_lock_free(cache->lock); in ossl_decoder_cache_new()
766 OPENSSL_free(cache); in ossl_decoder_cache_new()
770 return cache; in ossl_decoder_cache_new()
775 DECODER_CACHE *cache = (DECODER_CACHE *)vcache; in ossl_decoder_cache_free() local
777 lh_DECODER_CACHE_ENTRY_doall(cache->hashtable, decoder_cache_entry_free); in ossl_decoder_cache_free()
778 lh_DECODER_CACHE_ENTRY_free(cache->hashtable); in ossl_decoder_cache_free()
779 CRYPTO_THREAD_lock_free(cache->lock); in ossl_decoder_cache_free()
780 OPENSSL_free(cache); in ossl_decoder_cache_free()
789 DECODER_CACHE *cache in ossl_decoder_cache_flush() local
792 if (cache == NULL) in ossl_decoder_cache_flush()
796 if (!CRYPTO_THREAD_write_lock(cache->lock)) { in ossl_decoder_cache_flush()
801 lh_DECODER_CACHE_ENTRY_doall(cache->hashtable, decoder_cache_entry_free); in ossl_decoder_cache_flush()
802 lh_DECODER_CACHE_ENTRY_flush(cache->hashtable); in ossl_decoder_cache_flush()
804 CRYPTO_THREAD_unlock(cache->lock); in ossl_decoder_cache_flush()
821 DECODER_CACHE *cache in OSSL_DECODER_CTX_new_for_pkey() local
826 if (cache == NULL) { in OSSL_DECODER_CTX_new_for_pkey()
846 if (!CRYPTO_THREAD_read_lock(cache->lock)) { in OSSL_DECODER_CTX_new_for_pkey()
852 res = lh_DECODER_CACHE_ENTRY_retrieve(cache->hashtable, &cacheent); in OSSL_DECODER_CTX_new_for_pkey()
860 CRYPTO_THREAD_unlock(cache->lock); in OSSL_DECODER_CTX_new_for_pkey()
921 if (!CRYPTO_THREAD_write_lock(cache->lock)) { in OSSL_DECODER_CTX_new_for_pkey()
926 res = lh_DECODER_CACHE_ENTRY_retrieve(cache->hashtable, &cacheent); in OSSL_DECODER_CTX_new_for_pkey()
928 (void)lh_DECODER_CACHE_ENTRY_insert(cache->hashtable, newcache); in OSSL_DECODER_CTX_new_for_pkey()
929 if (lh_DECODER_CACHE_ENTRY_error(cache->hashtable)) { in OSSL_DECODER_CTX_new_for_pkey()
931 CRYPTO_THREAD_unlock(cache->lock); in OSSL_DECODER_CTX_new_for_pkey()
948 CRYPTO_THREAD_unlock(cache->lock); in OSSL_DECODER_CTX_new_for_pkey()