Lines Matching refs:pk
87 int evp_keymgmt_util_export(const EVP_PKEY *pk, int selection,
90 if (pk == NULL || export_cb == NULL)
92 return evp_keymgmt_export(pk->keymgmt, pk->keydata, selection,
96 void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt,
107 if (pk->keydata == NULL)
117 if (pk->keymgmt == keymgmt
118 || (pk->keymgmt->name_id == keymgmt->name_id
119 && pk->keymgmt->prov == keymgmt->prov))
120 return pk->keydata;
122 if (!CRYPTO_THREAD_read_lock(pk->lock))
129 if (pk->dirty_cnt == pk->dirty_cnt_copy) {
131 op = evp_keymgmt_util_find_operation_cache(pk, keymgmt, selection);
135 CRYPTO_THREAD_unlock(pk->lock);
139 CRYPTO_THREAD_unlock(pk->lock);
142 if (pk->keymgmt->export == NULL)
149 if (!ossl_assert(match_type(pk->keymgmt, keymgmt)))
167 if (!evp_keymgmt_util_export(pk, selection,
172 if (!CRYPTO_THREAD_write_lock(pk->lock)) {
177 op = evp_keymgmt_util_find_operation_cache(pk, keymgmt, selection);
181 CRYPTO_THREAD_unlock(pk->lock);
196 if (pk->dirty_cnt != pk->dirty_cnt_copy)
197 evp_keymgmt_util_clear_operation_cache(pk, 0);
200 if (!evp_keymgmt_util_cache_keydata(pk, keymgmt, import_data.keydata,
202 CRYPTO_THREAD_unlock(pk->lock);
208 pk->dirty_cnt_copy = pk->dirty_cnt;
210 CRYPTO_THREAD_unlock(pk->lock);
222 int evp_keymgmt_util_clear_operation_cache(EVP_PKEY *pk, int locking)
224 if (pk != NULL) {
225 if (locking && pk->lock != NULL && !CRYPTO_THREAD_write_lock(pk->lock))
227 sk_OP_CACHE_ELEM_pop_free(pk->operation_cache, op_cache_free);
228 pk->operation_cache = NULL;
229 if (locking && pk->lock != NULL)
230 CRYPTO_THREAD_unlock(pk->lock);
236 OP_CACHE_ELEM *evp_keymgmt_util_find_operation_cache(EVP_PKEY *pk,
240 int i, end = sk_OP_CACHE_ELEM_num(pk->operation_cache);
248 p = sk_OP_CACHE_ELEM_value(pk->operation_cache, i);
255 int evp_keymgmt_util_cache_keydata(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt,
261 if (pk->operation_cache == NULL) {
262 pk->operation_cache = sk_OP_CACHE_ELEM_new_null();
263 if (pk->operation_cache == NULL)
279 if (!sk_OP_CACHE_ELEM_push(pk->operation_cache, p)) {
288 void evp_keymgmt_util_cache_keyinfo(EVP_PKEY *pk)
295 if (pk->keydata != NULL) {
306 if (evp_keymgmt_get_params(pk->keymgmt, pk->keydata, params)) {
307 pk->cache.size = size;
308 pk->cache.bits = bits;
309 pk->cache.security_bits = security_bits;
328 int evp_keymgmt_util_has(EVP_PKEY *pk, int selection)
331 if (pk->keymgmt == NULL)
334 return evp_keymgmt_has(pk->keymgmt, pk->keydata, selection);