85 lines
2.8 KiB
C
85 lines
2.8 KiB
C
/*
|
|
* Copyright (c) 2015 Samsung Electronics Co., Ltd.
|
|
*
|
|
* Sensitive Data Protection
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
*/
|
|
|
|
#ifndef ECRYPTFS_DEK_H
|
|
#define ECRYPTFS_DEK_H
|
|
|
|
#include <linux/fs.h>
|
|
#include <sdp/dek_common.h>
|
|
#include "ecryptfs_kernel.h"
|
|
|
|
#define ECRYPTFS_DEK_XATTR_NAME "user.sdp"
|
|
|
|
#define ECRYPTFS_DEK_DEBUG 0
|
|
|
|
#define O_SDP 0x10000000
|
|
|
|
enum sdp_op {
|
|
TO_SENSITIVE = 0,
|
|
TO_PROTECTED
|
|
};
|
|
|
|
int ecryptfs_super_block_get_userid(struct super_block *sb);
|
|
int ecryptfs_is_sdp_locked(int engine_id);
|
|
void ecryptfs_clean_sdp_dek(struct ecryptfs_crypt_stat *crypt_stat);
|
|
int ecryptfs_get_sdp_dek(struct ecryptfs_crypt_stat *crypt_stat);
|
|
int ecryptfs_sdp_convert_dek(struct dentry *dentry);
|
|
int ecryptfs_parse_xattr_is_sensitive(const void *data, int len);
|
|
|
|
int write_dek_packet(char *dest, struct ecryptfs_crypt_stat *crypt_stat, size_t *written);
|
|
int parse_dek_packet(char *data, struct ecryptfs_crypt_stat *crypt_stat, size_t *packet_size);
|
|
|
|
long ecryptfs_do_sdp_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
|
|
int ecryptfs_sdp_set_sensitive(int engine_id, struct dentry *dentry);
|
|
int ecryptfs_sdp_set_protected(struct dentry *dentry);
|
|
void ecryptfs_set_mapping_sensitive(struct inode *ecryptfs_inode, int userid, enum sdp_op operation);
|
|
|
|
void ecryptfs_fs_request_callback(int opcode, int ret, unsigned long ino);
|
|
|
|
#define ECRYPTFS_EVT_RENAME_TO_CHAMBER 1
|
|
#define ECRYPTFS_EVT_RENAME_OUT_OF_CHAMBER 2
|
|
|
|
/*
|
|
* ioctl for SDP
|
|
*/
|
|
|
|
typedef struct _dek_arg_sdp_info {
|
|
int engine_id;
|
|
int sdp_enabled;
|
|
int is_sensitive;
|
|
int is_chamber;
|
|
unsigned int type;
|
|
}dek_arg_get_sdp_info;
|
|
|
|
typedef struct _dek_arg_set_sensitive {
|
|
int engine_id;
|
|
}dek_arg_set_sensitive;
|
|
|
|
typedef struct _dek_arg_add_chamber {
|
|
int engine_id;
|
|
}dek_arg_add_chamber;
|
|
|
|
#define ECRYPTFS_IOCTL_GET_SDP_INFO _IOR('l', 0x11, __u32)
|
|
#define ECRYPTFS_IOCTL_SET_SENSITIVE _IOW('l', 0x15, __u32)
|
|
#define ECRYPTFS_IOCTL_SET_PROTECTED _IOW('l', 0x16, __u32)
|
|
#define ECRYPTFS_IOCTL_ADD_CHAMBER _IOW('l', 0x17, __u32)
|
|
#define ECRYPTFS_IOCTL_REMOVE_CHAMBER _IOW('l', 0x18, __u32)
|
|
|
|
#endif /* #ifndef ECRYPTFS_DEK_H */
|