Lines Matching defs:dck

534 dsl_crypto_key_free(dsl_crypto_key_t *dck)
536 ASSERT(zfs_refcount_count(&dck->dck_holds) == 0);
539 zio_crypt_key_destroy(&dck->dck_key);
542 zfs_refcount_destroy(&dck->dck_holds);
543 if (dck->dck_wkey)
544 dsl_wrapping_key_rele(dck->dck_wkey, dck);
547 kmem_free(dck, sizeof (dsl_crypto_key_t));
551 dsl_crypto_key_rele(dsl_crypto_key_t *dck, const void *tag)
553 if (zfs_refcount_remove(&dck->dck_holds, tag) == 0)
554 dsl_crypto_key_free(dck);
567 dsl_crypto_key_t *dck;
570 dck = kmem_zalloc(sizeof (dsl_crypto_key_t), KM_SLEEP);
616 raw_keydata, raw_hmac_keydata, iv, mac, &dck->dck_key);
623 zfs_refcount_create(&dck->dck_holds);
624 dsl_wrapping_key_hold(wkey, dck);
625 dck->dck_wkey = wkey;
626 dck->dck_obj = dckobj;
627 zfs_refcount_add(&dck->dck_holds, tag);
629 *dck_out = dck;
633 if (dck != NULL) {
634 memset(dck, 0, sizeof (dsl_crypto_key_t));
635 kmem_free(dck, sizeof (dsl_crypto_key_t));
732 spa_keystore_dsl_key_rele(spa_t *spa, dsl_crypto_key_t *dck, const void *tag)
736 if (zfs_refcount_remove(&dck->dck_holds, tag) == 0) {
737 avl_remove(&spa->spa_keystore.sk_dsl_keys, dck);
738 dsl_crypto_key_free(dck);
776 dsl_crypto_key_t *dck = NULL;
819 dd->dd_crypto_obj, FTAG, &dck);
863 dsl_crypto_key_rele(dck, FTAG);
873 if (dck != NULL)
874 dsl_crypto_key_rele(dck, FTAG);
1232 dsl_crypto_key_sync(dsl_crypto_key_t *dck, dmu_tx_t *tx)
1234 zio_crypt_key_t *key = &dck->dck_key;
1235 dsl_wrapping_key_t *wkey = dck->dck_wkey;
1245 VERIFY0(zio_crypt_key_wrap(&dck->dck_wkey->wk_key, key, iv, mac,
1249 dsl_crypto_key_sync_impl(tx->tx_pool->dp_meta_objset, dck->dck_obj,
1450 dsl_crypto_key_t *dck = NULL;
1478 * If we don't have a wrapping key just update the dck to reflect the
1479 * new encryption root. Otherwise rewrap the entire dck and re-sync it
1490 FTAG, &dck));
1491 dsl_wrapping_key_hold(wkey, dck);
1492 dsl_wrapping_key_rele(dck->dck_wkey, dck);
1493 dck->dck_wkey = wkey;
1494 dsl_crypto_key_sync(dck, tx);
1495 spa_keystore_dsl_key_rele(dp->dp_spa, dck, FTAG);
1515 * is because the clone and its origin share the same dck, which has
1918 * dck into dd. Zapify the dd so we can do that.
2570 dsl_crypto_key_t dck;
2579 dck.dck_obj = zap_create(tx->tx_pool->dp_meta_objset,
2583 dck.dck_wkey = wkey;
2584 VERIFY0(zio_crypt_key_init(crypt, &dck.dck_key));
2586 dsl_crypto_key_sync(&dck, tx);
2587 VERIFY0(zap_update(tx->tx_pool->dp_meta_objset, dck.dck_obj,
2589 VERIFY0(zap_update(tx->tx_pool->dp_meta_objset, dck.dck_obj,
2592 zio_crypt_key_destroy(&dck.dck_key);
2593 memset(&dck.dck_key, 0, sizeof (zio_crypt_key_t));
2595 return (dck.dck_obj);
2681 dsl_crypto_key_t *dck = NULL;
2684 ret = spa_keystore_lookup_key(spa, dsobj, FTAG, &dck);
2688 ret = zio_crypt_key_get_salt(&dck->dck_key, salt);
2692 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2696 if (dck != NULL)
2697 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2712 dsl_crypto_key_t *dck = NULL;
2720 ret = spa_keystore_lookup_key(spa, dsobj, FTAG, &dck);
2725 ret = zio_crypt_do_objset_hmacs(&dck->dck_key, buf, datalen,
2730 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2765 if (dck != NULL)
2766 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2776 dsl_crypto_key_t *dck = NULL;
2781 ret = spa_keystore_lookup_key(spa, dsobj, FTAG, &dck);
2786 ret = zio_crypt_do_hmac(&dck->dck_key, buf, datalen,
2792 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2809 if (dck != NULL)
2810 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2828 dsl_crypto_key_t *dck = NULL;
2834 ret = spa_keystore_lookup_key(spa, zb->zb_objset, FTAG, &dck);
2858 ret = zio_crypt_key_get_salt(&dck->dck_key, salt);
2866 ret = zio_crypt_generate_iv_salt_dedup(&dck->dck_key,
2873 ret = zio_do_crypt_data(encrypt, &dck->dck_key, ot, bswap, salt, iv,
2895 spa_keystore_dsl_key_rele(spa, dck, FTAG);
2912 spa_keystore_dsl_key_rele(spa, dck, FTAG);