Lines Matching refs:crypt_stat

88 				  struct ecryptfs_crypt_stat *crypt_stat,  in ecryptfs_calculate_md5()  argument
93 .tfm = crypt_stat->hash_tfm, in ecryptfs_calculate_md5()
98 mutex_lock(&crypt_stat->cs_hash_tfm_mutex); in ecryptfs_calculate_md5()
110 crypt_stat->hash_tfm = desc.tfm; in ecryptfs_calculate_md5()
134 mutex_unlock(&crypt_stat->cs_hash_tfm_mutex); in ecryptfs_calculate_md5()
171 int ecryptfs_derive_iv(char *iv, struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_derive_iv() argument
180 ecryptfs_dump_hex(crypt_stat->root_iv, crypt_stat->iv_bytes); in ecryptfs_derive_iv()
186 memcpy(src, crypt_stat->root_iv, crypt_stat->iv_bytes); in ecryptfs_derive_iv()
187 memset((src + crypt_stat->iv_bytes), 0, 16); in ecryptfs_derive_iv()
188 snprintf((src + crypt_stat->iv_bytes), 16, "%lld", offset); in ecryptfs_derive_iv()
191 ecryptfs_dump_hex(src, (crypt_stat->iv_bytes + 16)); in ecryptfs_derive_iv()
193 rc = ecryptfs_calculate_md5(dst, crypt_stat, src, in ecryptfs_derive_iv()
194 (crypt_stat->iv_bytes + 16)); in ecryptfs_derive_iv()
200 memcpy(iv, dst, crypt_stat->iv_bytes); in ecryptfs_derive_iv()
203 ecryptfs_dump_hex(iv, crypt_stat->iv_bytes); in ecryptfs_derive_iv()
216 ecryptfs_init_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_init_crypt_stat() argument
218 memset((void *)crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat)); in ecryptfs_init_crypt_stat()
219 INIT_LIST_HEAD(&crypt_stat->keysig_list); in ecryptfs_init_crypt_stat()
220 mutex_init(&crypt_stat->keysig_list_mutex); in ecryptfs_init_crypt_stat()
221 mutex_init(&crypt_stat->cs_mutex); in ecryptfs_init_crypt_stat()
222 mutex_init(&crypt_stat->cs_tfm_mutex); in ecryptfs_init_crypt_stat()
223 mutex_init(&crypt_stat->cs_hash_tfm_mutex); in ecryptfs_init_crypt_stat()
224 crypt_stat->flags |= ECRYPTFS_STRUCT_INITIALIZED; in ecryptfs_init_crypt_stat()
233 void ecryptfs_destroy_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_destroy_crypt_stat() argument
237 if (crypt_stat->tfm) in ecryptfs_destroy_crypt_stat()
238 crypto_free_ablkcipher(crypt_stat->tfm); in ecryptfs_destroy_crypt_stat()
239 if (crypt_stat->hash_tfm) in ecryptfs_destroy_crypt_stat()
240 crypto_free_hash(crypt_stat->hash_tfm); in ecryptfs_destroy_crypt_stat()
242 &crypt_stat->keysig_list, crypt_stat_list) { in ecryptfs_destroy_crypt_stat()
246 memset(crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat)); in ecryptfs_destroy_crypt_stat()
341 static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat, in crypt_scatterlist() argument
350 BUG_ON(!crypt_stat || !crypt_stat->tfm in crypt_scatterlist()
351 || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED)); in crypt_scatterlist()
354 crypt_stat->key_size); in crypt_scatterlist()
355 ecryptfs_dump_hex(crypt_stat->key, in crypt_scatterlist()
356 crypt_stat->key_size); in crypt_scatterlist()
361 mutex_lock(&crypt_stat->cs_tfm_mutex); in crypt_scatterlist()
362 req = ablkcipher_request_alloc(crypt_stat->tfm, GFP_NOFS); in crypt_scatterlist()
364 mutex_unlock(&crypt_stat->cs_tfm_mutex); in crypt_scatterlist()
373 if (!(crypt_stat->flags & ECRYPTFS_KEY_SET)) { in crypt_scatterlist()
374 rc = crypto_ablkcipher_setkey(crypt_stat->tfm, crypt_stat->key, in crypt_scatterlist()
375 crypt_stat->key_size); in crypt_scatterlist()
380 mutex_unlock(&crypt_stat->cs_tfm_mutex); in crypt_scatterlist()
384 crypt_stat->flags |= ECRYPTFS_KEY_SET; in crypt_scatterlist()
386 mutex_unlock(&crypt_stat->cs_tfm_mutex); in crypt_scatterlist()
407 static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat, in lower_offset_for_page() argument
410 return ecryptfs_lower_header_size(crypt_stat) + in lower_offset_for_page()
427 static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat, in crypt_extent() argument
436 size_t extent_size = crypt_stat->extent_size; in crypt_extent()
440 rc = ecryptfs_derive_iv(extent_iv, crypt_stat, in crypt_extent()
457 rc = crypt_scatterlist(crypt_stat, &dst_sg, &src_sg, extent_size, in crypt_extent()
489 struct ecryptfs_crypt_stat *crypt_stat; in ecryptfs_encrypt_page() local
497 crypt_stat = in ecryptfs_encrypt_page()
498 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat); in ecryptfs_encrypt_page()
499 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)); in ecryptfs_encrypt_page()
509 extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size); in ecryptfs_encrypt_page()
511 rc = crypt_extent(crypt_stat, enc_extent_page, page, in ecryptfs_encrypt_page()
520 lower_offset = lower_offset_for_page(crypt_stat, page); in ecryptfs_encrypt_page()
558 struct ecryptfs_crypt_stat *crypt_stat; in ecryptfs_decrypt_page() local
565 crypt_stat = in ecryptfs_decrypt_page()
566 &(ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat); in ecryptfs_decrypt_page()
567 BUG_ON(!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)); in ecryptfs_decrypt_page()
569 lower_offset = lower_offset_for_page(crypt_stat, page); in ecryptfs_decrypt_page()
582 extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size); in ecryptfs_decrypt_page()
584 rc = crypt_extent(crypt_stat, page, page, in ecryptfs_decrypt_page()
607 int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_init_crypt_ctx() argument
615 crypt_stat->cipher, (int)strlen(crypt_stat->cipher), in ecryptfs_init_crypt_ctx()
616 crypt_stat->key_size << 3); in ecryptfs_init_crypt_ctx()
617 mutex_lock(&crypt_stat->cs_tfm_mutex); in ecryptfs_init_crypt_ctx()
618 if (crypt_stat->tfm) { in ecryptfs_init_crypt_ctx()
623 crypt_stat->cipher, "cbc"); in ecryptfs_init_crypt_ctx()
626 crypt_stat->tfm = crypto_alloc_ablkcipher(full_alg_name, 0, 0); in ecryptfs_init_crypt_ctx()
627 if (IS_ERR(crypt_stat->tfm)) { in ecryptfs_init_crypt_ctx()
628 rc = PTR_ERR(crypt_stat->tfm); in ecryptfs_init_crypt_ctx()
629 crypt_stat->tfm = NULL; in ecryptfs_init_crypt_ctx()
635 crypto_ablkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY); in ecryptfs_init_crypt_ctx()
640 mutex_unlock(&crypt_stat->cs_tfm_mutex); in ecryptfs_init_crypt_ctx()
644 static void set_extent_mask_and_shift(struct ecryptfs_crypt_stat *crypt_stat) in set_extent_mask_and_shift() argument
648 crypt_stat->extent_mask = 0xFFFFFFFF; in set_extent_mask_and_shift()
649 crypt_stat->extent_shift = 0; in set_extent_mask_and_shift()
650 if (crypt_stat->extent_size == 0) in set_extent_mask_and_shift()
652 extent_size_tmp = crypt_stat->extent_size; in set_extent_mask_and_shift()
655 crypt_stat->extent_mask <<= 1; in set_extent_mask_and_shift()
656 crypt_stat->extent_shift++; in set_extent_mask_and_shift()
660 void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_set_default_sizes() argument
664 crypt_stat->extent_size = ECRYPTFS_DEFAULT_EXTENT_SIZE; in ecryptfs_set_default_sizes()
665 set_extent_mask_and_shift(crypt_stat); in ecryptfs_set_default_sizes()
666 crypt_stat->iv_bytes = ECRYPTFS_DEFAULT_IV_BYTES; in ecryptfs_set_default_sizes()
667 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) in ecryptfs_set_default_sizes()
668 crypt_stat->metadata_size = ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; in ecryptfs_set_default_sizes()
671 crypt_stat->metadata_size = in ecryptfs_set_default_sizes()
674 crypt_stat->metadata_size = PAGE_CACHE_SIZE; in ecryptfs_set_default_sizes()
684 int ecryptfs_compute_root_iv(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_compute_root_iv() argument
689 BUG_ON(crypt_stat->iv_bytes > MD5_DIGEST_SIZE); in ecryptfs_compute_root_iv()
690 BUG_ON(crypt_stat->iv_bytes <= 0); in ecryptfs_compute_root_iv()
691 if (!(crypt_stat->flags & ECRYPTFS_KEY_VALID)) { in ecryptfs_compute_root_iv()
697 rc = ecryptfs_calculate_md5(dst, crypt_stat, crypt_stat->key, in ecryptfs_compute_root_iv()
698 crypt_stat->key_size); in ecryptfs_compute_root_iv()
704 memcpy(crypt_stat->root_iv, dst, crypt_stat->iv_bytes); in ecryptfs_compute_root_iv()
707 memset(crypt_stat->root_iv, 0, crypt_stat->iv_bytes); in ecryptfs_compute_root_iv()
708 crypt_stat->flags |= ECRYPTFS_SECURITY_WARNING; in ecryptfs_compute_root_iv()
713 static void ecryptfs_generate_new_key(struct ecryptfs_crypt_stat *crypt_stat) in ecryptfs_generate_new_key() argument
715 get_random_bytes(crypt_stat->key, crypt_stat->key_size); in ecryptfs_generate_new_key()
716 crypt_stat->flags |= ECRYPTFS_KEY_VALID; in ecryptfs_generate_new_key()
717 ecryptfs_compute_root_iv(crypt_stat); in ecryptfs_generate_new_key()
720 ecryptfs_dump_hex(crypt_stat->key, in ecryptfs_generate_new_key()
721 crypt_stat->key_size); in ecryptfs_generate_new_key()
734 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_copy_mount_wide_flags_to_inode_flags() argument
738 crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR; in ecryptfs_copy_mount_wide_flags_to_inode_flags()
740 crypt_stat->flags |= ECRYPTFS_VIEW_AS_ENCRYPTED; in ecryptfs_copy_mount_wide_flags_to_inode_flags()
742 crypt_stat->flags |= ECRYPTFS_ENCRYPT_FILENAMES; in ecryptfs_copy_mount_wide_flags_to_inode_flags()
745 crypt_stat->flags |= ECRYPTFS_ENCFN_USE_MOUNT_FNEK; in ecryptfs_copy_mount_wide_flags_to_inode_flags()
748 crypt_stat->flags |= ECRYPTFS_ENCFN_USE_FEK; in ecryptfs_copy_mount_wide_flags_to_inode_flags()
753 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_copy_mount_wide_sigs_to_inode_sigs() argument
759 mutex_lock(&crypt_stat->keysig_list_mutex); in ecryptfs_copy_mount_wide_sigs_to_inode_sigs()
767 rc = ecryptfs_add_keysig(crypt_stat, global_auth_tok->sig); in ecryptfs_copy_mount_wide_sigs_to_inode_sigs()
776 mutex_unlock(&crypt_stat->keysig_list_mutex); in ecryptfs_copy_mount_wide_sigs_to_inode_sigs()
788 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_set_default_crypt_stat_vals() argument
791 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat, in ecryptfs_set_default_crypt_stat_vals()
793 ecryptfs_set_default_sizes(crypt_stat); in ecryptfs_set_default_crypt_stat_vals()
794 strcpy(crypt_stat->cipher, ECRYPTFS_DEFAULT_CIPHER); in ecryptfs_set_default_crypt_stat_vals()
795 crypt_stat->key_size = ECRYPTFS_DEFAULT_KEY_BYTES; in ecryptfs_set_default_crypt_stat_vals()
796 crypt_stat->flags &= ~(ECRYPTFS_KEY_VALID); in ecryptfs_set_default_crypt_stat_vals()
797 crypt_stat->file_version = ECRYPTFS_FILE_VERSION; in ecryptfs_set_default_crypt_stat_vals()
798 crypt_stat->mount_crypt_stat = mount_crypt_stat; in ecryptfs_set_default_crypt_stat_vals()
822 struct ecryptfs_crypt_stat *crypt_stat = in ecryptfs_new_file_context() local
823 &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; in ecryptfs_new_file_context()
830 ecryptfs_set_default_crypt_stat_vals(crypt_stat, mount_crypt_stat); in ecryptfs_new_file_context()
831 crypt_stat->flags |= (ECRYPTFS_ENCRYPTED | ECRYPTFS_KEY_VALID); in ecryptfs_new_file_context()
832 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat, in ecryptfs_new_file_context()
834 rc = ecryptfs_copy_mount_wide_sigs_to_inode_sigs(crypt_stat, in ecryptfs_new_file_context()
843 memcpy(crypt_stat->cipher, in ecryptfs_new_file_context()
846 crypt_stat->cipher[cipher_name_len] = '\0'; in ecryptfs_new_file_context()
847 crypt_stat->key_size = in ecryptfs_new_file_context()
849 ecryptfs_generate_new_key(crypt_stat); in ecryptfs_new_file_context()
850 rc = ecryptfs_init_crypt_ctx(crypt_stat); in ecryptfs_new_file_context()
854 crypt_stat->cipher, rc); in ecryptfs_new_file_context()
902 static int ecryptfs_process_flags(struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_process_flags() argument
913 crypt_stat->flags |= ecryptfs_flag_map[i].local_flag; in ecryptfs_process_flags()
915 crypt_stat->flags &= ~(ecryptfs_flag_map[i].local_flag); in ecryptfs_process_flags()
917 crypt_stat->file_version = ((flags >> 24) & 0xFF); in ecryptfs_process_flags()
942 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_write_crypt_stat_flags() argument
950 if (crypt_stat->flags & ecryptfs_flag_map[i].local_flag) in ecryptfs_write_crypt_stat_flags()
953 flags |= ((((u8)crypt_stat->file_version) << 24) & 0xFF000000); in ecryptfs_write_crypt_stat_flags()
1055 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_write_header_metadata() argument
1061 header_extent_size = (u32)crypt_stat->extent_size; in ecryptfs_write_header_metadata()
1063 (u16)(crypt_stat->metadata_size / crypt_stat->extent_size); in ecryptfs_write_header_metadata()
1105 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_write_headers_virt() argument
1115 ecryptfs_write_crypt_stat_flags((page_virt + offset), crypt_stat, in ecryptfs_write_headers_virt()
1118 ecryptfs_write_header_metadata((page_virt + offset), crypt_stat, in ecryptfs_write_headers_virt()
1121 rc = ecryptfs_generate_key_packet_set((page_virt + offset), crypt_stat, in ecryptfs_write_headers_virt()
1188 struct ecryptfs_crypt_stat *crypt_stat = in ecryptfs_write_metadata() local
1189 &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; in ecryptfs_write_metadata()
1196 if (likely(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) { in ecryptfs_write_metadata()
1197 if (!(crypt_stat->flags & ECRYPTFS_KEY_VALID)) { in ecryptfs_write_metadata()
1208 virt_len = crypt_stat->metadata_size; in ecryptfs_write_metadata()
1218 rc = ecryptfs_write_headers_virt(virt, virt_len, &size, crypt_stat, in ecryptfs_write_metadata()
1225 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) in ecryptfs_write_metadata()
1244 static int parse_header_metadata(struct ecryptfs_crypt_stat *crypt_stat, in parse_header_metadata() argument
1255 crypt_stat->metadata_size = (((size_t)num_header_extents_at_front in parse_header_metadata()
1259 && (crypt_stat->metadata_size in parse_header_metadata()
1263 crypt_stat->metadata_size); in parse_header_metadata()
1276 static void set_default_header_data(struct ecryptfs_crypt_stat *crypt_stat) in set_default_header_data() argument
1278 crypt_stat->metadata_size = ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; in set_default_header_data()
1284 struct ecryptfs_crypt_stat *crypt_stat; in ecryptfs_i_size_init() local
1287 crypt_stat = &ecryptfs_inode_to_private(inode)->crypt_stat; in ecryptfs_i_size_init()
1292 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) in ecryptfs_i_size_init()
1293 file_size += crypt_stat->metadata_size; in ecryptfs_i_size_init()
1297 crypt_stat->flags |= ECRYPTFS_I_SIZE_INITIALIZED; in ecryptfs_i_size_init()
1313 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_read_headers_virt() argument
1321 ecryptfs_set_default_sizes(crypt_stat); in ecryptfs_read_headers_virt()
1322 crypt_stat->mount_crypt_stat = &ecryptfs_superblock_to_private( in ecryptfs_read_headers_virt()
1328 if (!(crypt_stat->flags & ECRYPTFS_I_SIZE_INITIALIZED)) in ecryptfs_read_headers_virt()
1331 rc = ecryptfs_process_flags(crypt_stat, (page_virt + offset), in ecryptfs_read_headers_virt()
1337 if (crypt_stat->file_version > ECRYPTFS_SUPPORTED_FILE_VERSION) { in ecryptfs_read_headers_virt()
1341 crypt_stat->file_version, in ecryptfs_read_headers_virt()
1347 if (crypt_stat->file_version >= 1) { in ecryptfs_read_headers_virt()
1348 rc = parse_header_metadata(crypt_stat, (page_virt + offset), in ecryptfs_read_headers_virt()
1356 set_default_header_data(crypt_stat); in ecryptfs_read_headers_virt()
1357 rc = ecryptfs_parse_packet_set(crypt_stat, (page_virt + offset), in ecryptfs_read_headers_virt()
1429 struct ecryptfs_crypt_stat *crypt_stat = in ecryptfs_read_metadata() local
1430 &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat; in ecryptfs_read_metadata()
1435 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat, in ecryptfs_read_metadata()
1445 rc = ecryptfs_read_lower(page_virt, 0, crypt_stat->extent_size, in ecryptfs_read_metadata()
1448 rc = ecryptfs_read_headers_virt(page_virt, crypt_stat, in ecryptfs_read_metadata()
1462 rc = ecryptfs_read_headers_virt(page_virt, crypt_stat, in ecryptfs_read_metadata()
1471 if (crypt_stat->mount_crypt_stat->flags in ecryptfs_read_metadata()
1473 crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR; in ecryptfs_read_metadata()
1503 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_encrypt_filename() argument
1510 if ((crypt_stat && (crypt_stat->flags & ECRYPTFS_ENCFN_USE_MOUNT_FNEK)) in ecryptfs_encrypt_filename()
1948 struct ecryptfs_crypt_stat *crypt_stat, in ecryptfs_encrypt_and_encode_filename() argument
1957 if ((crypt_stat && (crypt_stat->flags & ECRYPTFS_ENCRYPT_FILENAMES)) in ecryptfs_encrypt_and_encode_filename()
1972 rc = ecryptfs_encrypt_filename(filename, crypt_stat, in ecryptfs_encrypt_and_encode_filename()
1984 if ((crypt_stat && (crypt_stat->flags in ecryptfs_encrypt_and_encode_filename()
2006 if ((crypt_stat && (crypt_stat->flags in ecryptfs_encrypt_and_encode_filename()