Lines Matching defs:softc

1616 /* retrieve the softc and instance number from a SPI crypto context */
1617 #define DPROV_SOFTC_FROM_CTX(ctx, softc, instance) { \
1618 (softc) = (dprov_state_t *)(ctx)->cc_provider; \
1619 (instance) = ddi_get_instance((softc)->ds_dip); \
1622 /* retrieve the softc and instance number from a taskq request */
1623 #define DPROV_SOFTC_FROM_REQ(req, softc, instance) { \
1624 (softc) = (req)->dr_softc; \
1625 (instance) = ddi_get_instance((softc)->ds_dip); \
1731 dprov_state_t *softc;
1738 softc = ddi_get_soft_state(statep, instance);
1739 *result = softc->ds_dip;
1753 dprov_state_t *softc;
1764 /* get new softc and initialize it */
1768 softc = ddi_get_soft_state(statep, instance);
1769 mutex_init(&softc->ds_lock, NULL, MUTEX_DRIVER, NULL);
1770 softc->ds_dip = dip;
1771 softc->ds_prov_handle = NULL;
1778 mutex_destroy(&softc->ds_lock);
1801 softc->ds_taskq = taskq_create(devname, 1, minclsyspri,
1805 softc->ds_sessions = kmem_zalloc(DPROV_MIN_SESSIONS *
1807 softc->ds_sessions_slots = DPROV_MIN_SESSIONS;
1808 softc->ds_sessions_count = 0;
1811 softc->ds_token_initialized = B_TRUE;
1813 (void) memset(softc->ds_label, ' ', CRYPTO_EXT_SIZE_LABEL);
1814 bcopy("Dummy Pseudo HW Provider", softc->ds_label, 24);
1816 bcopy("changeme", softc->ds_user_pin, 8);
1817 softc->ds_user_pin_len = 8;
1818 softc->ds_user_pin_set = B_TRUE;
1822 dprov_prov_info.pi_provider_handle = softc;
1832 &softc->ds_prov_handle)) != CRYPTO_SUCCESS) {
1835 taskq_destroy(softc->ds_taskq);
1836 kmem_free(softc->ds_sessions, softc->ds_sessions_slots *
1838 mutex_destroy(&softc->ds_lock);
1847 crypto_provider_notification(softc->ds_prov_handle,
1857 dprov_state_t *softc = ddi_get_soft_state(statep, instance);
1868 if (softc->ds_prov_handle != NULL)
1870 softc->ds_prov_handle)) != CRYPTO_SUCCESS) {
1878 taskq_destroy(softc->ds_taskq);
1880 for (i = 0; i < softc->ds_sessions_slots; i++) {
1881 if ((session = softc->ds_sessions[i]) == NULL)
1887 softc->ds_sessions_count--;
1891 kmem_free(softc->ds_sessions, softc->ds_sessions_slots *
1895 if (softc->ds_objects[i] != NULL)
1896 dprov_free_object(softc->ds_objects[i]);
1898 mutex_destroy(&softc->ds_lock);
1926 dprov_state_t *softc;
1930 /* extract softc and instance number from context */
1931 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
1947 error = dprov_digest_submit_req(DPROV_REQ_DIGEST_INIT, softc, req,
1961 dprov_state_t *softc;
1968 /* extract softc and instance number from context */
1969 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
1973 error = dprov_digest_submit_req(DPROV_REQ_DIGEST, softc, req,
1987 dprov_state_t *softc;
1991 /* extract softc and instance number from context */
1992 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
1997 error = dprov_digest_submit_req(DPROV_REQ_DIGEST_UPDATE, softc,
2010 dprov_state_t *softc;
2014 /* extract softc and instance number from context */
2015 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2019 error = dprov_digest_submit_req(DPROV_REQ_DIGEST_KEY, softc, req, NULL,
2033 dprov_state_t *softc;
2037 /* extract softc and instance number from context */
2038 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2042 error = dprov_digest_submit_req(DPROV_REQ_DIGEST_FINAL, softc, req,
2059 dprov_state_t *softc = (dprov_state_t *)provider;
2066 instance = ddi_get_instance(softc->ds_dip);
2083 error = dprov_digest_submit_req(DPROV_REQ_DIGEST_ATOMIC, softc, req,
2122 dprov_state_t *softc;
2126 /* extract softc and instance number from context */
2127 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2141 error = dprov_mac_submit_req(DPROV_REQ_MAC_INIT, softc, req,
2155 dprov_state_t *softc;
2159 /* extract softc and instance number from context */
2160 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2164 error = dprov_mac_submit_req(DPROV_REQ_MAC, softc, req,
2178 dprov_state_t *softc;
2182 /* extract softc and instance number from context */
2183 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2187 error = dprov_mac_submit_req(DPROV_REQ_MAC_UPDATE, softc,
2200 dprov_state_t *softc;
2204 /* extract softc and instance number from context */
2205 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2209 error = dprov_mac_submit_req(DPROV_REQ_MAC_FINAL, softc, req,
2225 dprov_state_t *softc = (dprov_state_t *)provider;
2229 instance = ddi_get_instance(softc->ds_dip);
2243 error = dprov_mac_submit_req(DPROV_REQ_MAC_ATOMIC, softc, req,
2259 dprov_state_t *softc = (dprov_state_t *)provider;
2263 instance = ddi_get_instance(softc->ds_dip);
2278 error = dprov_mac_submit_req(DPROV_REQ_MAC_VERIFY_ATOMIC, softc, req,
2342 dprov_state_t *softc;
2346 /* extract softc and instance number from context */
2347 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2359 error = dprov_cipher_submit_req(DPROV_REQ_ENCRYPT_INIT, softc,
2374 dprov_state_t *softc;
2378 /* extract softc and instance number from context */
2379 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2383 error = dprov_cipher_submit_req(DPROV_REQ_ENCRYPT, softc,
2398 dprov_state_t *softc;
2402 /* extract softc and instance number from context */
2403 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2408 error = dprov_cipher_submit_req(DPROV_REQ_ENCRYPT_UPDATE, softc,
2423 dprov_state_t *softc;
2427 /* extract softc and instance number from context */
2428 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2433 error = dprov_cipher_submit_req(DPROV_REQ_ENCRYPT_FINAL, softc,
2449 dprov_state_t *softc = (dprov_state_t *)provider;
2453 instance = ddi_get_instance(softc->ds_dip);
2466 error = dprov_cipher_submit_req(DPROV_REQ_ENCRYPT_ATOMIC, softc,
2483 dprov_state_t *softc;
2487 /* extract softc and instance number from context */
2488 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2500 error = dprov_cipher_submit_req(DPROV_REQ_DECRYPT_INIT, softc,
2516 dprov_state_t *softc;
2520 /* extract softc and instance number from context */
2521 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2525 error = dprov_cipher_submit_req(DPROV_REQ_DECRYPT, softc,
2540 dprov_state_t *softc;
2544 /* extract softc and instance number from context */
2545 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2550 error = dprov_cipher_submit_req(DPROV_REQ_DECRYPT_UPDATE, softc,
2565 dprov_state_t *softc;
2569 /* extract softc and instance number from context */
2570 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2575 error = dprov_cipher_submit_req(DPROV_REQ_DECRYPT_FINAL, softc,
2591 dprov_state_t *softc = (dprov_state_t *)provider;
2595 instance = ddi_get_instance(softc->ds_dip);
2608 error = dprov_cipher_submit_req(DPROV_REQ_DECRYPT_ATOMIC, softc,
2656 dprov_state_t *softc;
2660 /* extract softc and instance number from context */
2661 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2675 error = dprov_sign_submit_req(DPROV_REQ_SIGN_INIT, softc, req,
2689 dprov_state_t *softc;
2693 /* extract softc and instance number from context */
2694 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2698 error = dprov_sign_submit_req(DPROV_REQ_SIGN, softc, req,
2712 dprov_state_t *softc;
2716 /* extract softc and instance number from context */
2717 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2721 error = dprov_sign_submit_req(DPROV_REQ_SIGN_UPDATE, softc, req,
2735 dprov_state_t *softc;
2739 /* extract softc and instance number from context */
2740 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2744 error = dprov_sign_submit_req(DPROV_REQ_SIGN_FINAL, softc, req,
2760 dprov_state_t *softc = (dprov_state_t *)provider;
2764 instance = ddi_get_instance(softc->ds_dip);
2778 error = dprov_sign_submit_req(DPROV_REQ_SIGN_ATOMIC, softc, req,
2793 dprov_state_t *softc;
2797 /* extract softc and instance number from context */
2798 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2806 error = dprov_sign_submit_req(DPROV_REQ_SIGN_RECOVER_INIT, softc, req,
2820 dprov_state_t *softc;
2824 /* extract softc and instance number from context */
2825 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2829 error = dprov_sign_submit_req(DPROV_REQ_SIGN_RECOVER, softc, req,
2845 dprov_state_t *softc = (dprov_state_t *)provider;
2849 instance = ddi_get_instance(softc->ds_dip);
2857 error = dprov_sign_submit_req(DPROV_REQ_SIGN_RECOVER_ATOMIC, softc, req,
2876 dprov_state_t *softc;
2880 /* extract softc and instance number from context */
2881 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2894 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_INIT, softc, req,
2908 dprov_state_t *softc;
2912 /* extract softc and instance number from context */
2913 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2917 error = dprov_verify_submit_req(DPROV_REQ_VERIFY, softc, req,
2931 dprov_state_t *softc;
2935 /* extract softc and instance number from context */
2936 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2941 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_UPDATE, softc, req,
2955 dprov_state_t *softc;
2959 /* extract softc and instance number from context */
2960 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
2964 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_FINAL, softc, req,
2980 dprov_state_t *softc = (dprov_state_t *)provider;
2984 instance = ddi_get_instance(softc->ds_dip);
2999 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_ATOMIC, softc, req,
3014 dprov_state_t *softc;
3018 /* extract softc and instance number from context */
3019 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3027 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_RECOVER_INIT, softc,
3041 dprov_state_t *softc;
3045 /* extract softc and instance number from context */
3046 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3051 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_RECOVER, softc, req,
3067 dprov_state_t *softc = (dprov_state_t *)provider;
3071 instance = ddi_get_instance(softc->ds_dip);
3079 error = dprov_verify_submit_req(DPROV_REQ_VERIFY_RECOVER_ATOMIC, softc,
3098 dprov_state_t *softc;
3102 /* extract softc and instance number from context */
3103 DPROV_SOFTC_FROM_CTX(digest_ctx, softc, instance);
3112 softc, req, digest_ctx, encrypt_ctx, plaintext, ciphertext);
3126 dprov_state_t *softc;
3130 /* extract softc and instance number from context */
3131 DPROV_SOFTC_FROM_CTX(decrypt_ctx, softc, instance);
3140 softc, req, digest_ctx, decrypt_ctx, plaintext, ciphertext);
3154 dprov_state_t *softc;
3158 /* extract softc and instance number from context */
3159 DPROV_SOFTC_FROM_CTX(sign_ctx, softc, instance);
3168 softc, req, sign_ctx, encrypt_ctx, plaintext, ciphertext);
3182 dprov_state_t *softc;
3186 /* extract softc and instance number from context */
3187 DPROV_SOFTC_FROM_CTX(decrypt_ctx, softc, instance);
3196 softc, req, verify_ctx, decrypt_ctx, plaintext, ciphertext);
3216 dprov_state_t *softc;
3220 /* extract softc and instance number from context */
3221 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3244 softc, req, ctx, 0, encrypt_mech, encrypt_key, mac_mech, mac_key,
3258 dprov_state_t *softc;
3262 /* extract softc and instance number from context */
3263 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3272 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3286 dprov_state_t *softc;
3290 /* extract softc and instance number from context */
3291 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3297 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3312 dprov_state_t *softc;
3316 /* extract softc and instance number from context */
3317 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3323 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3343 dprov_state_t *softc = (dprov_state_t *)provider;
3347 instance = ddi_get_instance(softc->ds_dip);
3370 softc, req, NULL, session_id, encrypt_mech, encrypt_key, mac_mech,
3387 dprov_state_t *softc;
3391 /* extract softc and instance number from context */
3392 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3415 softc, req, ctx, 0, decrypt_mech, decrypt_key, mac_mech, mac_key,
3429 dprov_state_t *softc;
3433 /* extract softc and instance number from context */
3434 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3440 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3454 dprov_state_t *softc;
3458 /* extract softc and instance number from context */
3459 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3465 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3479 dprov_state_t *softc;
3483 /* extract softc and instance number from context */
3484 DPROV_SOFTC_FROM_CTX(ctx, softc, instance);
3490 softc, req, ctx, 0, NULL, NULL, NULL, NULL,
3510 dprov_state_t *softc = (dprov_state_t *)provider;
3514 instance = ddi_get_instance(softc->ds_dip);
3537 softc, req, NULL, session_id, decrypt_mech, decrypt_key, mac_mech,
3557 dprov_state_t *softc = (dprov_state_t *)provider;
3561 instance = ddi_get_instance(softc->ds_dip);
3584 softc, req, NULL, session_id, decrypt_mech, decrypt_key, mac_mech,
3603 dprov_state_t *softc = (dprov_state_t *)provider;
3607 instance = ddi_get_instance(softc->ds_dip);
3611 error = dprov_random_submit_req(DPROV_REQ_RANDOM_SEED, softc,
3625 dprov_state_t *softc = (dprov_state_t *)provider;
3629 instance = ddi_get_instance(softc->ds_dip);
3633 error = dprov_random_submit_req(DPROV_REQ_RANDOM_GENERATE, softc,
3651 dprov_state_t *softc = (dprov_state_t *)provider;
3655 instance = ddi_get_instance(softc->ds_dip);
3659 error = dprov_session_submit_req(DPROV_REQ_SESSION_OPEN, softc,
3673 dprov_state_t *softc = (dprov_state_t *)provider;
3677 instance = ddi_get_instance(softc->ds_dip);
3681 error = dprov_session_submit_req(DPROV_REQ_SESSION_CLOSE, softc,
3696 dprov_state_t *softc = (dprov_state_t *)provider;
3700 instance = ddi_get_instance(softc->ds_dip);
3704 error = dprov_session_submit_req(DPROV_REQ_SESSION_LOGIN, softc,
3718 dprov_state_t *softc = (dprov_state_t *)provider;
3722 instance = ddi_get_instance(softc->ds_dip);
3726 error = dprov_session_submit_req(DPROV_REQ_SESSION_LOGOUT, softc,
3746 dprov_state_t *softc = (dprov_state_t *)provider;
3750 instance = ddi_get_instance(softc->ds_dip);
3755 error = dprov_object_submit_req(DPROV_REQ_OBJECT_CREATE, softc, req,
3772 dprov_state_t *softc = (dprov_state_t *)provider;
3776 instance = ddi_get_instance(softc->ds_dip);
3781 error = dprov_object_submit_req(DPROV_REQ_OBJECT_COPY, softc, req,
3797 dprov_state_t *softc = (dprov_state_t *)provider;
3801 instance = ddi_get_instance(softc->ds_dip);
3806 error = dprov_object_submit_req(DPROV_REQ_OBJECT_DESTROY, softc, req,
3822 dprov_state_t *softc = (dprov_state_t *)provider;
3826 instance = ddi_get_instance(softc->ds_dip);
3831 error = dprov_object_submit_req(DPROV_REQ_OBJECT_GET_SIZE, softc, req,
3848 dprov_state_t *softc = (dprov_state_t *)provider;
3852 instance = ddi_get_instance(softc->ds_dip);
3858 softc, req, session_id, object, template, attribute_count,
3874 dprov_state_t *softc = (dprov_state_t *)provider;
3878 instance = ddi_get_instance(softc->ds_dip);
3884 softc, req, session_id, object, template, attribute_count,
3900 dprov_state_t *softc = (dprov_state_t *)provider;
3904 instance = ddi_get_instance(softc->ds_dip);
3909 error = dprov_object_submit_req(DPROV_REQ_OBJECT_FIND_INIT, softc, req,
3925 dprov_state_t *softc = (dprov_state_t *)provider;
3929 instance = ddi_get_instance(softc->ds_dip);
3934 error = dprov_object_submit_req(DPROV_REQ_OBJECT_FIND, softc, req,
3950 dprov_state_t *softc = (dprov_state_t *)provider;
3954 instance = ddi_get_instance(softc->ds_dip);
3959 error = dprov_object_submit_req(DPROV_REQ_OBJECT_FIND_FINAL, softc, req,
3980 dprov_state_t *softc = (dprov_state_t *)provider;
3984 instance = ddi_get_instance(softc->ds_dip);
3989 error = dprov_key_submit_req(DPROV_REQ_KEY_GENERATE, softc, req,
4010 dprov_state_t *softc = (dprov_state_t *)provider;
4014 instance = ddi_get_instance(softc->ds_dip);
4019 error = dprov_key_submit_req(DPROV_REQ_KEY_GENERATE_PAIR, softc, req,
4038 dprov_state_t *softc = (dprov_state_t *)provider;
4042 instance = ddi_get_instance(softc->ds_dip);
4047 error = dprov_key_submit_req(DPROV_REQ_KEY_WRAP, softc, req,
4066 dprov_state_t *softc = (dprov_state_t *)provider;
4070 instance = ddi_get_instance(softc->ds_dip);
4075 error = dprov_key_submit_req(DPROV_REQ_KEY_UNWRAP, softc, req,
4093 dprov_state_t *softc = (dprov_state_t *)provider;
4097 instance = ddi_get_instance(softc->ds_dip);
4102 error = dprov_key_submit_req(DPROV_REQ_KEY_DERIVE, softc, req,
4121 dprov_state_t *softc = (dprov_state_t *)provider;
4125 instance = ddi_get_instance(softc->ds_dip);
4129 error = dprov_mgmt_submit_req(DPROV_REQ_MGMT_EXTINFO, softc, req,
4143 dprov_state_t *softc = (dprov_state_t *)provider;
4147 instance = ddi_get_instance(softc->ds_dip);
4151 error = dprov_mgmt_submit_req(DPROV_REQ_MGMT_INITTOKEN, softc, req,
4166 dprov_state_t *softc = (dprov_state_t *)provider;
4170 instance = ddi_get_instance(softc->ds_dip);
4174 error = dprov_mgmt_submit_req(DPROV_REQ_MGMT_INITPIN, softc, req,
4189 dprov_state_t *softc = (dprov_state_t *)provider;
4193 instance = ddi_get_instance(softc->ds_dip);
4197 error = dprov_mgmt_submit_req(DPROV_REQ_MGMT_SETPIN, softc, req,
4915 dprov_state_t *softc = (dprov_state_t *)provider;
4919 instance = ddi_get_instance(softc->ds_dip);
4925 softc, req, session_id, mechanism, template, attribute_count,
4949 dprov_state_t *softc = (dprov_state_t *)provider;
4953 instance = ddi_get_instance(softc->ds_dip);
4959 softc, req, session_id, mechanism, public_key_template,
4979 dprov_state_t *softc = (dprov_state_t *)provider;
4983 instance = ddi_get_instance(softc->ds_dip);
4988 error = dprov_key_submit_req(DPROV_REQ_NOSTORE_KEY_DERIVE, softc, req,
5004 dprov_alloc_req(dprov_req_type_t req_type, dprov_state_t *softc,
5013 taskq_req->dr_softc = softc;
5020 * Dispatch a dprov request on the taskq associated with a softc.
5025 dprov_taskq_dispatch(dprov_state_t *softc, dprov_req_t *taskq_req,
5028 if (taskq_dispatch(softc->ds_taskq, func, taskq_req,
5042 dprov_state_t *softc, crypto_req_handle_t req,
5048 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5057 return (dprov_taskq_dispatch(softc, taskq_req,
5067 dprov_state_t *softc, crypto_req_handle_t req,
5073 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5083 return (dprov_taskq_dispatch(softc, taskq_req,
5093 dprov_state_t *softc, crypto_req_handle_t req,
5100 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5110 return (dprov_taskq_dispatch(softc, taskq_req,
5120 dprov_state_t *softc, crypto_req_handle_t req,
5127 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5137 return (dprov_taskq_dispatch(softc, taskq_req,
5146 dprov_dual_submit_req(dprov_req_type_t req_type, dprov_state_t *softc,
5153 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5162 return (dprov_taskq_dispatch(softc, taskq_req,
5172 dprov_state_t *softc, crypto_req_handle_t req, crypto_ctx_t *ctx,
5180 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5193 return (dprov_taskq_dispatch(softc, taskq_req,
5203 dprov_state_t *softc, crypto_req_handle_t req,
5210 if ((taskq_req = dprov_alloc_req(req_type, softc, req, kmflag)) == NULL)
5220 return (dprov_taskq_dispatch(softc, taskq_req,
5230 dprov_state_t *softc, crypto_req_handle_t req, uchar_t *buf, size_t len,
5235 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5245 return (dprov_taskq_dispatch(softc, taskq_req,
5256 dprov_state_t *softc, crypto_req_handle_t req,
5262 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5272 return (dprov_taskq_dispatch(softc, taskq_req,
5282 dprov_state_t *softc, crypto_req_handle_t req,
5291 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5306 return (dprov_taskq_dispatch(softc, taskq_req,
5316 dprov_state_t *softc, crypto_req_handle_t req,
5329 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5351 return (dprov_taskq_dispatch(softc, taskq_req,
5361 dprov_state_t *softc, crypto_req_handle_t req,
5368 if ((taskq_req = dprov_alloc_req(req_type, softc, req,
5380 return (dprov_taskq_dispatch(softc, taskq_req,
5406 dprov_state_t *softc;
5413 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
5462 mutex_enter(&softc->ds_lock);
5463 error = dprov_key_value_secret(softc, ctx->cc_session,
5465 mutex_exit(&softc->ds_lock);
5522 dprov_state_t *softc;
5530 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
5542 mutex_enter(&softc->ds_lock);
5543 error = dprov_key_value_secret(softc, ctx->cc_session,
5545 mutex_exit(&softc->ds_lock);
5594 mutex_enter(&softc->ds_lock);
5595 error = dprov_key_value_secret(softc,
5598 mutex_exit(&softc->ds_lock);
5638 dprov_state_t *softc;
5646 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
5664 mutex_enter(&softc->ds_lock);
5666 if ((error = dprov_key_attr_asymmetric(softc,
5670 mutex_exit(&softc->ds_lock);
5675 if ((error = dprov_key_value_secret(softc,
5679 mutex_exit(&softc->ds_lock);
5684 mutex_exit(&softc->ds_lock);
5765 mutex_enter(&softc->ds_lock);
5768 if ((error = dprov_key_attr_asymmetric(softc,
5773 mutex_exit(&softc->ds_lock);
5778 if ((error = dprov_key_value_secret(softc,
5783 mutex_exit(&softc->ds_lock);
5788 mutex_exit(&softc->ds_lock);
5858 dprov_state_t *softc;
5866 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
5884 mutex_enter(&softc->ds_lock);
5887 if ((error = dprov_key_attr_asymmetric(softc,
5891 mutex_exit(&softc->ds_lock);
5896 if ((error = dprov_key_value_secret(softc,
5900 mutex_exit(&softc->ds_lock);
5905 mutex_exit(&softc->ds_lock);
5985 mutex_enter(&softc->ds_lock);
5988 if ((error = dprov_key_attr_asymmetric(softc,
5993 mutex_exit(&softc->ds_lock);
5998 if ((error = dprov_key_value_secret(softc,
6003 mutex_exit(&softc->ds_lock);
6008 mutex_exit(&softc->ds_lock);
6060 dprov_state_t *softc;
6067 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
6116 dprov_state_t *softc;
6124 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
6139 mutex_enter(&softc->ds_lock);
6142 if ((error = dprov_key_attr_asymmetric(softc,
6146 mutex_exit(&softc->ds_lock);
6151 if ((error = dprov_key_value_secret(softc,
6155 mutex_exit(&softc->ds_lock);
6160 mutex_exit(&softc->ds_lock);
6249 mutex_enter(&softc->ds_lock);
6252 if ((error = dprov_key_attr_asymmetric(softc,
6257 mutex_exit(&softc->ds_lock);
6262 if ((error = dprov_key_value_secret(softc,
6267 mutex_exit(&softc->ds_lock);
6272 mutex_exit(&softc->ds_lock);
6308 dprov_cipher_mac_key_pd(dprov_state_t *softc, crypto_session_id_t sid,
6316 mutex_enter(&softc->ds_lock);
6317 error = dprov_key_value_secret(softc, sid, DPROV_REQ_ENCRYPT_ATOMIC,
6320 mutex_exit(&softc->ds_lock);
6325 error = dprov_key_value_secret(softc, sid, DPROV_REQ_MAC_ATOMIC,
6327 mutex_exit(&softc->ds_lock);
6350 dprov_state_t *softc;
6366 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
6378 if ((error = dprov_cipher_mac_key_pd(softc, ctx->cc_session,
6577 if ((error = dprov_cipher_mac_key_pd(softc, session_id,
6701 if ((error = dprov_cipher_mac_key_pd(softc, session_id,
6741 dprov_state_t *softc;
6746 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
6749 mutex_enter(&softc->ds_lock);
6776 mutex_exit(&softc->ds_lock);
6788 dprov_state_t *softc;
6798 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
6802 mutex_enter(&softc->ds_lock);
6806 if ((session = softc->ds_sessions[session_id]) == NULL) {
6807 mutex_exit(&softc->ds_lock);
6817 if (softc->ds_token_initialized == B_FALSE) {
6823 for (i = 0; i < softc->ds_sessions_slots; i++)
6824 if (softc->ds_sessions[i] == NULL)
6827 if (i == softc->ds_sessions_slots) {
6830 2 * softc->ds_sessions_slots *
6836 bcopy(softc->ds_sessions, new_sessions,
6837 softc->ds_sessions_slots *
6839 kmem_free(softc->ds_sessions, softc->ds_sessions_slots *
6841 softc->ds_sessions = new_sessions;
6842 softc->ds_sessions_slots *= 2;
6846 softc->ds_sessions[i] = kmem_zalloc(
6848 if (softc->ds_sessions[i] == NULL) {
6852 softc->ds_sessions_count++;
6855 softc->ds_sessions[i]->ds_state = DPROV_SESSION_STATE_PUBLIC;
6865 softc->ds_sessions[session_id] = NULL;
6867 if (softc->ds_token_initialized == B_FALSE) {
6876 softc->ds_sessions_count--;
6906 if ((user_type == CRYPTO_SO) && !softc->ds_token_initialized ||
6907 (user_type == CRYPTO_USER) && !softc->ds_user_pin_set) {
6913 softc->ds_sessions[session_id]->ds_state ==
6916 softc->ds_sessions[session_id]->ds_state ==
6923 if (softc->ds_sessions[session_id]->ds_state !=
6931 softc->ds_sessions[session_id]->ds_state =
6941 if (softc->ds_sessions[session_id]->ds_state ==
6952 object = softc->ds_sessions[session_id]->ds_objects[i];
6957 softc->ds_sessions[session_id]->ds_objects[i] =
6963 softc->ds_sessions[session_id]->ds_state =
6970 mutex_exit(&softc->ds_lock);
7006 dprov_state_t *softc;
7018 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
7021 mutex_enter(&softc->ds_lock);
7024 if ((session = softc->ds_sessions[session_id]) == NULL) {
7025 mutex_exit(&softc->ds_lock);
7034 if ((error = dprov_create_object_from_template(softc, session,
7054 if ((error = dprov_create_object_from_template(softc, session,
7073 error = dprov_destroy_object(softc, session,
7242 if ((object = softc->ds_objects[to_idx]) == NULL)
7326 mutex_exit(&softc->ds_lock);
7403 dprov_state_t *softc;
7411 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
7414 mutex_enter(&softc->ds_lock);
7417 if ((session = softc->ds_sessions[session_id]) == NULL) {
7418 mutex_exit(&softc->ds_lock);
7539 error = dprov_create_object_from_template(softc, session,
7589 (void) dprov_destroy_object(softc, session, *object_id_ptr);
7681 error = dprov_create_object_from_template(softc, session,
7730 error = dprov_create_object_from_template(softc, session,
7781 (void) dprov_destroy_object(softc, session,
7784 (void) dprov_destroy_object(softc, session,
7810 if ((error = dprov_key_attr_asymmetric(softc,
7817 if ((error = dprov_key_value_secret(softc,
7946 if ((error = dprov_key_attr_asymmetric(softc,
7953 if ((error = dprov_key_value_secret(softc,
7995 error = dprov_create_object_from_template(softc, session,
8028 (void) dprov_destroy_object(softc, session, *object_id_ptr);
8155 error = dprov_key_value_secret(softc, session_id,
8183 error = dprov_create_object_from_template(softc, session,
8197 (void) dprov_destroy_object(softc, session,
8485 mutex_exit(&softc->ds_lock);
8496 dprov_state_t *softc;
8501 DPROV_SOFTC_FROM_REQ(taskq_req, softc, instance);
8504 mutex_enter(&softc->ds_lock);
8512 if (!softc->ds_token_initialized) {
8516 bcopy(softc->ds_label, ext_info->ei_label,
8543 if (softc->ds_user_pin_set)
8545 if (softc->ds_token_initialized)
8559 if (softc->ds_sessions_count > 0) {
8580 if (softc->ds_token_initialized &&
8581 (softc->ds_so_pin_len != pin_len ||
8582 strncmp(softc->ds_so_pin, pin, pin_len) != 0)) {
8589 bcopy(label, softc->ds_label, CRYPTO_EXT_SIZE_LABEL);
8592 bcopy(pin, softc->ds_so_pin, pin_len);
8593 softc->ds_so_pin_len = pin_len;
8594 softc->ds_token_initialized = B_TRUE;
8595 softc->ds_user_pin_set = B_FALSE;
8607 if (softc->ds_sessions[session_id] == NULL) {
8613 if (softc->ds_sessions[session_id]->ds_state !=
8632 bcopy(pin, softc->ds_user_pin, pin_len);
8633 softc->ds_user_pin_len = pin_len;
8634 softc->ds_user_pin_set = B_TRUE;
8648 if (softc->ds_sessions[session_id] == NULL) {
8667 if (!softc->ds_user_pin_set) {
8676 if (softc->ds_user_pin_len != old_pin_len ||
8677 strncmp(softc->ds_user_pin, old_pin, old_pin_len) != 0) {
8684 bcopy(new_pin, softc->ds_user_pin, new_pin_len);
8685 softc->ds_user_pin_len = new_pin_len;
8692 mutex_exit(&softc->ds_lock);
8818 dprov_key_value_secret(dprov_state_t *softc, crypto_session_id_t session_id,
8869 if (softc->ds_sessions[session_id] == NULL) {
8880 object = softc->ds_sessions[session_id]->
8930 dprov_key_attr_asymmetric(dprov_state_t *softc, crypto_session_id_t session_id,
8948 if (softc->ds_sessions[session_id] == NULL) {
8954 object = softc->ds_sessions[session_id]->
9110 dprov_create_object_from_template(dprov_state_t *softc,
9151 if (softc->ds_objects[i] == NULL)
9156 softc->ds_objects[i] = object;
9294 dprov_destroy_object(dprov_state_t *softc, dprov_session_t *session,
9309 softc->ds_objects[object->do_token_idx] = NULL;