Lines Matching refs:mk
190 struct fscrypt_master_key *mk, in setup_per_mode_enc_key() argument
208 if (mk->mk_secret.is_hw_wrapped && S_ISREG(inode->i_mode)) { in setup_per_mode_enc_key()
235 mk->mk_secret.raw, in setup_per_mode_enc_key()
236 mk->mk_secret.size, true, in setup_per_mode_enc_key()
252 err = fscrypt_hkdf_expand(&mk->mk_secret.hkdf, in setup_per_mode_enc_key()
277 static int fscrypt_derive_siphash_key(const struct fscrypt_master_key *mk, in fscrypt_derive_siphash_key() argument
283 err = fscrypt_hkdf_expand(&mk->mk_secret.hkdf, context, info, infolen, in fscrypt_derive_siphash_key()
296 const struct fscrypt_master_key *mk) in fscrypt_derive_dirhash_key() argument
300 err = fscrypt_derive_siphash_key(mk, HKDF_CONTEXT_DIRHASH_KEY, in fscrypt_derive_dirhash_key()
310 const struct fscrypt_master_key *mk) in fscrypt_hash_inode_number() argument
313 WARN_ON_ONCE(!mk->mk_ino_hash_key_initialized); in fscrypt_hash_inode_number()
316 &mk->mk_ino_hash_key); in fscrypt_hash_inode_number()
320 struct fscrypt_master_key *mk) in fscrypt_setup_iv_ino_lblk_32_key() argument
324 err = setup_per_mode_enc_key(ci, mk, mk->mk_iv_ino_lblk_32_keys, in fscrypt_setup_iv_ino_lblk_32_key()
330 if (!smp_load_acquire(&mk->mk_ino_hash_key_initialized)) { in fscrypt_setup_iv_ino_lblk_32_key()
334 if (mk->mk_ino_hash_key_initialized) in fscrypt_setup_iv_ino_lblk_32_key()
337 err = fscrypt_derive_siphash_key(mk, in fscrypt_setup_iv_ino_lblk_32_key()
339 NULL, 0, &mk->mk_ino_hash_key); in fscrypt_setup_iv_ino_lblk_32_key()
343 smp_store_release(&mk->mk_ino_hash_key_initialized, true); in fscrypt_setup_iv_ino_lblk_32_key()
355 fscrypt_hash_inode_number(ci, mk); in fscrypt_setup_iv_ino_lblk_32_key()
360 struct fscrypt_master_key *mk, in fscrypt_setup_v2_file_key() argument
365 if (mk->mk_secret.is_hw_wrapped && in fscrypt_setup_v2_file_key()
382 err = setup_per_mode_enc_key(ci, mk, mk->mk_direct_keys, in fscrypt_setup_v2_file_key()
392 err = setup_per_mode_enc_key(ci, mk, mk->mk_iv_ino_lblk_64_keys, in fscrypt_setup_v2_file_key()
397 err = fscrypt_setup_iv_ino_lblk_32_key(ci, mk); in fscrypt_setup_v2_file_key()
401 err = fscrypt_hkdf_expand(&mk->mk_secret.hkdf, in fscrypt_setup_v2_file_key()
416 err = fscrypt_derive_dirhash_key(ci, mk); in fscrypt_setup_v2_file_key()
441 static bool fscrypt_valid_master_key_size(const struct fscrypt_master_key *mk, in fscrypt_valid_master_key_size() argument
451 if (mk->mk_secret.size < min_keysize) { in fscrypt_valid_master_key_size()
454 master_key_spec_type(&mk->mk_spec), in fscrypt_valid_master_key_size()
455 master_key_spec_len(&mk->mk_spec), in fscrypt_valid_master_key_size()
456 (u8 *)&mk->mk_spec.u, in fscrypt_valid_master_key_size()
457 mk->mk_secret.size, min_keysize); in fscrypt_valid_master_key_size()
478 struct fscrypt_master_key *mk; in setup_file_encryption_key() local
485 mk = fscrypt_find_master_key(sb, &mk_spec); in setup_file_encryption_key()
486 if (unlikely(!mk)) { in setup_file_encryption_key()
501 mk = fscrypt_find_master_key(sb, &mk_spec); in setup_file_encryption_key()
504 if (unlikely(!mk)) { in setup_file_encryption_key()
520 down_read(&mk->mk_sem); in setup_file_encryption_key()
523 if (!is_master_key_secret_present(&mk->mk_secret)) { in setup_file_encryption_key()
528 if (!fscrypt_valid_master_key_size(mk, ci)) { in setup_file_encryption_key()
533 err = fscrypt_select_encryption_impl(ci, mk->mk_secret.is_hw_wrapped); in setup_file_encryption_key()
539 if (WARN_ON(mk->mk_secret.is_hw_wrapped)) { in setup_file_encryption_key()
547 err = fscrypt_setup_v1_file_key(ci, mk->mk_secret.raw); in setup_file_encryption_key()
550 err = fscrypt_setup_v2_file_key(ci, mk, need_dirhash_key); in setup_file_encryption_key()
560 *mk_ret = mk; in setup_file_encryption_key()
564 up_read(&mk->mk_sem); in setup_file_encryption_key()
565 fscrypt_put_master_key(mk); in setup_file_encryption_key()
571 struct fscrypt_master_key *mk; in put_crypt_info() local
582 mk = ci->ci_master_key; in put_crypt_info()
583 if (mk) { in put_crypt_info()
590 spin_lock(&mk->mk_decrypted_inodes_lock); in put_crypt_info()
592 spin_unlock(&mk->mk_decrypted_inodes_lock); in put_crypt_info()
593 fscrypt_put_master_key_activeref(ci->ci_inode->i_sb, mk); in put_crypt_info()
607 struct fscrypt_master_key *mk = NULL; in fscrypt_setup_encryption_info() local
635 res = setup_file_encryption_key(crypt_info, need_dirhash_key, &mk); in fscrypt_setup_encryption_info()
650 if (mk) { in fscrypt_setup_encryption_info()
651 crypt_info->ci_master_key = mk; in fscrypt_setup_encryption_info()
652 refcount_inc(&mk->mk_active_refs); in fscrypt_setup_encryption_info()
653 spin_lock(&mk->mk_decrypted_inodes_lock); in fscrypt_setup_encryption_info()
655 &mk->mk_decrypted_inodes); in fscrypt_setup_encryption_info()
656 spin_unlock(&mk->mk_decrypted_inodes_lock); in fscrypt_setup_encryption_info()
662 if (mk) { in fscrypt_setup_encryption_info()
663 up_read(&mk->mk_sem); in fscrypt_setup_encryption_info()
664 fscrypt_put_master_key(mk); in fscrypt_setup_encryption_info()