diff --git a/crypto/cryptfs/cryptfs.c b/crypto/cryptfs/cryptfs.c
new file mode 100644
index 0000000..59e7add
--- /dev/null
+++ b/crypto/cryptfs/cryptfs.c
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2013 a3955269 all rights reversed, no rights reserved.
+ */
+
+#define TW_INCLUDE_CRYPTO_SAMSUNG
+#include "../ics/cryptfs.c"
+
+int dm_remove_device(const char *name)
+{
+    int r;
+    r = delete_crypto_blk_dev(name);
+    if(!r)
+        printf("crypto block device '%s' deleted.\n", name);
+    else
+        printf("deleting crypto block device '%s' failed. [%d - %s]\n", name, r, strerror(errno));
+    return r;
+}
+
+int ecryptfs_test(const char *pw)
+{
+   char pwbuf[256];
+   int r;
+
+   strcpy(pwbuf, pw);
+   // 0: building options without file encryption filtering.
+   // 1: building options with media files filtering.
+   // 2: building options with all new files filtering.
+   r = mount_ecryptfs_drive(pwbuf, "/emmc", "/emmc", 0);
+   printf("mount_ecryptfs_drive: %d\n", r);
+   r = mount("/dev/block/mmcblk1", "/emmc", "vfat", MS_RDONLY, "");
+   printf("mount: %d\n", r);
+
+   r = umount("/emmc");///dev/block/mmcblk1");
+   printf("umount: %d\n", r);
+
+   //r = unmount_ecryptfs_drive("/emmc");
+   //printf("unmount_ecryptfs_drive: %d\n", r);
+
+   return r;
+}
+
+int main(int argc, char* argv[])
+{
+    if(argc < 2)
+    {
+        printf("no args!\n");
+        return 1;
+    }
+
+    property_set("ro.crypto.state", "encrypted");
+
+    property_set("ro.crypto.fs_type", CRYPTO_FS_TYPE);
+    property_set("ro.crypto.fs_real_blkdev", CRYPTO_REAL_BLKDEV);
+    property_set("ro.crypto.fs_mnt_point", CRYPTO_MNT_POINT);
+    property_set("ro.crypto.fs_options", CRYPTO_FS_OPTIONS);
+    property_set("ro.crypto.fs_flags", CRYPTO_FS_FLAGS);
+    property_set("ro.crypto.keyfile.userdata", CRYPTO_KEY_LOC);
+
+#ifdef CRYPTO_SD_FS_TYPE
+    property_set("ro.crypto.sd_fs_type", CRYPTO_SD_FS_TYPE);
+    property_set("ro.crypto.sd_fs_real_blkdev", CRYPTO_SD_REAL_BLKDEV);
+    property_set("ro.crypto.sd_fs_mnt_point", EXPAND(TW_INTERNAL_STORAGE_PATH));
+#endif
+
+    property_set("rw.km_fips_status", "ready");
+
+    delete_crypto_blk_dev("userdata");
+    delete_crypto_blk_dev("sdcard");
+    delete_crypto_blk_dev("emmc");
+
+    cryptfs_check_passwd(argv[1]);
+
+    return 0;
+};
