Find a file
Mark Pariente f5daf6d52a Code style, formatting and API name cleanups
This is a massive commit serving a few purposes:

 * Unify code formatting and style to conform to Eclipse formatting. We
   will use this formatting from now on for all new code to have a
   uniform codebase.

 * Clean up API naming and remove redundancies. I've renamed a lot of
   API functions to promote coherence across the codebase. I've also
   removed some redundant API's to promote best practices.

 * Improve JavaDoc coverage. This commit documents all public methods
   within the library itself.

 * Fix JavaDoc warnings.
2012-02-27 23:03:14 -08:00
src Code style, formatting and API name cleanups 2012-02-27 23:03:14 -08:00
test/encfs_samples Add support for per-block MAC headers 2012-02-20 12:08:18 -08:00
.gitignore Add .settings to .gitignore 2012-02-26 19:26:07 -08:00
LICENSE Merge remote-tracking branch 'upstream/master'. Also extracted unit 2011-12-21 18:05:11 +00:00
pom.xml Added further tests for EncFSVolume 2012-02-22 19:28:42 +00:00
README.md Readme update 2012-02-11 23:22:04 -08:00

encfs-java

encfs-java is a Java library for accessing data in EncFS volumes. It is able to derive the volume key from a user password, decode encrypted filenames (IV chaining is implemented) and decrypt file contents. Currently we also have experimental support for creating new volumes, moving/renaming files as well as copying file contents.

We do support most encfs volume configuration options, and are interoperable with the official encfs implementation (http://www.arg0.net/encfs). Currently we only support the latest version (1.7.4), but we target to be able to support volumes created with legacy versions as well.

Building

encfs-java uses Maven for building. Assuming you have a working installation, simply run the following to build the code:

$ mvn compile

To create a JAR file for using encfs-java from another application, do:

$ mvn package

Which will create a JAR file in the {$PROJECT_ROOT}/target/ directory.

Usage

This library comes with a demo/example application called EncFSShell. It is a simple shell supporting a few commands such as 'ls', 'cd', 'cat', 'mv' and 'cp' on an EncFS volume. After building the library, add the {$PROJECT_ROOT}/target/classes/ directory to your CLASSPATH, and run like so:

$ java -classpath ${PROJECT_ROOT}/target/classes EncFSShell /path/to/an/encfs/volume

For using the library from another project, include the .JAR file in your classpath and import the org.mrpdaemon.encfs.sec package. For API documentation, you can generate JavaDoc's using Maven:

$ mvn javadoc:javadoc

Which will place your documentation in ${PROJECT_ROOT}/target/site/apidocs/

Common issues

If you are getting an exception due to "Illegal key size" and you are using Sun's JDK, you need to install the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files. See the following link for more information:

http://www.oracle.com/technetwork/java/javase/downloads/jce-6-download-429243.html

Thanks to aormerod for pointing this out!

Licensing

encfs-java is licensed under the Lesser GNU Public License, which allows non-GPL applications to make use of the library with the restriction that the source code for any modifications to the library itself need to be made available to be able to legally redistribute the modified library. For more information, please see the LICENSE file and the Free Software Foundation website.