Lines Matching refs:prov_desc

137 	kcf_provider_desc_t *prov_desc = NULL;
157 prov_desc = kcf_alloc_provider_desc(info);
158 KCF_PROV_REFHOLD(prov_desc);
160 prov_desc->pd_prov_type = info->pi_provider_type;
163 prov_desc->pd_prov_handle = info->pi_provider_handle;
175 bcopy(info->pi_provider_description, prov_desc->pd_description,
185 prov_desc->pd_ops_vector);
188 prov_desc->pd_ops_vector);
189 prov_desc->pd_flags = info->pi_flags;
193 prov_desc->pd_ops_vector);
197 prov_desc->pd_ops_vector);
202 if (prov_desc->pd_ops_vector->co_object_ops &&
203 prov_desc->pd_ops_vector->co_nostore_key_ops) {
218 prov_desc->pd_module_id = mcp->mod_id;
227 prov_desc->pd_instance =
235 prov_desc->pd_name = kmem_alloc(strlen(name) + 1, KM_SLEEP);
236 (void) strcpy(prov_desc->pd_name, name);
238 if ((prov_desc->pd_mctlp = kcf_get_modctl(info)) == NULL)
242 if ((ret = init_prov_mechs(info, prov_desc)) != CRYPTO_SUCCESS)
249 if ((ret = kcf_prov_tab_add_provider(prov_desc)) != CRYPTO_SUCCESS) {
250 undo_register_provider(prov_desc, B_FALSE);
261 if (prov_desc->pd_prov_type == CRYPTO_HW_PROVIDER)
262 prov_desc->pd_taskq = taskq_create("kcf_taskq",
267 prov_desc->pd_taskq = NULL;
270 if (prov_desc->pd_prov_type != CRYPTO_LOGICAL_PROVIDER) {
278 if (KCF_PROV_SESSION_OPS(prov_desc) != NULL) {
282 KCF_OP_SESSION_OPEN, &prov_desc->pd_sid, 0,
283 CRYPTO_USER, NULL, 0, prov_desc);
284 ret = kcf_submit_request(prov_desc, NULL, NULL, &params,
294 if (prov_desc->pd_flags &
299 if (KCF_PROV_PROVMGMT_OPS(prov_desc) == NULL)
305 0, NULL, 0, NULL, 0, NULL, &ext_info, prov_desc);
306 ret = kcf_submit_request(prov_desc, NULL, NULL,
311 if (prov_desc->pd_flags & CRYPTO_HASH_NO_UPDATE) {
312 prov_desc->pd_hash_limit =
315 if (prov_desc->pd_flags & CRYPTO_HMAC_NO_UPDATE) {
316 prov_desc->pd_hmac_limit =
322 if (prov_desc->pd_prov_type != CRYPTO_LOGICAL_PROVIDER) {
328 if (prov_desc->pd_prov_type == CRYPTO_SW_PROVIDER) {
330 prov_desc->pd_name, "provider_stats");
333 prov_desc->pd_name, prov_desc->pd_instance,
334 prov_desc->pd_prov_id, "provider_stats");
337 prov_desc->pd_kstat = kstat_create("kcf", 0, ks_name, "crypto",
341 if (prov_desc->pd_kstat != NULL) {
343 &prov_desc->pd_ks_data,
345 prov_desc->pd_kstat->ks_data = &prov_desc->pd_ks_data;
346 KCF_PROV_REFHOLD(prov_desc);
347 prov_desc->pd_kstat->ks_private = prov_desc;
348 prov_desc->pd_kstat->ks_update = kcf_prov_kstat_update;
349 kstat_install(prov_desc->pd_kstat);
353 if (prov_desc->pd_prov_type == CRYPTO_HW_PROVIDER)
354 process_logical_providers(info, prov_desc);
356 mutex_enter(&prov_desc->pd_lock);
357 prov_desc->pd_state = KCF_PROV_READY;
358 mutex_exit(&prov_desc->pd_lock);
359 kcf_do_notify(prov_desc, B_TRUE);
362 *handle = prov_desc->pd_kcf_prov_handle;
363 KCF_PROV_REFRELE(prov_desc);
367 undo_register_provider(prov_desc, B_TRUE);
370 KCF_PROV_REFRELE(prov_desc);
1038 kcf_do_notify(kcf_provider_desc_t *prov_desc, boolean_t is_added)
1043 ASSERT(prov_desc->pd_state > KCF_PROV_VERIFICATION_FAILED);
1050 if (prov_desc->pd_prov_type != CRYPTO_LOGICAL_PROVIDER) {
1051 ec.ec_provider_type = prov_desc->pd_prov_type;
1054 for (i = 0; i < prov_desc->pd_mech_list_count; i++) {
1056 if (is_mech_disabled(prov_desc,
1057 prov_desc->pd_mechanisms[i].cm_mech_name))
1061 prov_desc->pd_mechanisms[i].cm_mech_name,
1074 if (prov_desc->pd_prov_type == CRYPTO_LOGICAL_PROVIDER ||
1075 (prov_desc->pd_flags & KCF_LPROV_MEMBER) == 0) {
1077 CRYPTO_EVENT_PROVIDER_UNREGISTERED, prov_desc);