A first usable JuiCE version

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

A first usable JuiCE version

Werner Dittmann

after some tests und updates here a first version of
JuiCE. Have a look at the attached README.txt file
to get some more information.

As usual pls report problems etc to the list.


* What is JuiCE? *

JuiCE is a Java Crypro Extension (JCE) provider that uses the openSSL
crypto functions as its crypto, digest, and signature engines. Because
the openSSL implementation is highly optimized JuiCE provides is much
faster than Java-only implementations.

JuiCE provides the standard JCE interfaces. As a regular JCE provider
implementation you can register and use it as described in the relevant
documentation and javadocs.

Refer to  http://java.sun.com/products/jce/reference/docs/index.html for
a full description of the JCE.

NOTE: Currently JuiCE implements only some algorithms (see below). To
check if JuiCE provides and algorithm try to instatiate a Cipher with the
required algorithm and JuiCE as provider id and catch the "NoSuchAlgorithm"
exception. If this exception fires JuiCE does not support this particular
algorithm. In this case get another Cipher instance using another provider
or the standard provider. See the unit tests in the test directory for some
examples how to use JuiCE.

* Implmented algorithms *


- AES (all key sizes), DES, DESEDE in ECB and CBC mode,
  available paddings are: none, PKCS5/PKCS7, ISO10126

- RSA RAW, RSA PKCS1padding, RSA OAEP padding


- MD2, MD4, MD5, SHA1 (and other SHA up to 512 if the openSSL
  library is built to include those), RIPEMD160


- MD5WithRSAEncryption, SHA1WithRSAEncryption (other SHA also
  if supported by openSSL, see remark for digests)

- standard DSA with SHA1

Unit tests for all implemented algorithms are available.

* The native code to bridge Java to openSSL crypto library *

The native code is standard C, prepared to compile/run also
with X86_64 architecture (not yet fully tested), 32 bit works

The native code also implements the necessary thread lock
callbacks. The thread lock code is compatible with the Java
locking mechanisms (in fact the native code uses the Java
locking to implement the openSSL locks).

* Installation *

NOTE: Do not modify the "juice.jar" - it's a signed jar as per
requirement for JCE provider implementations. Therefore don't
rebuild juice.jar if you perform a SVN checkout.

The "dist" directory contains a zip file which holds a binary
distrubution. The binary distribution consists of

- the "juice.jar" file. Install this file into some directory
  that is referenced in the CLASSPATH. Do not modify the
  "juice.jar" - it's a signed jar as per requirement for JCE
  provider implementations. Therefore don't rebuild juice.jar
  if you perform a SVN checkout.
- The unit test classes with sources

- The file "juice-0.0.1.tar.gz" contains the native source code.
  To install this code, unpack the tar file in a directory and
  run ./configure. After that run make and make install (do the
  install step as superuser). The install procedure installs
  the shared library in /usr/local/lib by default. You may change
  this location using appropriate arguments when running
  The configure script needs the environment variable JAVA_HOME.
  This env variable should point to the base directory of your
  JDK. Configure uses this variable to check the java executable
  and to determine if you are using a 32 or a 64 bit Java
  implementation. Configure then crosschecks with your actual
  system and exits if there is a mismatch.
  Don't forget to run "ldconfig" after installation to update
  the shared library cache.

* Prerequisits *

JuiCE needs the following additional jar libraries:

    The master link for the commons project:

    The logging library. Required to control the logging, error
    reporting and so on.
    See: http://logging.apache.org/

To enable your Java programs to use JuiCE make sure that the
Java runtime can load the native shared library. Therefore either
the "java.library.path" system property must contain the installation
directory of the shared library or you set the LD_LIBRARY_PATH
enviironment variable to contain the installation directory.

* Miscellaneous *

In the unlikely event :-) that you run into problems or find a bug
please use the JuiCE mailing list: [hidden email].

To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]