Lines Matching full:ci
180 const u8 *raw_key, const struct fscrypt_info *ci) in find_or_insert_direct_key() argument
192 memcpy(&hash_key, ci->ci_policy.v1.master_key_descriptor, in find_or_insert_direct_key()
197 if (memcmp(ci->ci_policy.v1.master_key_descriptor, in find_or_insert_direct_key()
200 if (ci->ci_mode != dk->dk_mode) in find_or_insert_direct_key()
202 if (!fscrypt_is_key_prepared(&dk->dk_key, ci)) in find_or_insert_direct_key()
204 if (crypto_memneq(raw_key, dk->dk_raw, ci->ci_mode->keysize)) in find_or_insert_direct_key()
220 fscrypt_get_direct_key(const struct fscrypt_info *ci, const u8 *raw_key) in fscrypt_get_direct_key() argument
226 dk = find_or_insert_direct_key(NULL, raw_key, ci); in fscrypt_get_direct_key()
235 dk->dk_mode = ci->ci_mode; in fscrypt_get_direct_key()
236 err = fscrypt_prepare_key(&dk->dk_key, raw_key, ci->ci_mode->keysize, in fscrypt_get_direct_key()
237 false /*is_hw_wrapped*/, ci); in fscrypt_get_direct_key()
240 memcpy(dk->dk_descriptor, ci->ci_policy.v1.master_key_descriptor, in fscrypt_get_direct_key()
242 memcpy(dk->dk_raw, raw_key, ci->ci_mode->keysize); in fscrypt_get_direct_key()
244 return find_or_insert_direct_key(dk, raw_key, ci); in fscrypt_get_direct_key()
252 static int setup_v1_file_key_direct(struct fscrypt_info *ci, in setup_v1_file_key_direct() argument
257 dk = fscrypt_get_direct_key(ci, raw_master_key); in setup_v1_file_key_direct()
260 ci->ci_direct_key = dk; in setup_v1_file_key_direct()
261 ci->ci_enc_key = dk->dk_key; in setup_v1_file_key_direct()
266 static int setup_v1_file_key_derived(struct fscrypt_info *ci, in setup_v1_file_key_derived() argument
276 derived_key = kmalloc(ci->ci_mode->keysize, GFP_KERNEL); in setup_v1_file_key_derived()
280 err = derive_key_aes(raw_master_key, ci->ci_nonce, in setup_v1_file_key_derived()
281 derived_key, ci->ci_mode->keysize); in setup_v1_file_key_derived()
285 err = fscrypt_set_per_file_enc_key(ci, derived_key); in setup_v1_file_key_derived()
291 int fscrypt_setup_v1_file_key(struct fscrypt_info *ci, const u8 *raw_master_key) in fscrypt_setup_v1_file_key() argument
293 if (ci->ci_policy.v1.flags & FSCRYPT_POLICY_FLAG_DIRECT_KEY) in fscrypt_setup_v1_file_key()
294 return setup_v1_file_key_direct(ci, raw_master_key); in fscrypt_setup_v1_file_key()
296 return setup_v1_file_key_derived(ci, raw_master_key); in fscrypt_setup_v1_file_key()
299 int fscrypt_setup_v1_file_key_via_subscribed_keyrings(struct fscrypt_info *ci) in fscrypt_setup_v1_file_key_via_subscribed_keyrings() argument
306 ci->ci_policy.v1.master_key_descriptor, in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
307 ci->ci_mode->keysize, &payload); in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
308 if (key == ERR_PTR(-ENOKEY) && ci->ci_inode->i_sb->s_cop->key_prefix) { in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
309 key = find_and_lock_process_key(ci->ci_inode->i_sb->s_cop->key_prefix, in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
310 ci->ci_policy.v1.master_key_descriptor, in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
311 ci->ci_mode->keysize, &payload); in fscrypt_setup_v1_file_key_via_subscribed_keyrings()
316 err = fscrypt_setup_v1_file_key(ci, payload->raw); in fscrypt_setup_v1_file_key_via_subscribed_keyrings()