This package contains the first (lowest) Java layer of the PKCS#11 wrapper. It
is a straight-forward mapping of the PKCS#11 API from the C programming language
to the Java programming language. As a result, it is not really object oriented
in its style and handling as know from Java. Anyone familiar with PKCS#11 in C,
will find this layer easy to use. All methods of the PKCS11
interface have the same name as the corresponding functions of PKCS#11, and all
classes have the same name as the corresponding data structures of PKCS#11. The
developer can use this layer directly or may use the next higher level layer
that is located in the iaik.pkcs.pkcs11
package and in the
iaik.pkcs.pkcs11.objects
package. If the application uses this layer
directly, it calls PKCS11Connector.connectToPKCS11Module(String)
(passing the PKCS#11 module as parameter; e.g. "C:\Program
Files\Drivers\mypkcs11driver.dll") to get an implementation of the PKCS11
interface. Through this object, the application accesses all the
functionality of the underlaying PKCS#11 module.
The main differeces between
this API to the original PKCS#11 API are:
* The functions in this package do
not return return-values as know from PKCS#11. If the underlying PKCS#11 module
returns a value other than CKR_OK, the wrapper throws an PKCS11Exception
which holds the return value for information.
* Where PKCS#11
functions use pointers to return various objects, such objects and values are
returned directly as the regular return value of the according function.
*
In Java, it is not necessary to store the length of an array separatly. Every
array in Java 'knows' it own length.
Any PKCS#11 module compliant to
PKCS#11 version 2.x should be compatible to this API. We used PKCS#11 version
2.11 as a basis for development.