jdk/src/jdk.crypto.pkcs11/share/native/libj2pkcs11/pkcs11wrapper.h
changeset 42693 6645de32a866
parent 42692 97247477b481
child 42694 53aaff453c11
--- a/jdk/src/jdk.crypto.pkcs11/share/native/libj2pkcs11/pkcs11wrapper.h	Wed Dec 14 19:46:21 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,473 +0,0 @@
-/*
- * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
- */
-
-/* Copyright  (c) 2002 Graz University of Technology. All rights reserved.
- *
- * Redistribution and use in  source and binary forms, with or without
- * modification, are permitted  provided that the following conditions are met:
- *
- * 1. Redistributions of  source code must retain the above copyright notice,
- *    this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in  binary form must reproduce the above copyright notice,
- *    this list of conditions and the following disclaimer in the documentation
- *    and/or other materials provided with the distribution.
- *
- * 3. The end-user documentation included with the redistribution, if any, must
- *    include the following acknowledgment:
- *
- *    "This product includes software developed by IAIK of Graz University of
- *     Technology."
- *
- *    Alternately, this acknowledgment may appear in the software itself, if
- *    and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Graz University of Technology" and "IAIK of Graz University of
- *    Technology" must not be used to endorse or promote products derived from
- *    this software without prior written permission.
- *
- * 5. Products derived from this software may not be called
- *    "IAIK PKCS Wrapper", nor may "IAIK" appear in their name, without prior
- *    written permission of Graz University of Technology.
- *
- *  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
- *  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE LICENSOR BE
- *  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
- *  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
- *  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- *  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- *  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *  POSSIBILITY  OF SUCH DAMAGE.
- */
-
-/*
- * pkcs11wrapper.h
- * 18.05.2001
- *
- * declaration of all functions used by pkcs11wrapper.c
- *
- * @author Karl Scheibelhofer <Karl.Scheibelhofer@iaik.at>
- * @author Martin Schlaeffer <schlaeff@sbox.tugraz.at>
- */
-
-#ifndef _PKCS11WRAPPER_H
-#define _PKCS11WRAPPER_H 1
-
-/* disable asserts in product mode */
-#ifndef DEBUG
-  #ifndef NDEBUG
-    #define NDEBUG
-  #endif
-#endif
-
-/* extra PKCS#11 constants not in the standard include files */
-
-#define CKA_NETSCAPE_BASE                       (0x80000000 + 0x4E534350)
-#define CKA_NETSCAPE_TRUST_BASE                 (CKA_NETSCAPE_BASE + 0x2000)
-
-#define CKA_NETSCAPE_TRUST_SERVER_AUTH          (CKA_NETSCAPE_TRUST_BASE + 8)
-#define CKA_NETSCAPE_TRUST_CLIENT_AUTH          (CKA_NETSCAPE_TRUST_BASE + 9)
-#define CKA_NETSCAPE_TRUST_CODE_SIGNING (CKA_NETSCAPE_TRUST_BASE + 10)
-#define CKA_NETSCAPE_TRUST_EMAIL_PROTECTION     (CKA_NETSCAPE_TRUST_BASE + 11)
-
-/*
-
- Define the PKCS#11 functions to include and exclude. Reduces the size
- of the binary somewhat.
-
- This list needs to be kept in sync with the mapfile and PKCS11.java
-
-*/
-
-#define P11_ENABLE_C_INITIALIZE
-#define P11_ENABLE_C_FINALIZE
-#define P11_ENABLE_C_GETINFO
-#define P11_ENABLE_C_GETSLOTLIST
-#define P11_ENABLE_C_GETSLOTINFO
-#define P11_ENABLE_C_GETTOKENINFO
-#define P11_ENABLE_C_GETMECHANISMLIST
-#define P11_ENABLE_C_GETMECHANISMINFO
-#undef  P11_ENABLE_C_INITTOKEN
-#undef  P11_ENABLE_C_INITPIN
-#undef  P11_ENABLE_C_SETPIN
-#define P11_ENABLE_C_OPENSESSION
-#define P11_ENABLE_C_CLOSESESSION
-#undef  P11_ENABLE_C_CLOSEALLSESSIONS
-#define P11_ENABLE_C_GETSESSIONINFO
-#define P11_ENABLE_C_GETOPERATIONSTATE
-#define P11_ENABLE_C_SETOPERATIONSTATE
-#define P11_ENABLE_C_LOGIN
-#define P11_ENABLE_C_LOGOUT
-#define P11_ENABLE_C_CREATEOBJECT
-#define P11_ENABLE_C_COPYOBJECT
-#define P11_ENABLE_C_DESTROYOBJECT
-#undef  P11_ENABLE_C_GETOBJECTSIZE
-#define P11_ENABLE_C_GETATTRIBUTEVALUE
-#define P11_ENABLE_C_SETATTRIBUTEVALUE
-#define P11_ENABLE_C_FINDOBJECTSINIT
-#define P11_ENABLE_C_FINDOBJECTS
-#define P11_ENABLE_C_FINDOBJECTSFINAL
-#define P11_ENABLE_C_ENCRYPTINIT
-#define P11_ENABLE_C_ENCRYPT
-#define P11_ENABLE_C_ENCRYPTUPDATE
-#define P11_ENABLE_C_ENCRYPTFINAL
-#define P11_ENABLE_C_DECRYPTINIT
-#define P11_ENABLE_C_DECRYPT
-#define P11_ENABLE_C_DECRYPTUPDATE
-#define P11_ENABLE_C_DECRYPTFINAL
-#define P11_ENABLE_C_DIGESTINIT
-#define P11_ENABLE_C_DIGEST
-#define P11_ENABLE_C_DIGESTUPDATE
-#define P11_ENABLE_C_DIGESTKEY
-#define P11_ENABLE_C_DIGESTFINAL
-#define P11_ENABLE_C_SIGNINIT
-#define P11_ENABLE_C_SIGN
-#define P11_ENABLE_C_SIGNUPDATE
-#define P11_ENABLE_C_SIGNFINAL
-#define P11_ENABLE_C_SIGNRECOVERINIT
-#define P11_ENABLE_C_SIGNRECOVER
-#define P11_ENABLE_C_VERIFYINIT
-#define P11_ENABLE_C_VERIFY
-#define P11_ENABLE_C_VERIFYUPDATE
-#define P11_ENABLE_C_VERIFYFINAL
-#define P11_ENABLE_C_VERIFYRECOVERINIT
-#define P11_ENABLE_C_VERIFYRECOVER
-#undef  P11_ENABLE_C_DIGESTENCRYPTUPDATE
-#undef  P11_ENABLE_C_DECRYPTDIGESTUPDATE
-#undef  P11_ENABLE_C_SIGNENCRYPTUPDATE
-#undef  P11_ENABLE_C_DECRYPTVERIFYUPDATE
-#define P11_ENABLE_C_GENERATEKEY
-#define P11_ENABLE_C_GENERATEKEYPAIR
-#define P11_ENABLE_C_WRAPKEY
-#define P11_ENABLE_C_UNWRAPKEY
-#define P11_ENABLE_C_DERIVEKEY
-#define P11_ENABLE_C_SEEDRANDOM
-#define P11_ENABLE_C_GENERATERANDOM
-#undef  P11_ENABLE_C_GETFUNCTIONSTATUS
-#undef  P11_ENABLE_C_CANCELFUNCTION
-#undef  P11_ENABLE_C_WAITFORSLOTEVENT
-
-/* include the platform dependent part of the header */
-#include "p11_md.h"
-
-#include "pkcs11.h"
-#include "pkcs-11v2-20a3.h"
-#include <jni.h>
-#include <jni_util.h>
-#include <stdarg.h>
-
-#define MAX_STACK_BUFFER_LEN (4 * 1024)
-#define MAX_HEAP_BUFFER_LEN (64 * 1024)
-
-#define MAX_DIGEST_LEN (64)
-
-#ifndef min
-#define min(a, b)       (((a) < (b)) ? (a) : (b))
-#endif
-
-#define ckBBoolToJBoolean(x) ((x == TRUE) ? JNI_TRUE : JNI_FALSE);
-#define jBooleanToCKBBool(x) ((x == JNI_TRUE) ? TRUE : FALSE);
-
-#define ckByteToJByte(x) ((jbyte) x)
-#define jByteToCKByte(x) ((CK_BYTE) x)
-
-#define ckLongToJLong(x) ((jlong) x)
-#define jLongToCKLong(x) ((CK_LONG) x)
-
-#define ckULongToJLong(x) ((jlong) x)
-#define jLongToCKULong(x) ((CK_ULONG) x)
-
-// For CK_UNAVAILABLE_INFORMATION, always return -1 to avoid 32/64 bit problems.
-#define ckULongSpecialToJLong(x) (((x) == CK_UNAVAILABLE_INFORMATION) \
-    ? (jlong)-1 : ((jlong) x))
-
-#define ckCharToJChar(x) ((jchar) x)
-#define jCharToCKChar(x) ((CK_CHAR) x)
-
-#define ckUTF8CharToJChar(x) ((jchar) x)
-#define jCharToCKUTF8Char(x) ((CK_UTF8CHAR) x)
-
-#define ckFlageToJLong(x) ((jlong) x)
-
-#define ckVoidPtrToJObject(x) ((jobject) x)
-#define jObjectToCKVoidPtr(x) ((CK_VOID_PTR) x)
-
-#define jIntToCKLong(x)         ((CK_LONG) x)
-#define jIntToCKULong(x)        ((CK_ULONG) x)
-#define ckLongToJInt(x)         ((jint) x)
-#define ckULongToJInt(x)        ((jint) x)
-#define ckULongToJSize(x)       ((jsize) x)
-#define unsignedIntToCKULong(x) ((CK_ULONG) x)
-
-#ifdef P11_DEBUG
-#define TRACE0(s) { printf(s); fflush(stdout); }
-#define TRACE1(s, p1) { printf(s, p1); fflush(stdout); }
-#define TRACE2(s, p1, p2) { printf(s, p1, p2); fflush(stdout); }
-#define TRACE3(s, p1, p2, p3) { printf(s, p1, p2, p3); fflush(stdout); }
-#else
-#define TRACE0(s)
-#define TRACE1(s, p1)
-#define TRACE2(s, p1, p2)
-#define TRACE3(s, p1, p2, p3)
-#define TRACE_INTEND
-#define TRACE_UNINTEND
-#endif
-
-/* debug output */
-extern jboolean debug;
-void printDebug(const char *format, ...);
-
-#define CK_ASSERT_OK 0L
-
-#define CLASS_INFO "sun/security/pkcs11/wrapper/CK_INFO"
-#define CLASS_VERSION "sun/security/pkcs11/wrapper/CK_VERSION"
-#define CLASS_SLOT_INFO "sun/security/pkcs11/wrapper/CK_SLOT_INFO"
-#define CLASS_TOKEN_INFO "sun/security/pkcs11/wrapper/CK_TOKEN_INFO"
-#define CLASS_MECHANISM "sun/security/pkcs11/wrapper/CK_MECHANISM"
-#define CLASS_MECHANISM_INFO "sun/security/pkcs11/wrapper/CK_MECHANISM_INFO"
-#define CLASS_SESSION_INFO "sun/security/pkcs11/wrapper/CK_SESSION_INFO"
-#define CLASS_ATTRIBUTE "sun/security/pkcs11/wrapper/CK_ATTRIBUTE"
-#define CLASS_DATE "sun/security/pkcs11/wrapper/CK_DATE"
-#define CLASS_PKCS11EXCEPTION "sun/security/pkcs11/wrapper/PKCS11Exception"
-#define CLASS_PKCS11RUNTIMEEXCEPTION "sun/security/pkcs11/wrapper/PKCS11RuntimeException"
-#define CLASS_FILE_NOT_FOUND_EXCEPTION "java/io/FileNotFoundException"
-#define CLASS_C_INITIALIZE_ARGS "sun/security/pkcs11/wrapper/CK_C_INITIALIZE_ARGS"
-#define CLASS_CREATEMUTEX "sun/security/pkcs11/wrapper/CK_CREATEMUTEX"
-#define CLASS_DESTROYMUTEX "sun/security/pkcs11/wrapper/CK_DESTROYMUTEX"
-#define CLASS_LOCKMUTEX "sun/security/pkcs11/wrapper/CK_LOCKMUTEX"
-#define CLASS_UNLOCKMUTEX "sun/security/pkcs11/wrapper/CK_UNLOCKMUTEX"
-#define CLASS_NOTIFY "sun/security/pkcs11/wrapper/CK_NOTIFY"
-
-
-/* mechanism parameter classes */
-
-#define CLASS_RSA_PKCS_OAEP_PARAMS "sun/security/pkcs11/wrapper/CK_RSA_PKCS_OAEP_PARAMS"
-#define CLASS_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_MAC_GENERAL_PARAMS"
-#define CLASS_PBE_PARAMS "sun/security/pkcs11/wrapper/CK_PBE_PARAMS"
-#define PBE_INIT_VECTOR_SIZE 8
-#define CLASS_PKCS5_PBKD2_PARAMS "sun/security/pkcs11/wrapper/CK_PKCS5_PBKD2_PARAMS"
-#define CLASS_EXTRACT_PARAMS "sun/security/pkcs11/wrapper/CK_EXTRACT_PARAMS"
-
-#define CLASS_RSA_PKCS_PSS_PARAMS "sun/security/pkcs11/wrapper/CK_RSA_PKCS_PSS_PARAMS"
-#define CLASS_ECDH1_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_ECDH1_DERIVE_PARAMS"
-#define CLASS_ECDH2_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_ECDH2_DERIVE_PARAMS"
-#define CLASS_X9_42_DH1_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_X9_42_DH1_DERIVE_PARAMS"
-#define CLASS_X9_42_DH2_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_X9_42_DH2_DERIVE_PARAMS"
-
-/*
-#define CLASS_KEA_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_KEA_DERIVE_PARAMS"
-#define CLASS_RC2_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_PARAMS"
-#define CLASS_RC2_CBC_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_CBC_PARAMS"
-#define CLASS_RC2_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_RC2_MAC_GENERAL_PARAMS"
-#define CLASS_RC5_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_PARAMS"
-#define CLASS_RC5_CBC_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_CBC_PARAMS"
-#define CLASS_RC5_MAC_GENERAL_PARAMS "sun/security/pkcs11/wrapper/CK_RC5_MAC_GENERAL_PARAMS"
-#define CLASS_SKIPJACK_PRIVATE_WRAP_PARAMS "sun/security/pkcs11/wrapper/CK_SKIPJACK_PRIVATE_WRAP_PARAMS"
-#define CLASS_SKIPJACK_RELAYX_PARAMS "sun/security/pkcs11/wrapper/CK_SKIPJACK_RELAYX_PARAMS"
-#define CLASS_KEY_WRAP_SET_OAEP_PARAMS "sun/security/pkcs11/wrapper/CK_KEY_WRAP_SET_OAEP_PARAMS"
-#define CLASS_KEY_DERIVATION_STRING_DATA "sun/security/pkcs11/wrapper/CK_KEY_DERIVATION_STRING_DATA"
-*/
-
-#define CLASS_SSL3_RANDOM_DATA "sun/security/pkcs11/wrapper/CK_SSL3_RANDOM_DATA"
-// CLASS_SSL3_RANDOM_DATA is used by CLASS_SSL3_MASTER_KEY_DERIVE_PARAMS
-#define CLASS_SSL3_KEY_MAT_OUT "sun/security/pkcs11/wrapper/CK_SSL3_KEY_MAT_OUT"
-// CLASS_SSL3_KEY_MAT_OUT is used by CLASS_SSL3_KEY_MAT_PARAMS
-#define CLASS_SSL3_MASTER_KEY_DERIVE_PARAMS "sun/security/pkcs11/wrapper/CK_SSL3_MASTER_KEY_DERIVE_PARAMS"
-#define CLASS_SSL3_KEY_MAT_PARAMS "sun/security/pkcs11/wrapper/CK_SSL3_KEY_MAT_PARAMS"
-#define CLASS_TLS_PRF_PARAMS "sun/security/pkcs11/wrapper/CK_TLS_PRF_PARAMS"
-#define CLASS_AES_CTR_PARAMS "sun/security/pkcs11/wrapper/CK_AES_CTR_PARAMS"
-
-/* function to convert a PKCS#11 return value other than CK_OK into a Java Exception
- * or to throw a PKCS11RuntimeException
- */
-
-jlong ckAssertReturnValueOK(JNIEnv *env, CK_RV returnValue);
-void throwOutOfMemoryError(JNIEnv *env, const char *message);
-void throwNullPointerException(JNIEnv *env, const char *message);
-void throwIOException(JNIEnv *env, const char *message);
-void throwPKCS11RuntimeException(JNIEnv *env, const char *message);
-void throwDisconnectedRuntimeException(JNIEnv *env);
-
-/* function to free CK_ATTRIBUTE array
- */
-void freeCKAttributeArray(CK_ATTRIBUTE_PTR attrPtr, int len);
-
-/* funktions to convert Java arrays to a CK-type array and the array length */
-
-void jBooleanArrayToCKBBoolArray(JNIEnv *env, const jbooleanArray jArray, CK_BBOOL **ckpArray, CK_ULONG_PTR ckLength);
-void jByteArrayToCKByteArray(JNIEnv *env, const jbyteArray jArray, CK_BYTE_PTR *ckpArray, CK_ULONG_PTR ckLength);
-void jLongArrayToCKULongArray(JNIEnv *env, const jlongArray jArray, CK_ULONG_PTR *ckpArray, CK_ULONG_PTR ckLength);
-void jCharArrayToCKCharArray(JNIEnv *env, const jcharArray jArray, CK_CHAR_PTR *ckpArray, CK_ULONG_PTR ckLength);
-void jCharArrayToCKUTF8CharArray(JNIEnv *env, const jcharArray jArray, CK_UTF8CHAR_PTR *ckpArray, CK_ULONG_PTR ckLength);
-void jStringToCKUTF8CharArray(JNIEnv *env, const jstring jArray, CK_UTF8CHAR_PTR *ckpArray, CK_ULONG_PTR ckpLength);
-void jAttributeArrayToCKAttributeArray(JNIEnv *env, jobjectArray jAArray, CK_ATTRIBUTE_PTR *ckpArray, CK_ULONG_PTR ckpLength);
-/*void jObjectArrayToCKVoidPtrArray(JNIEnv *env, const jobjectArray jArray, CK_VOID_PTR_PTR ckpArray, CK_ULONG_PTR ckpLength); */
-
-
-/* funktions to convert a CK-type array and the array length to a Java array */
-
-jbyteArray ckByteArrayToJByteArray(JNIEnv *env, const CK_BYTE_PTR ckpArray, CK_ULONG ckLength);
-jlongArray ckULongArrayToJLongArray(JNIEnv *env, const CK_ULONG_PTR ckpArray, CK_ULONG ckLength);
-jcharArray ckCharArrayToJCharArray(JNIEnv *env, const CK_CHAR_PTR ckpArray, CK_ULONG length);
-jcharArray ckUTF8CharArrayToJCharArray(JNIEnv *env, const CK_UTF8CHAR_PTR ckpArray, CK_ULONG ckLength);
-
-
-/* funktions to convert a CK-type structure or a pointer to a CK-value to a Java object */
-
-jobject ckBBoolPtrToJBooleanObject(JNIEnv *env, const CK_BBOOL* ckpValue);
-jobject ckULongPtrToJLongObject(JNIEnv *env, const CK_ULONG_PTR ckpValue);
-jobject ckDatePtrToJDateObject(JNIEnv *env, const CK_DATE *ckpValue);
-jobject ckVersionPtrToJVersion(JNIEnv *env, const CK_VERSION_PTR ckpVersion);
-jobject ckSessionInfoPtrToJSessionInfo(JNIEnv *env, const CK_SESSION_INFO_PTR ckpSessionInfo);
-jobject ckAttributePtrToJAttribute(JNIEnv *env, const CK_ATTRIBUTE_PTR ckpAttribute);
-
-
-/* funktion to convert the CK-value used by the CK_ATTRIBUTE structure to a Java object */
-
-jobject ckAttributeValueToJObject(JNIEnv *env, const CK_ATTRIBUTE_PTR ckpAttribute);
-
-
-/* funktions to convert a Java object to a CK-type structure or a pointer to a CK-value */
-
-CK_BBOOL* jBooleanObjectToCKBBoolPtr(JNIEnv *env, jobject jObject);
-CK_BYTE_PTR jByteObjectToCKBytePtr(JNIEnv *env, jobject jObject);
-CK_ULONG* jIntegerObjectToCKULongPtr(JNIEnv *env, jobject jObject);
-CK_ULONG* jLongObjectToCKULongPtr(JNIEnv *env, jobject jObject);
-CK_CHAR_PTR jCharObjectToCKCharPtr(JNIEnv *env, jobject jObject);
-CK_VERSION_PTR jVersionToCKVersionPtr(JNIEnv *env, jobject jVersion);
-CK_DATE * jDateObjectPtrToCKDatePtr(JNIEnv *env, jobject jDate);
-CK_ATTRIBUTE jAttributeToCKAttribute(JNIEnv *env, jobject jAttribute);
-/*CK_MECHANISM jMechanismToCKMechanism(JNIEnv *env, jobject jMechanism);*/
-void jMechanismToCKMechanism(JNIEnv *env, jobject jMechanism, CK_MECHANISM_PTR ckMechanismPtr);
-
-
-/* funktions to convert Java objects used by the Mechanism and Attribute class to a CK-type structure */
-
-void jObjectToPrimitiveCKObjectPtrPtr(JNIEnv *env, jobject jObject, CK_VOID_PTR *ckpObjectPtr, CK_ULONG *pLength);
-void jMechanismParameterToCKMechanismParameter(JNIEnv *env, jobject jParam, CK_VOID_PTR *ckpParamPtr, CK_ULONG *ckpLength);
-
-
-/* functions to convert a specific Java mechanism parameter object to a CK-mechanism parameter structure */
-
-CK_RSA_PKCS_OAEP_PARAMS jRsaPkcsOaepParamToCKRsaPkcsOaepParam(JNIEnv *env, jobject jParam);
-CK_KEA_DERIVE_PARAMS jKeaDeriveParamToCKKeaDeriveParam(JNIEnv *env, jobject jParam);
-CK_RC2_CBC_PARAMS jRc2CbcParamToCKRc2CbcParam(JNIEnv *env, jobject jParam);
-CK_RC2_MAC_GENERAL_PARAMS jRc2MacGeneralParamToCKRc2MacGeneralParam(JNIEnv *env, jobject jParam);
-CK_RC5_PARAMS jRc5ParamToCKRc5Param(JNIEnv *env, jobject jParam);
-CK_RC5_CBC_PARAMS jRc5CbcParamToCKRc5CbcParam(JNIEnv *env, jobject jParam);
-CK_RC5_MAC_GENERAL_PARAMS jRc5MacGeneralParamToCKRc5MacGeneralParam(JNIEnv *env, jobject jParam);
-CK_SKIPJACK_PRIVATE_WRAP_PARAMS jSkipjackPrivateWrapParamToCKSkipjackPrivateWrapParam(JNIEnv *env, jobject jParam);
-CK_SKIPJACK_RELAYX_PARAMS jSkipjackRelayxParamToCKSkipjackRelayxParam(JNIEnv *env, jobject jParam);
-CK_PBE_PARAMS jPbeParamToCKPbeParam(JNIEnv *env, jobject jParam);
-void copyBackPBEInitializationVector(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism);
-CK_PKCS5_PBKD2_PARAMS jPkcs5Pbkd2ParamToCKPkcs5Pbkd2Param(JNIEnv *env, jobject jParam);
-CK_KEY_WRAP_SET_OAEP_PARAMS jKeyWrapSetOaepParamToCKKeyWrapSetOaepParam(JNIEnv *env, jobject jParam);
-void copyBackSetUnwrappedKey(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism);
-CK_SSL3_MASTER_KEY_DERIVE_PARAMS jSsl3MasterKeyDeriveParamToCKSsl3MasterKeyDeriveParam(JNIEnv *env, jobject jParam);
-void copyBackClientVersion(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism);
-CK_SSL3_KEY_MAT_PARAMS jSsl3KeyMatParamToCKSsl3KeyMatParam(JNIEnv *env, jobject jParam);
-void copyBackSSLKeyMatParams(JNIEnv *env, CK_MECHANISM *ckMechanism, jobject jMechanism);
-CK_KEY_DERIVATION_STRING_DATA jKeyDerivationStringDataToCKKeyDerivationStringData(JNIEnv *env, jobject jParam);
-CK_RSA_PKCS_PSS_PARAMS jRsaPkcsPssParamToCKRsaPkcsPssParam(JNIEnv *env, jobject jParam);
-CK_ECDH1_DERIVE_PARAMS jEcdh1DeriveParamToCKEcdh1DeriveParam(JNIEnv *env, jobject jParam);
-CK_ECDH2_DERIVE_PARAMS jEcdh2DeriveParamToCKEcdh2DeriveParam(JNIEnv *env, jobject jParam);
-CK_X9_42_DH1_DERIVE_PARAMS jX942Dh1DeriveParamToCKX942Dh1DeriveParam(JNIEnv *env, jobject jParam);
-CK_X9_42_DH2_DERIVE_PARAMS jX942Dh2DeriveParamToCKX942Dh2DeriveParam(JNIEnv *env, jobject jParam);
-
-
-/* functions to convert the InitArgs object for calling the right Java mutex functions */
-
-CK_C_INITIALIZE_ARGS_PTR makeCKInitArgsAdapter(JNIEnv *env, jobject pInitArgs);
-
-#ifndef NO_CALLBACKS /* if the library should not make callbacks; e.g. no javai.lib or jvm.lib available */
-CK_RV callJCreateMutex(CK_VOID_PTR_PTR ppMutex);
-CK_RV callJDestroyMutex(CK_VOID_PTR pMutex);
-CK_RV callJLockMutex(CK_VOID_PTR pMutex);
-CK_RV callJUnlockMutex(CK_VOID_PTR pMutex);
-#endif /* NO_CALLBACKS */
-
-void putModuleEntry(JNIEnv *env, jobject pkcs11Implementation, ModuleData *moduleData);
-ModuleData * removeModuleEntry(JNIEnv *env, jobject pkcs11Implementation);
-CK_FUNCTION_LIST_PTR getFunctionList(JNIEnv *env, jobject pkcs11Implementation);
-
-/* A structure to encapsulate the required data for a Notify callback */
-struct NotifyEncapsulation {
-
-    /* The object that implements the CK_NOTIFY interface and which should be
-     * notified.
-     */
-    jobject jNotifyObject;
-
-    /* The data object to pass back to the Notify object upon callback. */
-    jobject jApplicationData;
-};
-typedef struct NotifyEncapsulation NotifyEncapsulation;
-
-/* The function for handling notify callbacks. */
-CK_RV notifyCallback(
-    CK_SESSION_HANDLE hSession,     /* the session's handle */
-    CK_NOTIFICATION   event,
-    CK_VOID_PTR       pApplication  /* passed to C_OpenSession */
-);
-
-
-/* A node of the list of notify callbacks. To be able to free the resources after use. */
-struct NotifyListNode {
-
-    /* The handle of the session this notify object is attached to*/
-    CK_SESSION_HANDLE hSession;
-
-    /* Reference to the Notify encapsulation object that was passed to C_OpenSession. */
-    NotifyEncapsulation *notifyEncapsulation;
-
-    /* Pointer to the next node in the list. */
-    struct NotifyListNode *next;
-
-};
-typedef struct NotifyListNode NotifyListNode;
-
-void putNotifyEntry(JNIEnv *env, CK_SESSION_HANDLE hSession, NotifyEncapsulation *notifyEncapsulation);
-NotifyEncapsulation * removeNotifyEntry(JNIEnv *env, CK_SESSION_HANDLE hSession);
-NotifyEncapsulation * removeFirstNotifyEntry(JNIEnv *env);
-
-jobject createLockObject(JNIEnv *env);
-void destroyLockObject(JNIEnv *env, jobject jLockObject);
-
-extern jfieldID pNativeDataID;
-extern jfieldID mech_mechanismID;
-extern jfieldID mech_pParameterID;
-
-extern jclass jByteArrayClass;
-extern jclass jLongClass;
-
-#ifndef NO_CALLBACKS
-extern NotifyListNode *notifyListHead;
-extern jobject notifyListLock;
-
-extern jobject jInitArgsObject;
-extern CK_C_INITIALIZE_ARGS_PTR ckpGlobalInitArgs;
-#endif /* NO_CALLBACKS */
-
-#ifdef P11_MEMORYDEBUG
-#include <stdlib.h>
-
-/* Simple malloc/free dumper */
-void *p11malloc(size_t c, char *file, int line);
-void p11free(void *p, char *file, int line);
-
-/* Use THIS_FILE when it is available. */
-#ifndef THIS_FILE
-    #define THIS_FILE __FILE__
-#endif
-
-#define malloc(c)       (p11malloc((c), THIS_FILE, __LINE__))
-#define free(c)         (p11free((c), THIS_FILE, __LINE__))
-
-#endif
-
-#endif /* _PKCS11WRAPPER_H */