#
# Copyright 2003-2005 Sun Microsystems, Inc.  All Rights Reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.com if you need additional information or
# have any questions.
#

# Define public interface.

SUNWprivate_1.1 {
	global:
		JNI_OnLoad;
		Java_sun_security_pkcs11_wrapper_PKCS11_initializeLibrary;
		Java_sun_security_pkcs11_wrapper_PKCS11_finalizeLibrary;
		Java_sun_security_pkcs11_wrapper_PKCS11_connect;
		Java_sun_security_pkcs11_wrapper_PKCS11_disconnect;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Initialize;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Finalize;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetInfo;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSlotList;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSlotInfo;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetTokenInfo;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetMechanismList;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetMechanismInfo;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1InitToken;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1InitPIN;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetPIN;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1OpenSession;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1CloseSession;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1CloseAllSessions;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetSessionInfo;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetOperationState;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetOperationState;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Login;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Logout;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1CreateObject;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1CopyObject;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DestroyObject;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetObjectSize;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetAttributeValue;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SetAttributeValue;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjectsInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjects;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1FindObjectsFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Encrypt;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1EncryptFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Decrypt;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestSingle;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestKey;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Sign;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignRecoverInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignRecover;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1Verify;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyFinal;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyRecoverInit;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1VerifyRecover;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DigestEncryptUpdate;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptDigestUpdate;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SignEncryptUpdate;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DecryptVerifyUpdate;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateKey;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateKeyPair;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1WrapKey;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1UnwrapKey;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1DeriveKey;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1SeedRandom;
		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GenerateRandom;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1GetFunctionStatus;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1CancelFunction;
#		Java_sun_security_pkcs11_wrapper_PKCS11_C_1WaitForSlotEvent;
		Java_sun_security_pkcs11_Secmod_nssGetLibraryHandle;
		Java_sun_security_pkcs11_Secmod_nssLoadLibrary;
		Java_sun_security_pkcs11_Secmod_nssVersionCheck;
		Java_sun_security_pkcs11_Secmod_nssInit;
		Java_sun_security_pkcs11_Secmod_nssGetModuleList;

	local:
		*;
};
