• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/fs/ecryptfs/

Lines Matching refs:crypt_stat

39 ecryptfs_decrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
44 ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
86 * @crypt_stat: Pointer to crypt_stat struct for the current inode
90 * Uses the allocated crypto context that crypt_stat references to
94 struct ecryptfs_crypt_stat *crypt_stat,
99 .tfm = crypt_stat->hash_tfm,
104 mutex_lock(&crypt_stat->cs_hash_tfm_mutex);
116 crypt_stat->hash_tfm = desc.tfm;
121 mutex_unlock(&crypt_stat->cs_hash_tfm_mutex);
151 * @crypt_stat: Pointer to crypt_stat struct for the current inode
159 static int ecryptfs_derive_iv(char *iv, struct ecryptfs_crypt_stat *crypt_stat,
168 ecryptfs_dump_hex(crypt_stat->root_iv, crypt_stat->iv_bytes);
174 memcpy(src, crypt_stat->root_iv, crypt_stat->iv_bytes);
175 memset((src + crypt_stat->iv_bytes), 0, 16);
176 snprintf((src + crypt_stat->iv_bytes), 16, "%ld", offset);
179 ecryptfs_dump_hex(src, (crypt_stat->iv_bytes + 16));
181 rc = ecryptfs_calculate_md5(dst, crypt_stat, src,
182 (crypt_stat->iv_bytes + 16));
188 memcpy(iv, dst, crypt_stat->iv_bytes);
191 ecryptfs_dump_hex(iv, crypt_stat->iv_bytes);
199 * @crypt_stat: Pointer to the crypt_stat struct to initialize.
201 * Initialize the crypt_stat structure.
204 ecryptfs_init_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat)
206 memset((void *)crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat));
207 mutex_init(&crypt_stat->cs_mutex);
208 mutex_init(&crypt_stat->cs_tfm_mutex);
209 mutex_init(&crypt_stat->cs_hash_tfm_mutex);
210 crypt_stat->flags |= ECRYPTFS_STRUCT_INITIALIZED;
215 * @crypt_stat: Pointer to the crypt_stat struct to initialize.
217 * Releases all memory associated with a crypt_stat struct.
219 void ecryptfs_destruct_crypt_stat(struct ecryptfs_crypt_stat *crypt_stat)
221 if (crypt_stat->tfm)
222 crypto_free_blkcipher(crypt_stat->tfm);
223 if (crypt_stat->hash_tfm)
224 crypto_free_hash(crypt_stat->hash_tfm);
225 memset(crypt_stat, 0, sizeof(struct ecryptfs_crypt_stat));
287 * @crypt_stat: Pointer to the crypt_stat struct to initialize.
295 static int encrypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
301 .tfm = crypt_stat->tfm,
307 BUG_ON(!crypt_stat || !crypt_stat->tfm
308 || !(crypt_stat->flags & ECRYPTFS_STRUCT_INITIALIZED));
311 crypt_stat->key_size);
312 ecryptfs_dump_hex(crypt_stat->key,
313 crypt_stat->key_size);
316 mutex_lock(&crypt_stat->cs_tfm_mutex);
317 rc = crypto_blkcipher_setkey(crypt_stat->tfm, crypt_stat->key,
318 crypt_stat->key_size);
322 mutex_unlock(&crypt_stat->cs_tfm_mutex);
328 mutex_unlock(&crypt_stat->cs_tfm_mutex);
336 struct ecryptfs_crypt_stat *crypt_stat,
346 ( crypt_stat->header_extent_size
347 * crypt_stat->num_header_extents_at_front );
350 / crypt_stat->extent_size );
352 extents_per_page = PAGE_CACHE_SIZE / crypt_stat->extent_size;
355 (*byte_offset) = extent_offset * crypt_stat->extent_size;
356 ecryptfs_printk(KERN_DEBUG, " * crypt_stat->header_extent_size = "
357 "[%d]\n", crypt_stat->header_extent_size);
358 ecryptfs_printk(KERN_DEBUG, " * crypt_stat->"
360 crypt_stat->num_header_extents_at_front);
473 struct ecryptfs_crypt_stat *crypt_stat;
486 crypt_stat = &inode_info->crypt_stat;
487 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
496 num_extents_per_page = PAGE_CACHE_SIZE / crypt_stat->extent_size;
501 &lower_page_idx, &lower_byte_offset, crypt_stat,
536 rc = ecryptfs_derive_iv(extent_iv, crypt_stat,
548 ecryptfs_dump_hex(extent_iv, crypt_stat->iv_bytes);
554 * crypt_stat->extent_size)), 8);
557 crypt_stat, lower_page, lower_byte_offset, ctx->page,
558 (extent_offset * crypt_stat->extent_size),
559 crypt_stat->extent_size, extent_iv);
575 + crypt_stat->extent_size));
610 struct ecryptfs_crypt_stat *crypt_stat;
616 crypt_stat = &(ecryptfs_inode_to_private(
617 page->mapping->host)->crypt_stat);
619 if (!(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
627 num_extents_per_page = PAGE_CACHE_SIZE / crypt_stat->extent_size;
641 &lower_page_idx, &byte_offset, crypt_stat,
656 rc = ecryptfs_derive_iv(extent_iv, crypt_stat,
668 ecryptfs_dump_hex(extent_iv, crypt_stat->iv_bytes);
673 rc = ecryptfs_decrypt_page_offset(crypt_stat, page,
675 * crypt_stat->extent_size),
677 crypt_stat->extent_size,
679 if (rc != crypt_stat->extent_size) {
705 static int decrypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
711 .tfm = crypt_stat->tfm,
718 mutex_lock(&crypt_stat->cs_tfm_mutex);
719 rc = crypto_blkcipher_setkey(crypt_stat->tfm, crypt_stat->key,
720 crypt_stat->key_size);
724 mutex_unlock(&crypt_stat->cs_tfm_mutex);
730 mutex_unlock(&crypt_stat->cs_tfm_mutex);
747 ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
760 return encrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv);
769 ecryptfs_decrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
782 return decrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv);
789 * @crypt_stat: Uninitilized crypt stats structure
796 int ecryptfs_init_crypt_ctx(struct ecryptfs_crypt_stat *crypt_stat)
801 if (!crypt_stat->cipher) {
808 crypt_stat->cipher, (int)strlen(crypt_stat->cipher),
809 crypt_stat->key_size << 3);
810 if (crypt_stat->tfm) {
814 mutex_lock(&crypt_stat->cs_tfm_mutex);
816 crypt_stat->cipher, "cbc");
819 crypt_stat->tfm = crypto_alloc_blkcipher(full_alg_name, 0,
822 if (IS_ERR(crypt_stat->tfm)) {
823 rc = PTR_ERR(crypt_stat->tfm);
826 crypt_stat->cipher);
827 mutex_unlock(&crypt_stat->cs_tfm_mutex);
830 crypto_blkcipher_set_flags(crypt_stat->tfm, CRYPTO_TFM_REQ_WEAK_KEY);
831 mutex_unlock(&crypt_stat->cs_tfm_mutex);
837 static void set_extent_mask_and_shift(struct ecryptfs_crypt_stat *crypt_stat)
841 crypt_stat->extent_mask = 0xFFFFFFFF;
842 crypt_stat->extent_shift = 0;
843 if (crypt_stat->extent_size == 0)
845 extent_size_tmp = crypt_stat->extent_size;
848 crypt_stat->extent_mask <<= 1;
849 crypt_stat->extent_shift++;
853 void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat)
857 crypt_stat->extent_size = ECRYPTFS_DEFAULT_EXTENT_SIZE;
858 set_extent_mask_and_shift(crypt_stat);
859 crypt_stat->iv_bytes = ECRYPTFS_DEFAULT_IV_BYTES;
861 crypt_stat->header_extent_size =
864 crypt_stat->header_extent_size = PAGE_CACHE_SIZE;
865 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
866 crypt_stat->num_header_extents_at_front = 0;
868 crypt_stat->num_header_extents_at_front = 1;
877 int ecryptfs_compute_root_iv(struct ecryptfs_crypt_stat *crypt_stat)
882 BUG_ON(crypt_stat->iv_bytes > MD5_DIGEST_SIZE);
883 BUG_ON(crypt_stat->iv_bytes <= 0);
884 if (!(crypt_stat->flags & ECRYPTFS_KEY_VALID)) {
890 rc = ecryptfs_calculate_md5(dst, crypt_stat, crypt_stat->key,
891 crypt_stat->key_size);
897 memcpy(crypt_stat->root_iv, dst, crypt_stat->iv_bytes);
900 memset(crypt_stat->root_iv, 0, crypt_stat->iv_bytes);
901 crypt_stat->flags |= ECRYPTFS_SECURITY_WARNING;
906 static void ecryptfs_generate_new_key(struct ecryptfs_crypt_stat *crypt_stat)
908 get_random_bytes(crypt_stat->key, crypt_stat->key_size);
909 crypt_stat->flags |= ECRYPTFS_KEY_VALID;
910 ecryptfs_compute_root_iv(crypt_stat);
913 ecryptfs_dump_hex(crypt_stat->key,
914 crypt_stat->key_size);
925 struct ecryptfs_crypt_stat *crypt_stat,
929 crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR;
931 crypt_stat->flags |= ECRYPTFS_VIEW_AS_ENCRYPTED;
936 * @crypt_stat
941 struct ecryptfs_crypt_stat *crypt_stat,
944 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat,
946 ecryptfs_set_default_sizes(crypt_stat);
947 strcpy(crypt_stat->cipher, ECRYPTFS_DEFAULT_CIPHER);
948 crypt_stat->key_size = ECRYPTFS_DEFAULT_KEY_BYTES;
949 crypt_stat->flags &= ~(ECRYPTFS_KEY_VALID);
950 crypt_stat->file_version = ECRYPTFS_FILE_VERSION;
951 crypt_stat->mount_crypt_stat = mount_crypt_stat;
966 * via the set of signatures in the crypt_stat struct. Later, when
977 struct ecryptfs_crypt_stat *crypt_stat =
978 &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
984 ecryptfs_set_default_crypt_stat_vals(crypt_stat, mount_crypt_stat);
989 crypt_stat->flags |= ECRYPTFS_ENCRYPTED;
990 crypt_stat->flags |= ECRYPTFS_KEY_VALID;
991 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat,
993 memcpy(crypt_stat->keysigs[crypt_stat->num_keysigs++],
998 memcpy(crypt_stat->cipher,
1001 crypt_stat->cipher[cipher_name_len] = '\0';
1002 crypt_stat->key_size =
1004 ecryptfs_generate_new_key(crypt_stat);
1011 rc = ecryptfs_init_crypt_ctx(crypt_stat);
1015 crypt_stat->cipher, rc);
1057 * @crypt_stat
1063 static int ecryptfs_process_flags(struct ecryptfs_crypt_stat *crypt_stat,
1075 crypt_stat->flags |= ecryptfs_flag_map[i].local_flag;
1077 crypt_stat->flags &= ~(ecryptfs_flag_map[i].local_flag);
1079 crypt_stat->file_version = ((flags >> 24) & 0xFF);
1106 write_ecryptfs_flags(char *page_virt, struct ecryptfs_crypt_stat *crypt_stat,
1114 if (crypt_stat->flags & ecryptfs_flag_map[i].local_flag)
1117 flags |= ((((u8)crypt_stat->file_version) << 24) & 0xFF000000);
1149 u16 ecryptfs_code_for_cipher_string(struct ecryptfs_crypt_stat *crypt_stat)
1156 if (strcmp(crypt_stat->cipher, "aes") == 0) {
1157 switch (crypt_stat->key_size) {
1169 if (strcmp(crypt_stat->cipher, map[i].cipher_str) == 0){
1256 struct ecryptfs_crypt_stat *crypt_stat,
1262 header_extent_size = (u32)crypt_stat->header_extent_size;
1264 (u16)crypt_stat->num_header_extents_at_front;
1280 * @crypt_stat
1307 struct ecryptfs_crypt_stat *crypt_stat,
1317 write_ecryptfs_flags((page_virt + offset), crypt_stat, &written);
1319 ecryptfs_write_header_metadata((page_virt + offset), crypt_stat,
1322 rc = ecryptfs_generate_key_packet_set((page_virt + offset), crypt_stat,
1335 static int ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat,
1357 header_pages = ((crypt_stat->header_extent_size
1358 * crypt_stat->num_header_extents_at_front)
1380 struct ecryptfs_crypt_stat *crypt_stat,
1405 struct ecryptfs_crypt_stat *crypt_stat;
1410 crypt_stat = &ecryptfs_inode_to_private(
1411 ecryptfs_dentry->d_inode)->crypt_stat;
1412 if (likely(crypt_stat->flags & ECRYPTFS_ENCRYPTED)) {
1413 if (!(crypt_stat->flags & ECRYPTFS_KEY_VALID)) {
1422 "Called with crypt_stat->encrypted == 0\n");
1432 rc = ecryptfs_write_headers_virt(page_virt, &size, crypt_stat,
1439 if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR)
1441 crypt_stat, page_virt,
1444 rc = ecryptfs_write_metadata_to_contents(crypt_stat, lower_file,
1459 static int parse_header_metadata(struct ecryptfs_crypt_stat *crypt_stat,
1472 crypt_stat->header_extent_size = (int)header_extent_size;
1473 crypt_stat->num_header_extents_at_front =
1477 && ((crypt_stat->header_extent_size
1478 * crypt_stat->num_header_extents_at_front)
1482 "[%d]\n", crypt_stat->header_extent_size);
1494 static void set_default_header_data(struct ecryptfs_crypt_stat *crypt_stat)
1496 crypt_stat->header_extent_size = 4096;
1497 crypt_stat->num_header_extents_at_front = 1;
1509 struct ecryptfs_crypt_stat *crypt_stat,
1517 ecryptfs_set_default_sizes(crypt_stat);
1518 crypt_stat->mount_crypt_stat = &ecryptfs_superblock_to_private(
1527 rc = ecryptfs_process_flags(crypt_stat, (page_virt + offset),
1533 if (crypt_stat->file_version > ECRYPTFS_SUPPORTED_FILE_VERSION) {
1537 crypt_stat->file_version,
1543 if (crypt_stat->file_version >= 1) {
1544 rc = parse_header_metadata(crypt_stat, (page_virt + offset),
1552 set_default_header_data(crypt_stat);
1553 rc = ecryptfs_parse_packet_set(crypt_stat, (page_virt + offset),
1619 struct ecryptfs_crypt_stat *crypt_stat =
1620 &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
1625 ecryptfs_copy_mount_wide_flags_to_inode_flags(crypt_stat,
1646 rc = ecryptfs_read_headers_virt(page_virt, crypt_stat,
1658 rc = ecryptfs_read_headers_virt(page_virt, crypt_stat,
1666 if (crypt_stat->mount_crypt_stat->flags
1668 crypt_stat->flags |= ECRYPTFS_METADATA_IN_XATTR;
1688 * @crypt_stat: The crypt_stat struct associated with the file anem to encode
1697 * pointed to by crypt_stat->tfm.
1708 ecryptfs_encode_filename(struct ecryptfs_crypt_stat *crypt_stat,
1733 * @crypt_stat: The crypt_stat struct associated with the file
1741 * pointed to by crypt_stat->tfm.
1752 ecryptfs_decode_filename(struct ecryptfs_crypt_stat *crypt_stat,