xref: /onnv-gate/usr/src/lib/pkcs11/pkcs11_tpm/common/tpmtok_int.h (revision 10346:9f0b25e42dc5)
19126SWyllys.Ingersoll@Sun.COM /*
29126SWyllys.Ingersoll@Sun.COM  * The Initial Developer of the Original Code is International
39126SWyllys.Ingersoll@Sun.COM  * Business Machines Corporation. Portions created by IBM
49126SWyllys.Ingersoll@Sun.COM  * Corporation are Copyright(C) 2005 International Business
59126SWyllys.Ingersoll@Sun.COM  * Machines Corporation. All Rights Reserved.
69126SWyllys.Ingersoll@Sun.COM  *
79126SWyllys.Ingersoll@Sun.COM  * This program is free software; you can redistribute it and/or modify
89126SWyllys.Ingersoll@Sun.COM  * it under the terms of the Common Public License as published by
99126SWyllys.Ingersoll@Sun.COM  * IBM Corporation; either version 1 of the License, or(at your option)
109126SWyllys.Ingersoll@Sun.COM  * any later version.
119126SWyllys.Ingersoll@Sun.COM  *
129126SWyllys.Ingersoll@Sun.COM  * This program is distributed in the hope that it will be useful,
139126SWyllys.Ingersoll@Sun.COM  * but WITHOUT ANY WARRANTY; without even the implied warranty of
149126SWyllys.Ingersoll@Sun.COM  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
159126SWyllys.Ingersoll@Sun.COM  * Common Public License for more details.
169126SWyllys.Ingersoll@Sun.COM  *
179126SWyllys.Ingersoll@Sun.COM  * You should have received a copy of the Common Public License
189126SWyllys.Ingersoll@Sun.COM  * along with this program; if not, a copy can be viewed at
199126SWyllys.Ingersoll@Sun.COM  * http://www.opensource.org/licenses/cpl1.0.php.
209126SWyllys.Ingersoll@Sun.COM  */
219126SWyllys.Ingersoll@Sun.COM 
229126SWyllys.Ingersoll@Sun.COM /* (C) COPYRIGHT International Business Machines Corp. 2001, 2002, 2005 */
239126SWyllys.Ingersoll@Sun.COM /*
249126SWyllys.Ingersoll@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
259126SWyllys.Ingersoll@Sun.COM  * Use is subject to license terms.
269126SWyllys.Ingersoll@Sun.COM  */
279126SWyllys.Ingersoll@Sun.COM 
289126SWyllys.Ingersoll@Sun.COM #ifndef _TPMTOK_INT_H
299126SWyllys.Ingersoll@Sun.COM #define	_TPMTOK_INT_H
309126SWyllys.Ingersoll@Sun.COM 
319126SWyllys.Ingersoll@Sun.COM #include <stdio.h>
329126SWyllys.Ingersoll@Sun.COM #include <pthread.h>
339126SWyllys.Ingersoll@Sun.COM #include <string.h>
349126SWyllys.Ingersoll@Sun.COM #include <strings.h>
359126SWyllys.Ingersoll@Sun.COM #include <md5.h>
369126SWyllys.Ingersoll@Sun.COM #include <sha1.h>
379126SWyllys.Ingersoll@Sun.COM #include <limits.h>
389126SWyllys.Ingersoll@Sun.COM #include <syslog.h>
399126SWyllys.Ingersoll@Sun.COM #include <errno.h>
409126SWyllys.Ingersoll@Sun.COM #include <sys/types.h>
419126SWyllys.Ingersoll@Sun.COM #include <sys/stat.h>
429126SWyllys.Ingersoll@Sun.COM #include <sys/param.h>
439126SWyllys.Ingersoll@Sun.COM #include <sys/byteorder.h>
449126SWyllys.Ingersoll@Sun.COM #include <security/cryptoki.h>
459126SWyllys.Ingersoll@Sun.COM 
469126SWyllys.Ingersoll@Sun.COM #include <tss/platform.h>
479126SWyllys.Ingersoll@Sun.COM #include <tss/tss_defines.h>
489126SWyllys.Ingersoll@Sun.COM #include <tss/tss_typedef.h>
499126SWyllys.Ingersoll@Sun.COM #include <tss/tss_structs.h>
509126SWyllys.Ingersoll@Sun.COM #include <tss/tspi.h>
519126SWyllys.Ingersoll@Sun.COM 
529126SWyllys.Ingersoll@Sun.COM #define	VERSION_MAJOR 2
539126SWyllys.Ingersoll@Sun.COM #define	VERSION_MINOR 1
549126SWyllys.Ingersoll@Sun.COM 
559126SWyllys.Ingersoll@Sun.COM #define	MAX_SESSION_COUNT	64
569126SWyllys.Ingersoll@Sun.COM #define	MAX_PIN_LEN	256
579126SWyllys.Ingersoll@Sun.COM #define	MIN_PIN_LEN	1
589126SWyllys.Ingersoll@Sun.COM 
599126SWyllys.Ingersoll@Sun.COM #define	MAX_SLOT_ID	10
609126SWyllys.Ingersoll@Sun.COM 
619126SWyllys.Ingersoll@Sun.COM #ifndef MIN
629126SWyllys.Ingersoll@Sun.COM #define	MIN(a, b)  ((a) < (b) ? (a) : (b))
639126SWyllys.Ingersoll@Sun.COM #endif
649126SWyllys.Ingersoll@Sun.COM 
659126SWyllys.Ingersoll@Sun.COM #define	MODE_COPY	(1 << 0)
669126SWyllys.Ingersoll@Sun.COM #define	MODE_CREATE	(1 << 1)
679126SWyllys.Ingersoll@Sun.COM #define	MODE_KEYGEN	(1 << 2)
689126SWyllys.Ingersoll@Sun.COM #define	MODE_MODIFY	(1 << 3)
699126SWyllys.Ingersoll@Sun.COM #define	MODE_DERIVE	(1 << 4)
709126SWyllys.Ingersoll@Sun.COM #define	MODE_UNWRAP	(1 << 5)
719126SWyllys.Ingersoll@Sun.COM 
729126SWyllys.Ingersoll@Sun.COM // RSA block formatting types
739126SWyllys.Ingersoll@Sun.COM //
749126SWyllys.Ingersoll@Sun.COM #define	PKCS_BT_1	1
759126SWyllys.Ingersoll@Sun.COM #define	PKCS_BT_2	2
769126SWyllys.Ingersoll@Sun.COM 
779126SWyllys.Ingersoll@Sun.COM #define	OP_ENCRYPT_INIT 1
789126SWyllys.Ingersoll@Sun.COM #define	OP_DECRYPT_INIT 2
799126SWyllys.Ingersoll@Sun.COM #define	OP_WRAP		3
809126SWyllys.Ingersoll@Sun.COM #define	OP_UNWRAP	4
819126SWyllys.Ingersoll@Sun.COM #define	OP_SIGN_INIT	5
829126SWyllys.Ingersoll@Sun.COM #define	OP_VERIFY_INIT	6
839126SWyllys.Ingersoll@Sun.COM 
849126SWyllys.Ingersoll@Sun.COM enum {
859126SWyllys.Ingersoll@Sun.COM 	STATE_INVALID = 0,
869126SWyllys.Ingersoll@Sun.COM 	STATE_ENCR,
879126SWyllys.Ingersoll@Sun.COM 	STATE_DECR,
889126SWyllys.Ingersoll@Sun.COM 	STATE_DIGEST,
899126SWyllys.Ingersoll@Sun.COM 	STATE_SIGN,
909126SWyllys.Ingersoll@Sun.COM 	STATE_VERIFY
919126SWyllys.Ingersoll@Sun.COM };
929126SWyllys.Ingersoll@Sun.COM 
939126SWyllys.Ingersoll@Sun.COM #define	SHA1_BLOCK_SIZE 64
949126SWyllys.Ingersoll@Sun.COM #define	SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1)
959126SWyllys.Ingersoll@Sun.COM 
969126SWyllys.Ingersoll@Sun.COM #define	RSA_BLOCK_SIZE 256
979126SWyllys.Ingersoll@Sun.COM 
989126SWyllys.Ingersoll@Sun.COM #ifndef PATH_MAX
999126SWyllys.Ingersoll@Sun.COM #define	PATH_MAX MAXPATHLEN
1009126SWyllys.Ingersoll@Sun.COM #endif
1019126SWyllys.Ingersoll@Sun.COM 
1029126SWyllys.Ingersoll@Sun.COM #ifndef PACK_DATA
1039126SWyllys.Ingersoll@Sun.COM #define	PACK_DATA
1049126SWyllys.Ingersoll@Sun.COM #endif
1059126SWyllys.Ingersoll@Sun.COM 
1069126SWyllys.Ingersoll@Sun.COM #define	MD5_BLOCK_SIZE  64
1079126SWyllys.Ingersoll@Sun.COM 
1089126SWyllys.Ingersoll@Sun.COM #define	DSA_SIGNATURE_SIZE  40
1099126SWyllys.Ingersoll@Sun.COM 
1109126SWyllys.Ingersoll@Sun.COM #define	DEFAULT_SO_PIN  "87654321"
1119126SWyllys.Ingersoll@Sun.COM 
1129126SWyllys.Ingersoll@Sun.COM typedef enum {
1139126SWyllys.Ingersoll@Sun.COM 	ALL = 1,
1149126SWyllys.Ingersoll@Sun.COM 	PRIVATE,
1159126SWyllys.Ingersoll@Sun.COM 	PUBLIC
1169126SWyllys.Ingersoll@Sun.COM } SESS_OBJ_TYPE;
1179126SWyllys.Ingersoll@Sun.COM 
1189126SWyllys.Ingersoll@Sun.COM typedef struct _DL_NODE
1199126SWyllys.Ingersoll@Sun.COM {
1209126SWyllys.Ingersoll@Sun.COM 	struct _DL_NODE	*next;
1219126SWyllys.Ingersoll@Sun.COM 	struct _DL_NODE	*prev;
1229126SWyllys.Ingersoll@Sun.COM 	void  *data;
1239126SWyllys.Ingersoll@Sun.COM } DL_NODE;
1249126SWyllys.Ingersoll@Sun.COM 
1259126SWyllys.Ingersoll@Sun.COM #define	TOKEN_DATA_FILE	"token.dat"
1269126SWyllys.Ingersoll@Sun.COM #define	TOKEN_OBJ_DIR	"objects"
1279126SWyllys.Ingersoll@Sun.COM #define	TOKEN_OBJ_INDEX_FILE "obj.idx"
1289126SWyllys.Ingersoll@Sun.COM 
1299126SWyllys.Ingersoll@Sun.COM #define	TPMTOK_UUID_INDEX_FILENAME "uuids.idx"
1309126SWyllys.Ingersoll@Sun.COM 
1319126SWyllys.Ingersoll@Sun.COM /*
1329126SWyllys.Ingersoll@Sun.COM  * Filenames used to store migration data.
1339126SWyllys.Ingersoll@Sun.COM  */
1349126SWyllys.Ingersoll@Sun.COM #define	SO_MAKEY_FILENAME	"so_makey.dat"
1359126SWyllys.Ingersoll@Sun.COM #define	USER_MAKEY_FILENAME	"user_makey.dat"
1369126SWyllys.Ingersoll@Sun.COM #define	SO_KEYBLOB_FILENAME	"so_blob.dat"
1379126SWyllys.Ingersoll@Sun.COM #define	USER_KEYBLOB_FILENAME	"user_blob.dat"
1389126SWyllys.Ingersoll@Sun.COM 
1399126SWyllys.Ingersoll@Sun.COM #define	__FUNCTION__ __func__
1409126SWyllys.Ingersoll@Sun.COM 
1419126SWyllys.Ingersoll@Sun.COM //
1429126SWyllys.Ingersoll@Sun.COM // Both of the strings below have a length of 32 chars and must be
1439126SWyllys.Ingersoll@Sun.COM // padded with spaces, and non - null terminated.
1449126SWyllys.Ingersoll@Sun.COM //
1459126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_VERSION_MAJOR	2
1469126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_VERSION_MINOR	1
1479126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_MANUFACTURER	"Sun Microsystems, Inc.	  "
1489126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_LIBDESC	    "PKCS#11 Interface for TPM	"
1499126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_LIB_VERSION_MAJOR  1
1509126SWyllys.Ingersoll@Sun.COM #define	PKW_CRYPTOKI_LIB_VERSION_MINOR  0
1519126SWyllys.Ingersoll@Sun.COM #define	PKW_MAX_DEVICES		 10
1529126SWyllys.Ingersoll@Sun.COM 
1539126SWyllys.Ingersoll@Sun.COM #define	MAX_TOK_OBJS  2048
1549126SWyllys.Ingersoll@Sun.COM #define	NUMBER_SLOTS_MANAGED 1
1559126SWyllys.Ingersoll@Sun.COM #define	TPM_SLOTID 1
1569126SWyllys.Ingersoll@Sun.COM 
1579126SWyllys.Ingersoll@Sun.COM /*
1589126SWyllys.Ingersoll@Sun.COM  * CKA_HIDDEN will be used to filter return results on
1599126SWyllys.Ingersoll@Sun.COM  * a C_FindObjects call. Used for objects internal to the
1609126SWyllys.Ingersoll@Sun.COM  * TPM token for management
1619126SWyllys.Ingersoll@Sun.COM  */
1629126SWyllys.Ingersoll@Sun.COM /* custom attributes for the TPM token */
1639126SWyllys.Ingersoll@Sun.COM #define	CKA_HIDDEN	CKA_VENDOR_DEFINED + 0x01
1649126SWyllys.Ingersoll@Sun.COM #define	CKA_IBM_OPAQUE	CKA_VENDOR_DEFINED + 0x02
1659126SWyllys.Ingersoll@Sun.COM /*
1669126SWyllys.Ingersoll@Sun.COM  * CKA_ENC_AUTHDATA will be used to store the encrypted SHA-1
1679126SWyllys.Ingersoll@Sun.COM  * hashes of auth data passed in for TPM keys. The authdata
1689126SWyllys.Ingersoll@Sun.COM  * will be encrypted using either the public
1699126SWyllys.Ingersoll@Sun.COM  * leaf key or the private leaf key
1709126SWyllys.Ingersoll@Sun.COM  */
1719126SWyllys.Ingersoll@Sun.COM #define	CKA_ENC_AUTHDATA CKA_VENDOR_DEFINED + 0x03
1729126SWyllys.Ingersoll@Sun.COM 
1739126SWyllys.Ingersoll@Sun.COM /* custom return codes for the TPM token */
1749126SWyllys.Ingersoll@Sun.COM #define	CKR_KEY_NOT_FOUND	CKR_VENDOR_DEFINED + 0x01
1759126SWyllys.Ingersoll@Sun.COM #define	CKR_FILE_NOT_FOUND	CKR_VENDOR_DEFINED + 0x02
1769126SWyllys.Ingersoll@Sun.COM 
1779126SWyllys.Ingersoll@Sun.COM typedef struct {
1789126SWyllys.Ingersoll@Sun.COM 	CK_SLOT_ID  slotID;
1799126SWyllys.Ingersoll@Sun.COM 	CK_SESSION_HANDLE  sessionh;
1809126SWyllys.Ingersoll@Sun.COM } ST_SESSION_T;
1819126SWyllys.Ingersoll@Sun.COM 
1829126SWyllys.Ingersoll@Sun.COM typedef ST_SESSION_T ST_SESSION_HANDLE;
1839126SWyllys.Ingersoll@Sun.COM 
1849126SWyllys.Ingersoll@Sun.COM typedef struct {
1859126SWyllys.Ingersoll@Sun.COM 	void *Previous;
1869126SWyllys.Ingersoll@Sun.COM 	void *Next;
1879126SWyllys.Ingersoll@Sun.COM 	CK_SLOT_ID   SltId;
1889126SWyllys.Ingersoll@Sun.COM 	CK_SESSION_HANDLE  RealHandle;
1899126SWyllys.Ingersoll@Sun.COM } Session_Struct_t;
1909126SWyllys.Ingersoll@Sun.COM 
1919126SWyllys.Ingersoll@Sun.COM typedef Session_Struct_t *SessStructP;
1929126SWyllys.Ingersoll@Sun.COM 
1939126SWyllys.Ingersoll@Sun.COM typedef struct {
1949126SWyllys.Ingersoll@Sun.COM 	pid_t Pid;
1959126SWyllys.Ingersoll@Sun.COM 	pthread_mutex_t  ProcMutex;
1969126SWyllys.Ingersoll@Sun.COM 	Session_Struct_t *SessListBeg;
1979126SWyllys.Ingersoll@Sun.COM 	Session_Struct_t *SessListEnd;
1989126SWyllys.Ingersoll@Sun.COM 	pthread_mutex_t  SessListMutex;
1999126SWyllys.Ingersoll@Sun.COM } API_Proc_Struct_t;
2009126SWyllys.Ingersoll@Sun.COM 
2019126SWyllys.Ingersoll@Sun.COM 
2029126SWyllys.Ingersoll@Sun.COM 
2039126SWyllys.Ingersoll@Sun.COM 
2049126SWyllys.Ingersoll@Sun.COM enum {
2059126SWyllys.Ingersoll@Sun.COM 	PRF_DUMMYFUNCTION = 1,
2069126SWyllys.Ingersoll@Sun.COM 	PRF_FCVFUNCTION,
2079126SWyllys.Ingersoll@Sun.COM 	PRF_INITIALIZE,
2089126SWyllys.Ingersoll@Sun.COM 	PRF_FINALIZE,
2099126SWyllys.Ingersoll@Sun.COM 	PRF_GETINFO,
2109126SWyllys.Ingersoll@Sun.COM 	PRF_GETFUNCTIONLIST,
2119126SWyllys.Ingersoll@Sun.COM 	PRF_GETSLOTLIST,
2129126SWyllys.Ingersoll@Sun.COM 	PRF_GETSLOTINFO,
2139126SWyllys.Ingersoll@Sun.COM 	PRF_GETTOKENINFO,
2149126SWyllys.Ingersoll@Sun.COM 	PRF_GETMECHLIST,
2159126SWyllys.Ingersoll@Sun.COM 	PRF_GETMECHINFO,
2169126SWyllys.Ingersoll@Sun.COM 	PRF_INITTOKEN,
2179126SWyllys.Ingersoll@Sun.COM 	PRF_INITPIN,
2189126SWyllys.Ingersoll@Sun.COM 	PRF_SETPIN,
2199126SWyllys.Ingersoll@Sun.COM 	PRF_OPENSESSION,
2209126SWyllys.Ingersoll@Sun.COM 	PRF_CLOSESESSION,
2219126SWyllys.Ingersoll@Sun.COM 	PRF_CLOSEALLSESSIONS,
2229126SWyllys.Ingersoll@Sun.COM 	PRF_GETSESSIONINFO,
2239126SWyllys.Ingersoll@Sun.COM 	PRF_GETOPERATIONSTATE,
2249126SWyllys.Ingersoll@Sun.COM 	PRF_SETOPERATIONSTATE,
2259126SWyllys.Ingersoll@Sun.COM 	PRF_LOGIN,
2269126SWyllys.Ingersoll@Sun.COM 	PRF_LOGOUT,
2279126SWyllys.Ingersoll@Sun.COM 	PRF_CREATEOBJECT,
2289126SWyllys.Ingersoll@Sun.COM 	PRF_COPYOBJECT,
2299126SWyllys.Ingersoll@Sun.COM 	PRF_DESTROYOBJECT,
2309126SWyllys.Ingersoll@Sun.COM 	PRF_GETOBJECTSIZE,
2319126SWyllys.Ingersoll@Sun.COM 	PRF_GETATTRIBUTEVALUE,
2329126SWyllys.Ingersoll@Sun.COM 	PRF_SETATTRIBUTEVALUE,
2339126SWyllys.Ingersoll@Sun.COM 	PRF_FINDOBJECTSINIT,
2349126SWyllys.Ingersoll@Sun.COM 	PRF_FINDOBJECTS,
2359126SWyllys.Ingersoll@Sun.COM 	PRF_FINDOBJECTSFINAL,
2369126SWyllys.Ingersoll@Sun.COM 	PRF_ENCRYPTINIT,
2379126SWyllys.Ingersoll@Sun.COM 	PRF_ENCRYPT,
2389126SWyllys.Ingersoll@Sun.COM 	PRF_ENCRYPTUPDATE,
2399126SWyllys.Ingersoll@Sun.COM 	PRF_ENCRYPTFINAL,
2409126SWyllys.Ingersoll@Sun.COM 	PRF_DECRYPTINIT,
2419126SWyllys.Ingersoll@Sun.COM 	PRF_DECRYPT,
2429126SWyllys.Ingersoll@Sun.COM 	PRF_DECRYPTUPDATE,
2439126SWyllys.Ingersoll@Sun.COM 	PRF_DECRYPTFINAL,
2449126SWyllys.Ingersoll@Sun.COM 	PRF_DIGESTINIT,
2459126SWyllys.Ingersoll@Sun.COM 	PRF_DIGEST,
2469126SWyllys.Ingersoll@Sun.COM 	PRF_DIGESTUPDATE,
2479126SWyllys.Ingersoll@Sun.COM 	PRF_DIGESTKEY,
2489126SWyllys.Ingersoll@Sun.COM 	PRF_DIGESTFINAL,
2499126SWyllys.Ingersoll@Sun.COM 	PRF_SIGNINIT,
2509126SWyllys.Ingersoll@Sun.COM 	PRF_SIGN,
2519126SWyllys.Ingersoll@Sun.COM 	PRF_SIGNUPDATE,
2529126SWyllys.Ingersoll@Sun.COM 	PRF_SIGNFINAL,
2539126SWyllys.Ingersoll@Sun.COM 	PRF_SIGNRECOVERINIT,
2549126SWyllys.Ingersoll@Sun.COM 	PRF_SIGNRECOVER,
2559126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFYINIT,
2569126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFY,
2579126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFYUPDATE,
2589126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFYFINAL,
2599126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFYRECOVERINIT,
2609126SWyllys.Ingersoll@Sun.COM 	PRF_VERIFYRECOVER,
2619126SWyllys.Ingersoll@Sun.COM 	PRF_GENKEY,
2629126SWyllys.Ingersoll@Sun.COM 	PRF_GENKEYPAIR,
2639126SWyllys.Ingersoll@Sun.COM 	PRF_WRAPKEY,
2649126SWyllys.Ingersoll@Sun.COM 	PRF_UNWRAPKEY,
2659126SWyllys.Ingersoll@Sun.COM 	PRF_DERIVEKEY,
2669126SWyllys.Ingersoll@Sun.COM 	PRF_GENRND,
2679126SWyllys.Ingersoll@Sun.COM 	PRF_LASTENTRY
2689126SWyllys.Ingersoll@Sun.COM };
2699126SWyllys.Ingersoll@Sun.COM 
2709126SWyllys.Ingersoll@Sun.COM typedef struct _ENCR_DECR_CONTEXT
2719126SWyllys.Ingersoll@Sun.COM {
2729126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE  key;
2739126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM mech;
2749126SWyllys.Ingersoll@Sun.COM 	CK_BYTE	  *context;
2759126SWyllys.Ingersoll@Sun.COM 	CK_ULONG  context_len;
2769126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL  multi;
2779126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL  active;
2789126SWyllys.Ingersoll@Sun.COM } ENCR_DECR_CONTEXT;
2799126SWyllys.Ingersoll@Sun.COM 
2809126SWyllys.Ingersoll@Sun.COM typedef struct _DIGEST_CONTEXT
2819126SWyllys.Ingersoll@Sun.COM {
2829126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM   mech;
2839126SWyllys.Ingersoll@Sun.COM 	union {
2849126SWyllys.Ingersoll@Sun.COM 		MD5_CTX *md5ctx;
2859126SWyllys.Ingersoll@Sun.COM 		SHA1_CTX *sha1ctx;
2869126SWyllys.Ingersoll@Sun.COM 		void *ref; /* reference ptr for the union */
2879126SWyllys.Ingersoll@Sun.COM 	} context;
2889126SWyllys.Ingersoll@Sun.COM 	CK_ULONG context_len;
2899126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL multi;
2909126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL active;
2919126SWyllys.Ingersoll@Sun.COM } DIGEST_CONTEXT;
2929126SWyllys.Ingersoll@Sun.COM 
2939126SWyllys.Ingersoll@Sun.COM typedef struct _SIGN_VERIFY_CONTEXT
2949126SWyllys.Ingersoll@Sun.COM {
2959126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE key;
2969126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM	mech;	// current sign mechanism
2979126SWyllys.Ingersoll@Sun.COM 	void	 *context;  // temporary work area
2989126SWyllys.Ingersoll@Sun.COM 	CK_ULONG context_len;
2999126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL multi;    // is this a multi - part operation?
3009126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL recover;  // are we in recover mode?
3019126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL active;
3029126SWyllys.Ingersoll@Sun.COM } SIGN_VERIFY_CONTEXT;
3039126SWyllys.Ingersoll@Sun.COM 
3049126SWyllys.Ingersoll@Sun.COM typedef struct _SESSION
3059126SWyllys.Ingersoll@Sun.COM {
3069126SWyllys.Ingersoll@Sun.COM 	CK_SESSION_HANDLE    handle;
3079126SWyllys.Ingersoll@Sun.COM 	CK_SESSION_INFO	session_info;
3089126SWyllys.Ingersoll@Sun.COM 
3099126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE    *find_list;	// array of CK_OBJECT_HANDLE
3109126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	find_count;    // # handles in the list
3119126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	find_len;	// max # of handles in the list
3129126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	find_idx;	// current position
3139126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL	find_active;
3149126SWyllys.Ingersoll@Sun.COM 
3159126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT    encr_ctx;
3169126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT    decr_ctx;
3179126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT	digest_ctx;
3189126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT  sign_ctx;
3199126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT  verify_ctx;
3209126SWyllys.Ingersoll@Sun.COM 
3219126SWyllys.Ingersoll@Sun.COM 	TSS_HCONTEXT	hContext;
3229126SWyllys.Ingersoll@Sun.COM } SESSION;
3239126SWyllys.Ingersoll@Sun.COM 
3249126SWyllys.Ingersoll@Sun.COM typedef struct _TEMPLATE
3259126SWyllys.Ingersoll@Sun.COM {
3269126SWyllys.Ingersoll@Sun.COM 	DL_NODE  *attribute_list;
3279126SWyllys.Ingersoll@Sun.COM } TEMPLATE;
3289126SWyllys.Ingersoll@Sun.COM 
3299126SWyllys.Ingersoll@Sun.COM typedef struct _OBJECT
3309126SWyllys.Ingersoll@Sun.COM {
3319126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_CLASS   class;
3329126SWyllys.Ingersoll@Sun.COM 	CK_BYTE	 name[8];   // for token objects
3339126SWyllys.Ingersoll@Sun.COM 
3349126SWyllys.Ingersoll@Sun.COM 	SESSION	 *session;   // creator; only for session objects
3359126SWyllys.Ingersoll@Sun.COM 	TEMPLATE *template;
3369126SWyllys.Ingersoll@Sun.COM 	CK_ULONG count_hi;  // only significant for token objects
3379126SWyllys.Ingersoll@Sun.COM 	CK_ULONG count_lo;  // only significant for token objects
3389126SWyllys.Ingersoll@Sun.COM 	CK_ULONG index;
3399126SWyllys.Ingersoll@Sun.COM } OBJECT;
3409126SWyllys.Ingersoll@Sun.COM 
3419126SWyllys.Ingersoll@Sun.COM typedef struct _OBJECT_MAP
3429126SWyllys.Ingersoll@Sun.COM {
3439126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE	handle;
3449126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL is_private;
3459126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL is_session_obj;
3469126SWyllys.Ingersoll@Sun.COM 	SESSION	 *session;
3479126SWyllys.Ingersoll@Sun.COM 	OBJECT   *ptr;
3489126SWyllys.Ingersoll@Sun.COM } OBJECT_MAP;
3499126SWyllys.Ingersoll@Sun.COM 
3509126SWyllys.Ingersoll@Sun.COM typedef struct _ATTRIBUTE_PARSE_LIST
3519126SWyllys.Ingersoll@Sun.COM {
3529126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_TYPE type;
3539126SWyllys.Ingersoll@Sun.COM 	void		*ptr;
3549126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	  len;
3559126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL	  found;
3569126SWyllys.Ingersoll@Sun.COM } ATTRIBUTE_PARSE_LIST;
3579126SWyllys.Ingersoll@Sun.COM 
3589126SWyllys.Ingersoll@Sun.COM typedef struct _OP_STATE_DATA
3599126SWyllys.Ingersoll@Sun.COM {
3609126SWyllys.Ingersoll@Sun.COM 	CK_STATE    session_state;
3619126SWyllys.Ingersoll@Sun.COM 	CK_ULONG    active_operation;
3629126SWyllys.Ingersoll@Sun.COM 	CK_ULONG    data_len;
3639126SWyllys.Ingersoll@Sun.COM } OP_STATE_DATA;
3649126SWyllys.Ingersoll@Sun.COM 
3659126SWyllys.Ingersoll@Sun.COM typedef struct _TWEAK_VEC
3669126SWyllys.Ingersoll@Sun.COM {
3679126SWyllys.Ingersoll@Sun.COM 	int   allow_key_mods;
3689126SWyllys.Ingersoll@Sun.COM } TWEAK_VEC;
3699126SWyllys.Ingersoll@Sun.COM 
3709126SWyllys.Ingersoll@Sun.COM typedef struct _TOKEN_DATA
3719126SWyllys.Ingersoll@Sun.COM {
3729126SWyllys.Ingersoll@Sun.COM 	CK_TOKEN_INFO token_info;
3739126SWyllys.Ingersoll@Sun.COM 	CK_BYTE   user_pin_sha[SHA1_DIGEST_LENGTH];
3749126SWyllys.Ingersoll@Sun.COM 	CK_BYTE   so_pin_sha[SHA1_DIGEST_LENGTH];
3759126SWyllys.Ingersoll@Sun.COM 	CK_BYTE   next_token_object_name[8];
3769126SWyllys.Ingersoll@Sun.COM 	TWEAK_VEC tweak_vector;
3779126SWyllys.Ingersoll@Sun.COM } TOKEN_DATA;
3789126SWyllys.Ingersoll@Sun.COM 
3799126SWyllys.Ingersoll@Sun.COM typedef struct _RSA_DIGEST_CONTEXT {
3809126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT hash_context;
3819126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL	flag;
3829126SWyllys.Ingersoll@Sun.COM } RSA_DIGEST_CONTEXT;
3839126SWyllys.Ingersoll@Sun.COM 
3849126SWyllys.Ingersoll@Sun.COM typedef struct _MECH_LIST_ELEMENT
3859126SWyllys.Ingersoll@Sun.COM {
3869126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM_TYPE    mech_type;
3879126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM_INFO    mech_info;
3889126SWyllys.Ingersoll@Sun.COM } MECH_LIST_ELEMENT;
3899126SWyllys.Ingersoll@Sun.COM 
3909126SWyllys.Ingersoll@Sun.COM struct mech_list_item;
3919126SWyllys.Ingersoll@Sun.COM 
3929126SWyllys.Ingersoll@Sun.COM struct mech_list_item {
3939126SWyllys.Ingersoll@Sun.COM 	struct mech_list_item *next;
3949126SWyllys.Ingersoll@Sun.COM 	MECH_LIST_ELEMENT element;
3959126SWyllys.Ingersoll@Sun.COM };
3969126SWyllys.Ingersoll@Sun.COM 
3979126SWyllys.Ingersoll@Sun.COM struct mech_list_item *
3989126SWyllys.Ingersoll@Sun.COM find_mech_list_item_for_type(CK_MECHANISM_TYPE type,
3999126SWyllys.Ingersoll@Sun.COM 	struct mech_list_item *head);
4009126SWyllys.Ingersoll@Sun.COM 
4019126SWyllys.Ingersoll@Sun.COM typedef struct _TOK_OBJ_ENTRY
4029126SWyllys.Ingersoll@Sun.COM {
4039126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL  deleted;
4049126SWyllys.Ingersoll@Sun.COM 	char	name[8];
4059126SWyllys.Ingersoll@Sun.COM 	CK_ULONG  count_lo;
4069126SWyllys.Ingersoll@Sun.COM 	CK_ULONG  count_hi;
4079126SWyllys.Ingersoll@Sun.COM } TOK_OBJ_ENTRY;
4089126SWyllys.Ingersoll@Sun.COM 
4099126SWyllys.Ingersoll@Sun.COM typedef struct _LW_SHM_TYPE
4109126SWyllys.Ingersoll@Sun.COM {
4119126SWyllys.Ingersoll@Sun.COM 	pthread_mutex_t	mutex;
4129126SWyllys.Ingersoll@Sun.COM 	TOKEN_DATA	nv_token_data;
4139126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	num_priv_tok_obj;
4149126SWyllys.Ingersoll@Sun.COM 	CK_ULONG	num_publ_tok_obj;
4159126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL	priv_loaded;
4169126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL	publ_loaded;
417*10346Swyllys.ingersoll@sun.com 	CK_BBOOL	token_available;
4189126SWyllys.Ingersoll@Sun.COM 	TOK_OBJ_ENTRY  publ_tok_objs[ MAX_TOK_OBJS ];
4199126SWyllys.Ingersoll@Sun.COM 	TOK_OBJ_ENTRY  priv_tok_objs[ MAX_TOK_OBJS ];
4209126SWyllys.Ingersoll@Sun.COM } LW_SHM_TYPE;
4219126SWyllys.Ingersoll@Sun.COM 
4229126SWyllys.Ingersoll@Sun.COM typedef unsigned int CK_ULONG_32;
4239126SWyllys.Ingersoll@Sun.COM typedef CK_ULONG_32 CK_OBJECT_CLASS_32;
4249126SWyllys.Ingersoll@Sun.COM typedef CK_ULONG_32 CK_ATTRIBUTE_TYPE_32;
4259126SWyllys.Ingersoll@Sun.COM 
4269126SWyllys.Ingersoll@Sun.COM typedef struct CK_ATTRIBUTE_32 {
4279126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_TYPE_32 type;
4289126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_32 pValue;
4299126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_32 ulValueLen;
4309126SWyllys.Ingersoll@Sun.COM } CK_ATTRIBUTE_32;
4319126SWyllys.Ingersoll@Sun.COM 
4329126SWyllys.Ingersoll@Sun.COM char *get_tpm_keystore_path();
4339126SWyllys.Ingersoll@Sun.COM 
4349126SWyllys.Ingersoll@Sun.COM struct messages {
4359126SWyllys.Ingersoll@Sun.COM 	char *msg;
4369126SWyllys.Ingersoll@Sun.COM };
4379126SWyllys.Ingersoll@Sun.COM 
4389126SWyllys.Ingersoll@Sun.COM struct token_specific_struct {
4399126SWyllys.Ingersoll@Sun.COM 	CK_BYTE  token_debug_tag[MAXPATHLEN];
4409126SWyllys.Ingersoll@Sun.COM 
4419126SWyllys.Ingersoll@Sun.COM 	CK_RV  (*t_init)(char *, CK_SLOT_ID, TSS_HCONTEXT *);
4429126SWyllys.Ingersoll@Sun.COM 	int  (*t_slot2local)();
4439126SWyllys.Ingersoll@Sun.COM 
4449126SWyllys.Ingersoll@Sun.COM 	CK_RV  (*t_rng)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
4459126SWyllys.Ingersoll@Sun.COM 	CK_RV  (*t_session)(CK_SLOT_ID);
4469453SWyllys.Ingersoll@Sun.COM 	CK_RV  (*t_final)(TSS_HCONTEXT);
4479126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_rsa_decrypt)(TSS_HCONTEXT, CK_BYTE *,
4489126SWyllys.Ingersoll@Sun.COM 		CK_ULONG, CK_BYTE *, CK_ULONG *, OBJECT *);
4499126SWyllys.Ingersoll@Sun.COM 
4509126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_rsa_encrypt)(
4519126SWyllys.Ingersoll@Sun.COM 		TSS_HCONTEXT,
4529126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *, CK_ULONG, CK_BYTE *,
4539126SWyllys.Ingersoll@Sun.COM 		CK_ULONG *, OBJECT *);
4549126SWyllys.Ingersoll@Sun.COM 
4559126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_rsa_sign)(TSS_HCONTEXT,
4569126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *,
4579126SWyllys.Ingersoll@Sun.COM 		CK_ULONG,
4589126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *,
4599126SWyllys.Ingersoll@Sun.COM 		CK_ULONG *,
4609126SWyllys.Ingersoll@Sun.COM 		OBJECT *);
4619126SWyllys.Ingersoll@Sun.COM 
4629126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_rsa_verify)(TSS_HCONTEXT,
4639126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *,
4649126SWyllys.Ingersoll@Sun.COM 		CK_ULONG,
4659126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *,
4669126SWyllys.Ingersoll@Sun.COM 		CK_ULONG,
4679126SWyllys.Ingersoll@Sun.COM 		OBJECT *);
4689126SWyllys.Ingersoll@Sun.COM 
4699126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_rsa_generate_keypair)(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
4709126SWyllys.Ingersoll@Sun.COM 
4719126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_sha_init)(DIGEST_CONTEXT *);
4729126SWyllys.Ingersoll@Sun.COM 
4739126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_sha_update)(
4749126SWyllys.Ingersoll@Sun.COM 		DIGEST_CONTEXT *,
4759126SWyllys.Ingersoll@Sun.COM 		CK_BYTE	*,
4769126SWyllys.Ingersoll@Sun.COM 		CK_ULONG);
4779126SWyllys.Ingersoll@Sun.COM 
4789126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_sha_final)(
4799126SWyllys.Ingersoll@Sun.COM 		DIGEST_CONTEXT *,
4809126SWyllys.Ingersoll@Sun.COM 		CK_BYTE *,
4819126SWyllys.Ingersoll@Sun.COM 		CK_ULONG *);
4829126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_login)(TSS_HCONTEXT, CK_USER_TYPE, CK_BYTE *, CK_ULONG);
4839126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_logout)(TSS_HCONTEXT);
4849126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_init_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
4859126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_set_pin)(ST_SESSION_HANDLE, CK_BYTE *,
4869126SWyllys.Ingersoll@Sun.COM 		CK_ULONG, CK_BYTE *, CK_ULONG);
4879126SWyllys.Ingersoll@Sun.COM 	CK_RV (*t_verify_so_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
4889126SWyllys.Ingersoll@Sun.COM };
4899126SWyllys.Ingersoll@Sun.COM 
4909126SWyllys.Ingersoll@Sun.COM typedef  struct token_specific_struct token_spec_t;
4919126SWyllys.Ingersoll@Sun.COM 
4929126SWyllys.Ingersoll@Sun.COM /*
4939126SWyllys.Ingersoll@Sun.COM  * Global Variables
4949126SWyllys.Ingersoll@Sun.COM  */
4959126SWyllys.Ingersoll@Sun.COM extern void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
4969126SWyllys.Ingersoll@Sun.COM 
4979126SWyllys.Ingersoll@Sun.COM extern struct messages err_msg[];
4989126SWyllys.Ingersoll@Sun.COM 
4999126SWyllys.Ingersoll@Sun.COM extern token_spec_t token_specific;
5009126SWyllys.Ingersoll@Sun.COM extern CK_BBOOL initialized;
5019126SWyllys.Ingersoll@Sun.COM extern char *card_function_names[];
5029126SWyllys.Ingersoll@Sun.COM extern char *total_function_names[];
5039126SWyllys.Ingersoll@Sun.COM 
5049126SWyllys.Ingersoll@Sun.COM extern MECH_LIST_ELEMENT mech_list[];
5059126SWyllys.Ingersoll@Sun.COM extern CK_ULONG mech_list_len;
5069126SWyllys.Ingersoll@Sun.COM 
5079126SWyllys.Ingersoll@Sun.COM extern pthread_mutex_t native_mutex;
5089126SWyllys.Ingersoll@Sun.COM 
5099126SWyllys.Ingersoll@Sun.COM extern void *xproclock;
5109126SWyllys.Ingersoll@Sun.COM 
5119126SWyllys.Ingersoll@Sun.COM extern pthread_mutex_t pkcs_mutex, obj_list_mutex,
5129126SWyllys.Ingersoll@Sun.COM 	sess_list_mutex, login_mutex;
5139126SWyllys.Ingersoll@Sun.COM 
5149126SWyllys.Ingersoll@Sun.COM extern DL_NODE *sess_list;
5159126SWyllys.Ingersoll@Sun.COM extern DL_NODE *sess_obj_list;
5169126SWyllys.Ingersoll@Sun.COM extern DL_NODE *publ_token_obj_list;
5179126SWyllys.Ingersoll@Sun.COM extern DL_NODE *priv_token_obj_list;
5189126SWyllys.Ingersoll@Sun.COM extern DL_NODE *object_map;
5199126SWyllys.Ingersoll@Sun.COM 
5209126SWyllys.Ingersoll@Sun.COM extern CK_BYTE so_pin_md5[MD5_DIGEST_LENGTH];
5219126SWyllys.Ingersoll@Sun.COM extern CK_BYTE user_pin_md5[MD5_DIGEST_LENGTH];
5229126SWyllys.Ingersoll@Sun.COM 
5239126SWyllys.Ingersoll@Sun.COM extern CK_BYTE default_user_pin_sha[SHA1_DIGEST_LENGTH];
5249126SWyllys.Ingersoll@Sun.COM extern CK_BYTE default_so_pin_sha[SHA1_DIGEST_LENGTH];
5259126SWyllys.Ingersoll@Sun.COM extern CK_BYTE default_so_pin_md5[MD5_DIGEST_LENGTH];
5269126SWyllys.Ingersoll@Sun.COM 
5279126SWyllys.Ingersoll@Sun.COM extern LW_SHM_TYPE *global_shm;
5289126SWyllys.Ingersoll@Sun.COM 
5299126SWyllys.Ingersoll@Sun.COM extern TOKEN_DATA *nv_token_data;
5309126SWyllys.Ingersoll@Sun.COM 
5319126SWyllys.Ingersoll@Sun.COM extern CK_ULONG next_object_handle;
5329126SWyllys.Ingersoll@Sun.COM extern CK_ULONG next_session_handle;
5339126SWyllys.Ingersoll@Sun.COM 
5349126SWyllys.Ingersoll@Sun.COM extern CK_STATE global_login_state;
5359126SWyllys.Ingersoll@Sun.COM 
5369126SWyllys.Ingersoll@Sun.COM extern CK_BYTE	ber_AlgIdRSAEncryption[];
5379126SWyllys.Ingersoll@Sun.COM extern CK_ULONG	ber_AlgIdRSAEncryptionLen;
5389126SWyllys.Ingersoll@Sun.COM extern CK_BYTE	ber_rsaEncryption[];
5399126SWyllys.Ingersoll@Sun.COM extern CK_ULONG	ber_rsaEncryptionLen;
5409126SWyllys.Ingersoll@Sun.COM extern CK_BYTE	ber_idDSA[];
5419126SWyllys.Ingersoll@Sun.COM extern CK_ULONG	ber_idDSALen;
5429126SWyllys.Ingersoll@Sun.COM 
5439126SWyllys.Ingersoll@Sun.COM extern CK_BYTE ber_md5WithRSAEncryption[];
5449126SWyllys.Ingersoll@Sun.COM extern CK_ULONG ber_md5WithRSAEncryptionLen;
5459126SWyllys.Ingersoll@Sun.COM extern CK_BYTE ber_sha1WithRSAEncryption[];
5469126SWyllys.Ingersoll@Sun.COM extern CK_ULONG ber_sha1WithRSAEncryptionLen;
5479126SWyllys.Ingersoll@Sun.COM extern CK_BYTE ber_AlgMd5[];
5489126SWyllys.Ingersoll@Sun.COM extern CK_ULONG ber_AlgMd5Len;
5499126SWyllys.Ingersoll@Sun.COM extern CK_BYTE ber_AlgSha1[];
5509126SWyllys.Ingersoll@Sun.COM extern CK_ULONG ber_AlgSha1Len;
5519126SWyllys.Ingersoll@Sun.COM 
5529126SWyllys.Ingersoll@Sun.COM extern CK_C_INITIALIZE_ARGS cinit_args;
5539126SWyllys.Ingersoll@Sun.COM 
5549126SWyllys.Ingersoll@Sun.COM /*
5559126SWyllys.Ingersoll@Sun.COM  * Function Prototypes
5569126SWyllys.Ingersoll@Sun.COM  */
5579126SWyllys.Ingersoll@Sun.COM void *attach_shared_memory();
5589126SWyllys.Ingersoll@Sun.COM void  detach_shared_memory(char *);
5599126SWyllys.Ingersoll@Sun.COM 
5609126SWyllys.Ingersoll@Sun.COM int API_Initialized();
5619126SWyllys.Ingersoll@Sun.COM void Terminate_All_Process_Sessions();
5629126SWyllys.Ingersoll@Sun.COM int API_Register();
5639126SWyllys.Ingersoll@Sun.COM void API_UnRegister();
5649126SWyllys.Ingersoll@Sun.COM 
5659126SWyllys.Ingersoll@Sun.COM void CreateXProcLock(void *);
5669126SWyllys.Ingersoll@Sun.COM int XProcLock(void *);
5679126SWyllys.Ingersoll@Sun.COM int XProcUnLock(void *);
5689126SWyllys.Ingersoll@Sun.COM 
5699126SWyllys.Ingersoll@Sun.COM void _init(void);
5709126SWyllys.Ingersoll@Sun.COM void loginit();
5719126SWyllys.Ingersoll@Sun.COM void logterm();
5729126SWyllys.Ingersoll@Sun.COM void logit(int, char *, ...);
5739126SWyllys.Ingersoll@Sun.COM void AddToSessionList(Session_Struct_t *);
5749126SWyllys.Ingersoll@Sun.COM void RemoveFromSessionList(Session_Struct_t *);
5759126SWyllys.Ingersoll@Sun.COM 
5769126SWyllys.Ingersoll@Sun.COM int Valid_Session(Session_Struct_t *, ST_SESSION_T *);
5779126SWyllys.Ingersoll@Sun.COM 
5789126SWyllys.Ingersoll@Sun.COM CK_BBOOL pin_expired(CK_SESSION_INFO *, CK_FLAGS);
5799126SWyllys.Ingersoll@Sun.COM CK_BBOOL pin_locked(CK_SESSION_INFO *, CK_FLAGS);
5809126SWyllys.Ingersoll@Sun.COM void set_login_flags(CK_USER_TYPE, CK_FLAGS *);
5819126SWyllys.Ingersoll@Sun.COM 
5829126SWyllys.Ingersoll@Sun.COM extern void init_slot_info(TOKEN_DATA *);
5839126SWyllys.Ingersoll@Sun.COM 
5849126SWyllys.Ingersoll@Sun.COM CK_RV update_migration_data(TSS_HCONTEXT,
5859126SWyllys.Ingersoll@Sun.COM 	TSS_HKEY, TSS_HKEY, char *, char *, BYTE *, BYTE *);
5869126SWyllys.Ingersoll@Sun.COM CK_RV token_rng(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
5879126SWyllys.Ingersoll@Sun.COM 
5889126SWyllys.Ingersoll@Sun.COM TSS_RESULT set_public_modulus(TSS_HCONTEXT, TSS_HKEY,
5899126SWyllys.Ingersoll@Sun.COM     unsigned long, unsigned char *);
5909126SWyllys.Ingersoll@Sun.COM TSS_RESULT open_tss_context(TSS_HCONTEXT *);
5919126SWyllys.Ingersoll@Sun.COM CK_RV token_get_tpm_info(TSS_HCONTEXT, TOKEN_DATA *);
5929126SWyllys.Ingersoll@Sun.COM 
5939126SWyllys.Ingersoll@Sun.COM CK_RV clock_set_default_attributes(TEMPLATE *);
5949126SWyllys.Ingersoll@Sun.COM CK_RV clock_check_required_attributes(TEMPLATE *, CK_ULONG);
5959126SWyllys.Ingersoll@Sun.COM CK_RV clock_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
5969126SWyllys.Ingersoll@Sun.COM 
5979126SWyllys.Ingersoll@Sun.COM CK_RV counter_set_default_attributes(TEMPLATE *);
5989126SWyllys.Ingersoll@Sun.COM CK_RV counter_check_required_attributes(TEMPLATE *, CK_ULONG);
5999126SWyllys.Ingersoll@Sun.COM CK_RV counter_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
6009126SWyllys.Ingersoll@Sun.COM 
6019126SWyllys.Ingersoll@Sun.COM CK_RV compute_next_token_obj_name(CK_BYTE *, CK_BYTE *);
6029126SWyllys.Ingersoll@Sun.COM 
6039126SWyllys.Ingersoll@Sun.COM CK_RV save_token_object(TSS_HCONTEXT, OBJECT *);
6049126SWyllys.Ingersoll@Sun.COM CK_RV save_public_token_object(OBJECT *);
6059126SWyllys.Ingersoll@Sun.COM CK_RV save_private_token_object(TSS_HCONTEXT, OBJECT *);
6069126SWyllys.Ingersoll@Sun.COM 
6079126SWyllys.Ingersoll@Sun.COM CK_RV load_public_token_objects(void);
6089126SWyllys.Ingersoll@Sun.COM CK_RV load_private_token_objects(TSS_HCONTEXT);
6099126SWyllys.Ingersoll@Sun.COM 
6109126SWyllys.Ingersoll@Sun.COM CK_RV reload_token_object(TSS_HCONTEXT, OBJECT *);
6119126SWyllys.Ingersoll@Sun.COM 
6129126SWyllys.Ingersoll@Sun.COM CK_RV delete_token_object(OBJECT *);
6139126SWyllys.Ingersoll@Sun.COM 
6149126SWyllys.Ingersoll@Sun.COM CK_RV init_token_data(TSS_HCONTEXT, TOKEN_DATA *);
6159126SWyllys.Ingersoll@Sun.COM CK_RV load_token_data(TSS_HCONTEXT, TOKEN_DATA *);
6169126SWyllys.Ingersoll@Sun.COM CK_RV save_token_data(TOKEN_DATA *);
6179126SWyllys.Ingersoll@Sun.COM void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
6189126SWyllys.Ingersoll@Sun.COM 
6199651SWyllys.Ingersoll@Sun.COM CK_RV compute_sha(CK_BYTE *, CK_ULONG_32, CK_BYTE *);
6209126SWyllys.Ingersoll@Sun.COM 
6219126SWyllys.Ingersoll@Sun.COM CK_RV parity_is_odd(CK_BYTE);
6229126SWyllys.Ingersoll@Sun.COM 
6239126SWyllys.Ingersoll@Sun.COM CK_RV build_attribute(CK_ATTRIBUTE_TYPE,
6249126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG, CK_ATTRIBUTE **);
6259126SWyllys.Ingersoll@Sun.COM 
6269651SWyllys.Ingersoll@Sun.COM CK_RV add_pkcs_padding(CK_BYTE *, UINT32, UINT32, UINT32);
6279126SWyllys.Ingersoll@Sun.COM 
6289651SWyllys.Ingersoll@Sun.COM CK_RV strip_pkcs_padding(CK_BYTE *, UINT32, UINT32 *);
6299126SWyllys.Ingersoll@Sun.COM 
6309126SWyllys.Ingersoll@Sun.COM CK_RV remove_leading_zeros(CK_ATTRIBUTE *);
6319126SWyllys.Ingersoll@Sun.COM 
6329126SWyllys.Ingersoll@Sun.COM CK_RV rsa_pkcs_encrypt(
6339126SWyllys.Ingersoll@Sun.COM 	SESSION *,
6349126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6359126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
6369126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6379126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6389126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6399126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
6409126SWyllys.Ingersoll@Sun.COM 
6419126SWyllys.Ingersoll@Sun.COM CK_RV rsa_pkcs_decrypt(SESSION *,
6429126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6439126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
6449126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6459126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6469126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6479126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
6489126SWyllys.Ingersoll@Sun.COM 
6499126SWyllys.Ingersoll@Sun.COM CK_RV rsa_pkcs_sign(SESSION *,
6509126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6519126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6529126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6539126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6549126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6559126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
6569126SWyllys.Ingersoll@Sun.COM 
6579126SWyllys.Ingersoll@Sun.COM CK_RV rsa_pkcs_verify(SESSION *,
6589126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6599126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6609126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6619126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6629126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
6639126SWyllys.Ingersoll@Sun.COM 
6649126SWyllys.Ingersoll@Sun.COM CK_RV rsa_pkcs_verify_recover(SESSION *,
6659126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6669126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6679126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6689126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6699126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6709126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
6719126SWyllys.Ingersoll@Sun.COM 
6729126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_sign(SESSION *,
6739126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6749126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6759126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6769126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6779126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6789126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
6799126SWyllys.Ingersoll@Sun.COM 
6809126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_verify(SESSION *,
6819126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6829126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6839126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
6849126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6859126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
6869126SWyllys.Ingersoll@Sun.COM 
6879126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_sign_update(SESSION *,
6889126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6899126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6909126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
6919126SWyllys.Ingersoll@Sun.COM 
6929126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_verify_update(SESSION *,
6939126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
6949126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
6959126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
6969126SWyllys.Ingersoll@Sun.COM 
6979126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_sign_final(SESSION *,
6989126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
6999126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7009126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7019126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
7029126SWyllys.Ingersoll@Sun.COM 
7039126SWyllys.Ingersoll@Sun.COM CK_RV rsa_hash_pkcs_verify_final(SESSION *,
7049126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7059126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7069126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
7079126SWyllys.Ingersoll@Sun.COM 
7089126SWyllys.Ingersoll@Sun.COM 
7099126SWyllys.Ingersoll@Sun.COM CK_RV ckm_rsa_key_pair_gen(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
7109126SWyllys.Ingersoll@Sun.COM 
7119126SWyllys.Ingersoll@Sun.COM CK_RV sha1_hash(SESSION *, CK_BBOOL,
7129126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
7139126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG,
7149126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
7159126SWyllys.Ingersoll@Sun.COM 
7169126SWyllys.Ingersoll@Sun.COM CK_RV sha1_hmac_sign(SESSION *, CK_BBOOL,
7179126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7189126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7199126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7209126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7219126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
7229126SWyllys.Ingersoll@Sun.COM 
7239126SWyllys.Ingersoll@Sun.COM CK_RV sha1_hmac_verify(SESSION *,
7249126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7259126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7269126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7279126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7289126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
7299126SWyllys.Ingersoll@Sun.COM 
7309126SWyllys.Ingersoll@Sun.COM CK_RV md5_hash(SESSION *, CK_BBOOL,
7319126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
7329126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG,
7339126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
7349126SWyllys.Ingersoll@Sun.COM 
7359126SWyllys.Ingersoll@Sun.COM CK_RV md5_hmac_sign(SESSION *, CK_BBOOL,
7369126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7379126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7389126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7399126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7409126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
7419126SWyllys.Ingersoll@Sun.COM 
7429126SWyllys.Ingersoll@Sun.COM CK_RV md5_hmac_verify(SESSION *,
7439126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
7449126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7459126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7469126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
7479126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
7489126SWyllys.Ingersoll@Sun.COM 
7499126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_add_as_first(DL_NODE *, void *);
7509126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_add_as_last(DL_NODE *, void *);
7519126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_find(DL_NODE *, void *);
7529126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_get_first(DL_NODE *);
7539126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_get_last(DL_NODE *);
7549126SWyllys.Ingersoll@Sun.COM 	CK_ULONG dlist_length(DL_NODE *);
7559126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_next(DL_NODE *);
7569126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_prev(DL_NODE *);
7579126SWyllys.Ingersoll@Sun.COM void dlist_purge(DL_NODE *);
7589126SWyllys.Ingersoll@Sun.COM DL_NODE *dlist_remove_node(DL_NODE *, DL_NODE *);
7599126SWyllys.Ingersoll@Sun.COM 
7609126SWyllys.Ingersoll@Sun.COM CK_RV attach_shm(void);
7619126SWyllys.Ingersoll@Sun.COM CK_RV detach_shm(void);
7629126SWyllys.Ingersoll@Sun.COM 
7639126SWyllys.Ingersoll@Sun.COM // encryption manager routines
7649126SWyllys.Ingersoll@Sun.COM //
7659126SWyllys.Ingersoll@Sun.COM CK_RV encr_mgr_init(SESSION *,
7669126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
7679126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7689126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
7699126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE);
7709126SWyllys.Ingersoll@Sun.COM 
7719126SWyllys.Ingersoll@Sun.COM CK_RV encr_mgr_cleanup(ENCR_DECR_CONTEXT *);
7729126SWyllys.Ingersoll@Sun.COM 
7739126SWyllys.Ingersoll@Sun.COM CK_RV encr_mgr_encrypt(SESSION *, CK_BBOOL,
7749126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
7759126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG,
7769126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
7779126SWyllys.Ingersoll@Sun.COM 
7789126SWyllys.Ingersoll@Sun.COM CK_RV decr_mgr_init(SESSION *,
7799126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
7809126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
7819126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
7829126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE);
7839126SWyllys.Ingersoll@Sun.COM 
7849126SWyllys.Ingersoll@Sun.COM CK_RV decr_mgr_cleanup(ENCR_DECR_CONTEXT *);
7859126SWyllys.Ingersoll@Sun.COM 
7869126SWyllys.Ingersoll@Sun.COM CK_RV decr_mgr_decrypt(SESSION *, CK_BBOOL,
7879126SWyllys.Ingersoll@Sun.COM 	ENCR_DECR_CONTEXT *,
7889126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG,
7899126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
7909126SWyllys.Ingersoll@Sun.COM 
7919126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_cleanup(DIGEST_CONTEXT *);
7929126SWyllys.Ingersoll@Sun.COM 
7939126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_init(SESSION *,
7949126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
7959126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *);
7969126SWyllys.Ingersoll@Sun.COM 
7979126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_digest(SESSION *, CK_BBOOL,
7989126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
7999126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG,
8009126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
8019126SWyllys.Ingersoll@Sun.COM 
8029126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_digest_update(SESSION *,
8039126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
8049126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG);
8059126SWyllys.Ingersoll@Sun.COM 
8069126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_digest_key(SESSION *,
8079126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
8089126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE);
8099126SWyllys.Ingersoll@Sun.COM 
8109126SWyllys.Ingersoll@Sun.COM CK_RV digest_mgr_digest_final(SESSION *,
8119126SWyllys.Ingersoll@Sun.COM 	DIGEST_CONTEXT *,
8129126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
8139126SWyllys.Ingersoll@Sun.COM 
8149126SWyllys.Ingersoll@Sun.COM CK_RV key_mgr_generate_key_pair(SESSION *,
8159126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
8169126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG,
8179126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG,
8189126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE *,
8199126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE *);
8209126SWyllys.Ingersoll@Sun.COM 
8219126SWyllys.Ingersoll@Sun.COM CK_RV key_mgr_wrap_key(SESSION *,
8229126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8239126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
8249126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE,
8259126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE,
8269126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8279126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
8289126SWyllys.Ingersoll@Sun.COM 
8299126SWyllys.Ingersoll@Sun.COM CK_RV key_mgr_unwrap_key(SESSION *,
8309126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
8319126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
8329126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8339126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8349126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8359126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE,
8369126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE *);
8379126SWyllys.Ingersoll@Sun.COM 
8389126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_init(SESSION *,
8399126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8409126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
8419126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8429126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE);
8439126SWyllys.Ingersoll@Sun.COM 
8449126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
8459126SWyllys.Ingersoll@Sun.COM 
8469126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_sign(SESSION *,
8479126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8489126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8499126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8509126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8519126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8529126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
8539126SWyllys.Ingersoll@Sun.COM 
8549126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_sign_recover(SESSION *,
8559126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8569126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8579126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8589126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8599126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8609126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
8619126SWyllys.Ingersoll@Sun.COM 
8629126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_sign_final(SESSION *,
8639126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8649126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8659126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8669126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
8679126SWyllys.Ingersoll@Sun.COM 
8689126SWyllys.Ingersoll@Sun.COM CK_RV sign_mgr_sign_update(SESSION *,
8699126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8709126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8719126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
8729126SWyllys.Ingersoll@Sun.COM 
8739126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_init(SESSION *,
8749126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8759126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM *,
8769126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8779126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE);
8789126SWyllys.Ingersoll@Sun.COM 
8799126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
8809126SWyllys.Ingersoll@Sun.COM 
8819126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_verify(SESSION *,
8829126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8839126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8849126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8859126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8869126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
8879126SWyllys.Ingersoll@Sun.COM 
8889126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_verify_recover(SESSION *,
8899126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL,
8909126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8919126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8929126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
8939126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8949126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
8959126SWyllys.Ingersoll@Sun.COM 
8969126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_verify_update(SESSION *,
8979126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
8989126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
8999126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
9009126SWyllys.Ingersoll@Sun.COM 
9019126SWyllys.Ingersoll@Sun.COM CK_RV verify_mgr_verify_final(SESSION *,
9029126SWyllys.Ingersoll@Sun.COM 	SIGN_VERIFY_CONTEXT *,
9039126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *,
9049126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
9059126SWyllys.Ingersoll@Sun.COM 
9069126SWyllys.Ingersoll@Sun.COM 
9079126SWyllys.Ingersoll@Sun.COM // session manager routines
9089126SWyllys.Ingersoll@Sun.COM //
9099126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_close_all_sessions(void);
9109126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_close_session(SESSION *);
9119126SWyllys.Ingersoll@Sun.COM SESSION *session_mgr_find(CK_SESSION_HANDLE);
9129126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_login_all(CK_USER_TYPE);
9139126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_logout_all(void);
9149126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_new(CK_ULONG, SESSION **);
9159126SWyllys.Ingersoll@Sun.COM 
9169126SWyllys.Ingersoll@Sun.COM CK_BBOOL session_mgr_readonly_exists(void);
9179126SWyllys.Ingersoll@Sun.COM CK_BBOOL session_mgr_so_session_exists(void);
9189126SWyllys.Ingersoll@Sun.COM CK_BBOOL session_mgr_user_session_exists(void);
9199126SWyllys.Ingersoll@Sun.COM CK_BBOOL session_mgr_public_session_exists(void);
9209126SWyllys.Ingersoll@Sun.COM 
9219126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_get_op_state(SESSION *, CK_BBOOL,
9229126SWyllys.Ingersoll@Sun.COM 	CK_BYTE *, CK_ULONG *);
9239126SWyllys.Ingersoll@Sun.COM 
9249126SWyllys.Ingersoll@Sun.COM CK_RV session_mgr_set_op_state(SESSION *,
9259126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *);
9269126SWyllys.Ingersoll@Sun.COM 
9279126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_add(SESSION *,
9289126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
9299126SWyllys.Ingersoll@Sun.COM 
9309126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_add_to_map(SESSION *, OBJECT *, CK_OBJECT_HANDLE *);
9319126SWyllys.Ingersoll@Sun.COM 
9329126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_add_to_shm(OBJECT *);
9339126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_del_from_shm(OBJECT *);
9349126SWyllys.Ingersoll@Sun.COM 
9359126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_copy(SESSION *,
9369126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE,
9379126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE *);
9389126SWyllys.Ingersoll@Sun.COM 
9399126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_create_final(SESSION *,
9409126SWyllys.Ingersoll@Sun.COM 	OBJECT *, CK_OBJECT_HANDLE *);
9419126SWyllys.Ingersoll@Sun.COM 
9429126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_create_skel(SESSION *,
9439126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG, CK_ULONG,
9449126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_ULONG, OBJECT **);
9459126SWyllys.Ingersoll@Sun.COM 
9469126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_destroy_object(SESSION *, CK_OBJECT_HANDLE);
9479126SWyllys.Ingersoll@Sun.COM 
9489126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_destroy_token_objects(TSS_HCONTEXT);
9499126SWyllys.Ingersoll@Sun.COM 
9509126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_find_in_map1(TSS_HCONTEXT, CK_OBJECT_HANDLE, OBJECT **);
9519126SWyllys.Ingersoll@Sun.COM 
9529126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_find_in_map2(TSS_HCONTEXT, OBJECT *, CK_OBJECT_HANDLE *);
9539126SWyllys.Ingersoll@Sun.COM 
9549126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_find_init(SESSION *, CK_ATTRIBUTE *, CK_ULONG);
9559126SWyllys.Ingersoll@Sun.COM 
9569126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_find_build_list(SESSION *,
9579126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
9589126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
9599126SWyllys.Ingersoll@Sun.COM 	DL_NODE *,
9609126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL public_only);
9619126SWyllys.Ingersoll@Sun.COM 
9629126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_find_final(SESSION *);
9639126SWyllys.Ingersoll@Sun.COM 
9649126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_get_attribute_values(SESSION *,
9659126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE,
9669126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
9679126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
9689126SWyllys.Ingersoll@Sun.COM 
9699126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_get_object_size(TSS_HCONTEXT, CK_OBJECT_HANDLE,
9709126SWyllys.Ingersoll@Sun.COM 	CK_ULONG *);
9719126SWyllys.Ingersoll@Sun.COM 
9729126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_invalidate_handle1(CK_OBJECT_HANDLE handle);
9739126SWyllys.Ingersoll@Sun.COM 
9749126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_invalidate_handle2(OBJECT *);
9759126SWyllys.Ingersoll@Sun.COM 
9769126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_purge_session_objects(SESSION *, SESS_OBJ_TYPE);
9779126SWyllys.Ingersoll@Sun.COM 
9789126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_purge_token_objects(TSS_HCONTEXT);
9799126SWyllys.Ingersoll@Sun.COM 
9809126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_purge_private_token_objects(TSS_HCONTEXT);
9819126SWyllys.Ingersoll@Sun.COM 
9829126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_remove_from_map(CK_OBJECT_HANDLE);
9839126SWyllys.Ingersoll@Sun.COM 
9849126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_restore_obj(CK_BYTE *, OBJECT *);
9859126SWyllys.Ingersoll@Sun.COM 
9869126SWyllys.Ingersoll@Sun.COM CK_RV object_mgr_set_attribute_values(SESSION *,
9879126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE,
9889126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
9899126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
9909126SWyllys.Ingersoll@Sun.COM 
9919126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_mgr_purge_map(SESSION *, SESS_OBJ_TYPE);
9929126SWyllys.Ingersoll@Sun.COM 
9939126SWyllys.Ingersoll@Sun.COM CK_RV object_create(CK_ATTRIBUTE *, CK_ULONG, OBJECT **);
9949126SWyllys.Ingersoll@Sun.COM 
9959126SWyllys.Ingersoll@Sun.COM CK_RV object_create_skel(CK_ATTRIBUTE *,
9969126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
9979126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
9989126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
9999126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
10009126SWyllys.Ingersoll@Sun.COM 	OBJECT **);
10019126SWyllys.Ingersoll@Sun.COM 
10029126SWyllys.Ingersoll@Sun.COM CK_RV object_copy(CK_ATTRIBUTE *,
10039126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
10049126SWyllys.Ingersoll@Sun.COM 	OBJECT *,
10059126SWyllys.Ingersoll@Sun.COM 	OBJECT **);
10069126SWyllys.Ingersoll@Sun.COM 
10079126SWyllys.Ingersoll@Sun.COM CK_RV object_flatten(OBJECT *,
10089126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **,
10099651SWyllys.Ingersoll@Sun.COM 	CK_ULONG_32 *);
10109126SWyllys.Ingersoll@Sun.COM 
10119126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_free(OBJECT *);
10129126SWyllys.Ingersoll@Sun.COM 
10139126SWyllys.Ingersoll@Sun.COM CK_RV object_get_attribute_values(OBJECT *,
10149126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
10159126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
10169126SWyllys.Ingersoll@Sun.COM 
10179126SWyllys.Ingersoll@Sun.COM CK_ULONG object_get_size(OBJECT *);
10189126SWyllys.Ingersoll@Sun.COM 
10199126SWyllys.Ingersoll@Sun.COM CK_RV object_restore(CK_BYTE *,
10209126SWyllys.Ingersoll@Sun.COM 	OBJECT **,
10219126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL replace);
10229126SWyllys.Ingersoll@Sun.COM 
10239126SWyllys.Ingersoll@Sun.COM CK_RV object_set_attribute_values(OBJECT *,
10249126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *,
10259126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
10269126SWyllys.Ingersoll@Sun.COM 
10279126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_is_modifiable(OBJECT *);
10289126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_is_private(OBJECT *);
10299126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_is_public(OBJECT *);
10309126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_is_token_object(OBJECT *);
10319126SWyllys.Ingersoll@Sun.COM CK_BBOOL object_is_session_object(OBJECT *);
10329126SWyllys.Ingersoll@Sun.COM 
10339126SWyllys.Ingersoll@Sun.COM CK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE);
10349126SWyllys.Ingersoll@Sun.COM 
10359126SWyllys.Ingersoll@Sun.COM CK_RV template_add_attributes(TEMPLATE *,
10369126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG);
10379126SWyllys.Ingersoll@Sun.COM 
10389126SWyllys.Ingersoll@Sun.COM CK_RV template_add_default_attributes(TEMPLATE *,
10399126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
10409126SWyllys.Ingersoll@Sun.COM 	CK_ULONG,
10419126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
10429126SWyllys.Ingersoll@Sun.COM 
10439126SWyllys.Ingersoll@Sun.COM CK_BBOOL template_attribute_find(TEMPLATE *,
10449126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_TYPE, CK_ATTRIBUTE **);
10459126SWyllys.Ingersoll@Sun.COM 
10469126SWyllys.Ingersoll@Sun.COM void template_attribute_find_multiple(TEMPLATE *,
10479126SWyllys.Ingersoll@Sun.COM 	ATTRIBUTE_PARSE_LIST *,
10489126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
10499126SWyllys.Ingersoll@Sun.COM 
10509126SWyllys.Ingersoll@Sun.COM CK_BBOOL template_check_exportability(TEMPLATE *, CK_ATTRIBUTE_TYPE type);
10519126SWyllys.Ingersoll@Sun.COM 
10529126SWyllys.Ingersoll@Sun.COM CK_RV template_check_required_attributes(TEMPLATE *,
10539126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_ULONG, CK_ULONG);
10549126SWyllys.Ingersoll@Sun.COM 
10559126SWyllys.Ingersoll@Sun.COM CK_RV template_check_required_base_attributes(TEMPLATE *,
10569126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
10579126SWyllys.Ingersoll@Sun.COM 
10589126SWyllys.Ingersoll@Sun.COM CK_BBOOL template_compare(CK_ATTRIBUTE *,
10599126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, TEMPLATE *);
10609126SWyllys.Ingersoll@Sun.COM 
10619126SWyllys.Ingersoll@Sun.COM CK_RV template_copy(TEMPLATE *, TEMPLATE *);
10629126SWyllys.Ingersoll@Sun.COM 
10639126SWyllys.Ingersoll@Sun.COM CK_RV template_flatten(TEMPLATE *, CK_BYTE *);
10649126SWyllys.Ingersoll@Sun.COM 
10659126SWyllys.Ingersoll@Sun.COM CK_RV template_free(TEMPLATE *);
10669126SWyllys.Ingersoll@Sun.COM 
10679126SWyllys.Ingersoll@Sun.COM CK_BBOOL template_get_class(TEMPLATE *, CK_ULONG *, CK_ULONG *);
10689126SWyllys.Ingersoll@Sun.COM 
10699126SWyllys.Ingersoll@Sun.COM CK_ULONG template_get_count(TEMPLATE *);
10709126SWyllys.Ingersoll@Sun.COM 
10719126SWyllys.Ingersoll@Sun.COM CK_ULONG template_get_size(TEMPLATE *);
10729126SWyllys.Ingersoll@Sun.COM CK_ULONG template_get_compressed_size(TEMPLATE *);
10739126SWyllys.Ingersoll@Sun.COM 
10749126SWyllys.Ingersoll@Sun.COM CK_RV template_set_default_common_attributes(TEMPLATE *);
10759126SWyllys.Ingersoll@Sun.COM 
10769126SWyllys.Ingersoll@Sun.COM CK_RV template_merge(TEMPLATE *, TEMPLATE **);
10779126SWyllys.Ingersoll@Sun.COM 
10789126SWyllys.Ingersoll@Sun.COM CK_RV template_update_attribute(TEMPLATE *, CK_ATTRIBUTE *);
10799126SWyllys.Ingersoll@Sun.COM 
10809126SWyllys.Ingersoll@Sun.COM CK_RV template_unflatten(TEMPLATE **, CK_BYTE *, CK_ULONG);
10819126SWyllys.Ingersoll@Sun.COM 
10829126SWyllys.Ingersoll@Sun.COM CK_RV template_validate_attribute(TEMPLATE *,
10839126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, CK_ULONG);
10849126SWyllys.Ingersoll@Sun.COM 
10859126SWyllys.Ingersoll@Sun.COM CK_RV template_validate_attributes(TEMPLATE *,
10869126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_ULONG, CK_ULONG);
10879126SWyllys.Ingersoll@Sun.COM 
10889126SWyllys.Ingersoll@Sun.COM CK_RV template_validate_base_attribute(TEMPLATE *,
10899126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ULONG);
10909126SWyllys.Ingersoll@Sun.COM 
10919126SWyllys.Ingersoll@Sun.COM 
10929126SWyllys.Ingersoll@Sun.COM // DATA OBJECT ROUTINES
10939126SWyllys.Ingersoll@Sun.COM //
10949126SWyllys.Ingersoll@Sun.COM CK_RV data_object_check_required_attributes(TEMPLATE *, CK_ULONG);
10959126SWyllys.Ingersoll@Sun.COM CK_RV data_object_set_default_attributes(TEMPLATE *, CK_ULONG);
10969126SWyllys.Ingersoll@Sun.COM CK_RV data_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
10979126SWyllys.Ingersoll@Sun.COM 
10989126SWyllys.Ingersoll@Sun.COM // CERTIFICATE ROUTINES
10999126SWyllys.Ingersoll@Sun.COM CK_RV cert_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11009126SWyllys.Ingersoll@Sun.COM 
11019126SWyllys.Ingersoll@Sun.COM CK_RV cert_x509_check_required_attributes(TEMPLATE *, CK_ULONG);
11029126SWyllys.Ingersoll@Sun.COM CK_RV cert_x509_set_default_attributes(TEMPLATE *, CK_ULONG);
11039126SWyllys.Ingersoll@Sun.COM CK_RV cert_x509_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11049126SWyllys.Ingersoll@Sun.COM CK_RV cert_vendor_check_required_attributes(TEMPLATE *, CK_ULONG);
11059126SWyllys.Ingersoll@Sun.COM CK_RV cert_vendor_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11069126SWyllys.Ingersoll@Sun.COM 
11079126SWyllys.Ingersoll@Sun.COM //
11089126SWyllys.Ingersoll@Sun.COM // KEY ROUTINES
11099126SWyllys.Ingersoll@Sun.COM //
11109126SWyllys.Ingersoll@Sun.COM CK_RV key_object_check_required_attributes(TEMPLATE *, CK_ULONG);
11119126SWyllys.Ingersoll@Sun.COM CK_RV key_object_set_default_attributes(TEMPLATE *, CK_ULONG);
11129126SWyllys.Ingersoll@Sun.COM CK_RV key_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11139126SWyllys.Ingersoll@Sun.COM 
11149126SWyllys.Ingersoll@Sun.COM CK_RV publ_key_check_required_attributes(TEMPLATE *, CK_ULONG);
11159126SWyllys.Ingersoll@Sun.COM CK_RV publ_key_set_default_attributes(TEMPLATE *, CK_ULONG);
11169126SWyllys.Ingersoll@Sun.COM CK_RV publ_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11179126SWyllys.Ingersoll@Sun.COM 
11189126SWyllys.Ingersoll@Sun.COM CK_RV priv_key_check_required_attributes(TEMPLATE *, CK_ULONG);
11199126SWyllys.Ingersoll@Sun.COM CK_RV priv_key_set_default_attributes(TEMPLATE *, CK_ULONG);
11209126SWyllys.Ingersoll@Sun.COM CK_RV priv_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG);
11219126SWyllys.Ingersoll@Sun.COM CK_RV priv_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11229126SWyllys.Ingersoll@Sun.COM 
11239126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL secret_key_check_exportability(CK_ATTRIBUTE_TYPE type);
11249126SWyllys.Ingersoll@Sun.COM CK_RV secret_key_check_required_attributes(TEMPLATE *, CK_ULONG);
11259126SWyllys.Ingersoll@Sun.COM CK_RV secret_key_set_default_attributes(TEMPLATE *, CK_ULONG);
11269126SWyllys.Ingersoll@Sun.COM CK_RV secret_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG,
11279126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL fromend);
11289126SWyllys.Ingersoll@Sun.COM CK_RV secret_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *,
11299126SWyllys.Ingersoll@Sun.COM 	CK_ULONG);
11309126SWyllys.Ingersoll@Sun.COM 
11319126SWyllys.Ingersoll@Sun.COM // rsa routines
11329126SWyllys.Ingersoll@Sun.COM //
11339126SWyllys.Ingersoll@Sun.COM CK_RV rsa_publ_check_required_attributes(TEMPLATE *, CK_ULONG);
11349126SWyllys.Ingersoll@Sun.COM CK_RV rsa_publ_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11359126SWyllys.Ingersoll@Sun.COM CK_RV rsa_publ_set_default_attributes(TEMPLATE *, CK_ULONG);
11369126SWyllys.Ingersoll@Sun.COM 	CK_BBOOL rsa_priv_check_exportability(CK_ATTRIBUTE_TYPE type);
11379126SWyllys.Ingersoll@Sun.COM CK_RV rsa_priv_check_required_attributes(TEMPLATE *, CK_ULONG);
11389126SWyllys.Ingersoll@Sun.COM CK_RV rsa_priv_set_default_attributes(TEMPLATE *, CK_ULONG);
11399126SWyllys.Ingersoll@Sun.COM CK_RV rsa_priv_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11409126SWyllys.Ingersoll@Sun.COM CK_RV rsa_priv_wrap_get_data(TEMPLATE *, CK_BBOOL, CK_BYTE **, CK_ULONG *);
11419126SWyllys.Ingersoll@Sun.COM CK_RV rsa_priv_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG);
11429126SWyllys.Ingersoll@Sun.COM 
11439126SWyllys.Ingersoll@Sun.COM // Generic secret key routines
11449126SWyllys.Ingersoll@Sun.COM CK_RV generic_secret_check_required_attributes(TEMPLATE *, CK_ULONG);
11459126SWyllys.Ingersoll@Sun.COM CK_RV generic_secret_set_default_attributes(TEMPLATE *, CK_ULONG);
11469126SWyllys.Ingersoll@Sun.COM CK_RV generic_secret_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
11479126SWyllys.Ingersoll@Sun.COM CK_RV generic_secret_wrap_get_data(TEMPLATE *, CK_BBOOL,
11489126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *);
11499126SWyllys.Ingersoll@Sun.COM 
11509126SWyllys.Ingersoll@Sun.COM CK_RV generic_secret_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG, CK_BBOOL fromend);
11519126SWyllys.Ingersoll@Sun.COM 
11529126SWyllys.Ingersoll@Sun.COM CK_RV tpm_encrypt_data(TSS_HCONTEXT,
11539126SWyllys.Ingersoll@Sun.COM 	TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
11549126SWyllys.Ingersoll@Sun.COM 
11559126SWyllys.Ingersoll@Sun.COM CK_RV tpm_decrypt_data(TSS_HCONTEXT,
11569126SWyllys.Ingersoll@Sun.COM 	TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
11579126SWyllys.Ingersoll@Sun.COM 
11589126SWyllys.Ingersoll@Sun.COM CK_ULONG ber_encode_INTEGER(CK_BBOOL,
11599126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
11609126SWyllys.Ingersoll@Sun.COM 
11619126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_INTEGER(CK_BYTE *,
11629126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_ULONG *);
11639126SWyllys.Ingersoll@Sun.COM 
11649126SWyllys.Ingersoll@Sun.COM CK_RV ber_encode_OCTET_STRING(CK_BBOOL,
11659126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
11669126SWyllys.Ingersoll@Sun.COM 
11679126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_OCTET_STRING(CK_BYTE *,
11689126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_ULONG *);
11699126SWyllys.Ingersoll@Sun.COM 
11709126SWyllys.Ingersoll@Sun.COM CK_RV ber_encode_SEQUENCE(CK_BBOOL,
11719126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
11729126SWyllys.Ingersoll@Sun.COM 
11739126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_SEQUENCE(CK_BYTE *,
11749126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_ULONG *);
11759126SWyllys.Ingersoll@Sun.COM 
11769126SWyllys.Ingersoll@Sun.COM CK_RV ber_encode_PrivateKeyInfo(CK_BBOOL,
11779126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_BYTE *,
11789126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_BYTE *, CK_ULONG);
11799126SWyllys.Ingersoll@Sun.COM 
11809126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_PrivateKeyInfo(CK_BYTE *,
11819126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_BYTE **, CK_ULONG *, CK_BYTE **);
11829126SWyllys.Ingersoll@Sun.COM 
11839126SWyllys.Ingersoll@Sun.COM CK_RV ber_encode_RSAPrivateKey(CK_BBOOL,
11849126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
11859126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
11869126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
11879126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *);
11889126SWyllys.Ingersoll@Sun.COM 
11899126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_RSAPrivateKey(CK_BYTE *,
11909126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
11919126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
11929126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **);
11939126SWyllys.Ingersoll@Sun.COM 
11949126SWyllys.Ingersoll@Sun.COM 
11959126SWyllys.Ingersoll@Sun.COM CK_RV ber_encode_DSAPrivateKey(CK_BBOOL,
11969126SWyllys.Ingersoll@Sun.COM 	CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
11979126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *);
11989126SWyllys.Ingersoll@Sun.COM 
11999126SWyllys.Ingersoll@Sun.COM CK_RV ber_decode_DSAPrivateKey(CK_BYTE *,
12009126SWyllys.Ingersoll@Sun.COM 	CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
12019126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE **, CK_ATTRIBUTE **);
12029126SWyllys.Ingersoll@Sun.COM 
12039126SWyllys.Ingersoll@Sun.COM #define	APPID	"TPM_STDLL"
12049126SWyllys.Ingersoll@Sun.COM 
12059126SWyllys.Ingersoll@Sun.COM /* log to stdout */
12069126SWyllys.Ingersoll@Sun.COM #define	LogMessage(dest, priority, layer, fmt, ...) \
12079126SWyllys.Ingersoll@Sun.COM 	(void) fprintf(dest, "%s %s %s:%d " fmt "\n", (char *)priority, \
12089126SWyllys.Ingersoll@Sun.COM 		(char *)layer, (char *)__FILE__,\
12099126SWyllys.Ingersoll@Sun.COM 		(int)__LINE__, __VA_ARGS__);
12109126SWyllys.Ingersoll@Sun.COM 
12119126SWyllys.Ingersoll@Sun.COM #define	LogMessage1(dest, priority, layer, data) \
12129126SWyllys.Ingersoll@Sun.COM 	(void) fprintf(dest, "%s %s %s:%d %s\n", priority, layer, __FILE__, \
12139126SWyllys.Ingersoll@Sun.COM 	__LINE__, data);
12149126SWyllys.Ingersoll@Sun.COM 
12159126SWyllys.Ingersoll@Sun.COM /* Debug logging */
12169126SWyllys.Ingersoll@Sun.COM #ifdef DEBUG
12179126SWyllys.Ingersoll@Sun.COM #define	LogDebug(fmt, ...) LogMessage(stdout, "LOG_DEBUG", APPID, \
12189126SWyllys.Ingersoll@Sun.COM 	fmt, __VA_ARGS__)
12199126SWyllys.Ingersoll@Sun.COM 
12209126SWyllys.Ingersoll@Sun.COM #define	LogDebug1(data) LogMessage1(stdout, "LOG_DEBUG", APPID, data)
12219126SWyllys.Ingersoll@Sun.COM 
12229126SWyllys.Ingersoll@Sun.COM /* Error logging */
12239126SWyllys.Ingersoll@Sun.COM #define	LogError(fmt, ...) LogMessage(stderr, "LOG_ERR", APPID,\
12249126SWyllys.Ingersoll@Sun.COM 	"ERROR: " fmt, __VA_ARGS__)
12259126SWyllys.Ingersoll@Sun.COM 
12269126SWyllys.Ingersoll@Sun.COM #define	LogError1(data) LogMessage1(stderr, "LOG_ERR", APPID,\
12279126SWyllys.Ingersoll@Sun.COM 	"ERROR: " data)
12289126SWyllys.Ingersoll@Sun.COM 
12299126SWyllys.Ingersoll@Sun.COM /* Warn logging */
12309126SWyllys.Ingersoll@Sun.COM #define	LogWarn(fmt, ...) LogMessage(stdout, "LOG_WARNING", APPID,\
12319126SWyllys.Ingersoll@Sun.COM 	"WARNING: " fmt, __VA_ARGS__)
12329126SWyllys.Ingersoll@Sun.COM 
12339126SWyllys.Ingersoll@Sun.COM #define	LogWarn1(data) LogMessage1(stdout, "LOG_WARNING", APPID,\
12349126SWyllys.Ingersoll@Sun.COM 	"WARNING: " data)
12359126SWyllys.Ingersoll@Sun.COM 
12369126SWyllys.Ingersoll@Sun.COM /* Info Logging */
12379126SWyllys.Ingersoll@Sun.COM #define	LogInfo(fmt, ...) LogMessage(stdout, "LOG_INFO", APPID,\
12389126SWyllys.Ingersoll@Sun.COM 	fmt, __VA_ARGS__)
12399126SWyllys.Ingersoll@Sun.COM 
12409126SWyllys.Ingersoll@Sun.COM #define	LogInfo1(data) LogMessage1(stdout, "LOG_INFO", APPID, data)
12419126SWyllys.Ingersoll@Sun.COM 
12429126SWyllys.Ingersoll@Sun.COM #define	st_err_log(...) LogMessage(stderr, "ST MSG", APPID,\
12439126SWyllys.Ingersoll@Sun.COM 	"", __VA_ARGS__)
12449126SWyllys.Ingersoll@Sun.COM #else
12459126SWyllys.Ingersoll@Sun.COM #define	LogDebug(...)
12469126SWyllys.Ingersoll@Sun.COM #define	LogDebug1(...)
12479126SWyllys.Ingersoll@Sun.COM #define	LogBlob(...)
12489126SWyllys.Ingersoll@Sun.COM #define	LogError(...)
12499126SWyllys.Ingersoll@Sun.COM #define	LogError1(...)
12509126SWyllys.Ingersoll@Sun.COM #define	LogWarn(...)
12519126SWyllys.Ingersoll@Sun.COM #define	LogWarn1(...)
12529126SWyllys.Ingersoll@Sun.COM #define	LogInfo(...)
12539126SWyllys.Ingersoll@Sun.COM #define	LogInfo1(...)
12549126SWyllys.Ingersoll@Sun.COM #define	st_err_log(...)
12559126SWyllys.Ingersoll@Sun.COM #endif
12569126SWyllys.Ingersoll@Sun.COM 
12579126SWyllys.Ingersoll@Sun.COM /*
12589126SWyllys.Ingersoll@Sun.COM  * CK_FUNCTION_LIST is a structure holding a Cryptoki spec
12599126SWyllys.Ingersoll@Sun.COM  * version and pointers of appropriate types to all the
12609126SWyllys.Ingersoll@Sun.COM  * Cryptoki functions
12619126SWyllys.Ingersoll@Sun.COM  */
12629126SWyllys.Ingersoll@Sun.COM 
12639126SWyllys.Ingersoll@Sun.COM /* CK_FUNCTION_LIST is new for v2.0 */
12649126SWyllys.Ingersoll@Sun.COM 
12659126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12669126SWyllys.Ingersoll@Sun.COM 	(CK_PTR ST_C_Initialize)
12679126SWyllys.Ingersoll@Sun.COM 	(void *ppFunctionList, CK_SLOT_ID slotID, CK_CHAR_PTR pCorrelator);
12689126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12699126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Finalize)
12709126SWyllys.Ingersoll@Sun.COM 	(CK_VOID_PTR pReserved);
12719126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12729126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Terminate)();
12739126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12749126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetInfo)
12759126SWyllys.Ingersoll@Sun.COM 	(CK_INFO_PTR pInfo);
12769126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12779126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetFunctionList)
12789126SWyllys.Ingersoll@Sun.COM 	(CK_FUNCTION_LIST_PTR_PTR ppFunctionList);
12799126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12809126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetSlotList)
12819126SWyllys.Ingersoll@Sun.COM 	(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
12829126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusCount);
12839126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12849126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetSlotInfo)
12859126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo);
12869126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12879126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetTokenInfo)
12889126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo);
12899126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12909126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetMechanismList)
12919126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList,
12929126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusCount);
12939126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12949126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetMechanismInfo)
12959126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
12969126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM_INFO_PTR pInfo);
12979126SWyllys.Ingersoll@Sun.COM typedef CK_RV
12989126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_InitToken)
12999126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG usPinLen,
13009126SWyllys.Ingersoll@Sun.COM 	CK_CHAR_PTR pLabel);
13019126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13029126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_InitPIN)
13039126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_CHAR_PTR pPin,
13049126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPinLen);
13059126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13069126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SetPIN)
13079126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_CHAR_PTR pOldPin,
13089126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usOldLen, CK_CHAR_PTR pNewPin,
13099126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usNewLen);
13109126SWyllys.Ingersoll@Sun.COM 
13119126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13129126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_OpenSession)
13139126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID, CK_FLAGS flags,
13149126SWyllys.Ingersoll@Sun.COM 	CK_SESSION_HANDLE_PTR phSession);
13159126SWyllys.Ingersoll@Sun.COM 
13169126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13179126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_CloseSession)
13189126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession);
13199126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13209126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_CloseAllSessions)
13219126SWyllys.Ingersoll@Sun.COM 	(CK_SLOT_ID slotID);
13229126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13239126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetSessionInfo)
13249126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_SESSION_INFO_PTR pInfo);
13259126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13269126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetOperationState)
13279126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
13289126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pulOperationStateLen);
13299126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13309126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SetOperationState)
13319126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
13329126SWyllys.Ingersoll@Sun.COM 	CK_ULONG ulOperationStateLen,
13339126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hEncryptionKey,
13349126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hAuthenticationKey);
13359126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13369126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Login)(ST_SESSION_T hSession,
13379126SWyllys.Ingersoll@Sun.COM 	CK_USER_TYPE userType, CK_CHAR_PTR pPin,
13389126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPinLen);
13399126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13409126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Logout)(ST_SESSION_T hSession);
13419126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13429126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_CreateObject)
13439126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
13449126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject);
13459126SWyllys.Ingersoll@Sun.COM 
13469126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13479126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_CopyObject)
13489126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
13499126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
13509126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE_PTR phNewObject);
13519126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13529126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DestroyObject)
13539126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject);
13549126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13559126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetObjectSize)
13569126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
13579126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusSize);
13589126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13599126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetAttributeValue)
13609126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
13619126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
13629126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13639126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SetAttributeValue)
13649126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
13659126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
13669126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13679126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_FindObjectsInit)
13689126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
13699126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usCount);
13709126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13719126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_FindObjects)
13729126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession,
13739126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE_PTR phObject, CK_ULONG usMaxObjectCount,
13749126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusObjectCount);
13759126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13769126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_FindObjectsFinal)
13779126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession);
13789126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13799126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_EncryptInit)
13809126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
13819126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
13829126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13839126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Encrypt)
13849126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pData,
13859126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usDataLen, CK_BYTE_PTR pEncryptedData,
13869126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusEncryptedDataLen);
13879126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13889126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_EncryptUpdate)
13899126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
13909126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPartLen, CK_BYTE_PTR pEncryptedPart,
13919126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusEncryptedPartLen);
13929126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13939126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_EncryptFinal)
13949126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession,
13959126SWyllys.Ingersoll@Sun.COM 	CK_BYTE_PTR pLastEncryptedPart,
13969126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusLastEncryptedPartLen);
13979126SWyllys.Ingersoll@Sun.COM typedef CK_RV
13989126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DecryptInit)
13999126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
14009126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
14019126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14029126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Decrypt)
14039126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedData,
14049126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usEncryptedDataLen, CK_BYTE_PTR pData,
14059126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusDataLen);
14069126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14079126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DecryptUpdate)
14089126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
14099126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usEncryptedPartLen, CK_BYTE_PTR pPart,
14109126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusPartLen);
14119126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14129126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DecryptFinal)
14139126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pLastPart,
14149126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusLastPartLen);
14159126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14169126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DigestInit)
14179126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession,
14189126SWyllys.Ingersoll@Sun.COM 	CK_MECHANISM_PTR pMechanism);
14199126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14209126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Digest)
14219126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pData,
14229126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usDataLen, CK_BYTE_PTR pDigest,
14239126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusDigestLen);
14249126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14259126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DigestUpdate)
14269126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
14279126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPartLen);
14289126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14299126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DigestKey)
14309126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_OBJECT_HANDLE hKey);
14319126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14329126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DigestFinal)
14339126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pDigest,
14349126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusDigestLen);
14359126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14369126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignInit)
14379126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
14389126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
14399126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14409126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Sign)
14419126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pData,
14429126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
14439126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusSignatureLen);
14449126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14459126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignUpdate)
14469126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
14479126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPartLen);
14489126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14499126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignFinal)
14509126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
14519126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusSignatureLen);
14529126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14539126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignRecoverInit)
14549126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
14559126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
14569126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14579126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignRecover)
14589126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pData,
14599126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
14609126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusSignatureLen);
14619126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14629126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_VerifyInit)
14639126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
14649126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
14659126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14669126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_Verify)
14679126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pData,
14689126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
14699126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usSignatureLen);
14709126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14719126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_VerifyUpdate)
14729126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
14739126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPartLen);
14749126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14759126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_VerifyFinal)
14769126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
14779126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usSignatureLen);
14789126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14799126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_VerifyRecoverInit)
14809126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
14819126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hKey);
14829126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14839126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_VerifyRecover)
14849126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
14859126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usSignatureLen, CK_BYTE_PTR pData,
14869126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pusDataLen);
14879126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14889126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DigestEncryptUpdate)
14899126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
14909126SWyllys.Ingersoll@Sun.COM 	CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
14919126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pulEncryptedPartLen);
14929126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14939126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DecryptDigestUpdate)
14949126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
14959126SWyllys.Ingersoll@Sun.COM 	CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
14969126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pulPartLen);
14979126SWyllys.Ingersoll@Sun.COM typedef CK_RV
14989126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SignEncryptUpdate)
14999126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pPart,
15009126SWyllys.Ingersoll@Sun.COM 	CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
15019126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pulEncryptedPartLen);
15029126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15039126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DecryptVerifyUpdate)
15049126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
15059126SWyllys.Ingersoll@Sun.COM 	CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
15069126SWyllys.Ingersoll@Sun.COM 	CK_ULONG_PTR pulPartLen);
15079126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15089126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GenerateKey)
15099126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
15109126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
15119126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE_PTR phKey);
15129126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15139126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GenerateKeyPair)
15149126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
15159126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pPublicKeyTemplate,
15169126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPublicKeyAttributeCount,
15179126SWyllys.Ingersoll@Sun.COM 	CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
15189126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usPrivateKeyAttributeCount,
15199126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE_PTR phPrivateKey,
15209126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE_PTR phPublicKey);
15219126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15229126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_WrapKey)
15239126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
15249126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey,
15259126SWyllys.Ingersoll@Sun.COM 	CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pusWrappedKeyLen);
15269126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15279126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_UnwrapKey)
15289126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
15299126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey,
15309126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate,
15319126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
15329126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15339126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_DeriveKey)
15349126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
15359126SWyllys.Ingersoll@Sun.COM 	CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate,
15369126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
15379126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15389126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_SeedRandom)
15399126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pSeed,
15409126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usSeedLen);
15419126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15429126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GenerateRandom)
15439126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_BYTE_PTR pRandomData,
15449126SWyllys.Ingersoll@Sun.COM 	CK_ULONG usRandomLen);
15459126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15469126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_GetFunctionStatus)
15479126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession);
15489126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15499126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_CancelFunction)
15509126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession);
15519126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15529126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_Notify)
15539126SWyllys.Ingersoll@Sun.COM 	(ST_SESSION_T hSession, CK_NOTIFICATION event,
15549126SWyllys.Ingersoll@Sun.COM 	CK_VOID_PTR pApplication);
15559126SWyllys.Ingersoll@Sun.COM typedef CK_RV
15569126SWyllys.Ingersoll@Sun.COM 	(CK_PTR  ST_C_WaitForSlotEvent)
15579126SWyllys.Ingersoll@Sun.COM 	(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot,
15589126SWyllys.Ingersoll@Sun.COM 	CK_VOID_PTR pReserved);
15599126SWyllys.Ingersoll@Sun.COM 
15609126SWyllys.Ingersoll@Sun.COM 
15619126SWyllys.Ingersoll@Sun.COM 
15629126SWyllys.Ingersoll@Sun.COM struct ST_FCN_LIST {
15639126SWyllys.Ingersoll@Sun.COM 
15649126SWyllys.Ingersoll@Sun.COM 	ST_C_Initialize ST_Initialize;
15659126SWyllys.Ingersoll@Sun.COM 	ST_C_Finalize ST_Finalize;
15669126SWyllys.Ingersoll@Sun.COM 
15679126SWyllys.Ingersoll@Sun.COM 	ST_C_GetTokenInfo ST_GetTokenInfo;
15689126SWyllys.Ingersoll@Sun.COM 	ST_C_GetMechanismList ST_GetMechanismList;
15699126SWyllys.Ingersoll@Sun.COM 	ST_C_GetMechanismInfo ST_GetMechanismInfo;
15709126SWyllys.Ingersoll@Sun.COM 	ST_C_InitToken ST_InitToken;
15719126SWyllys.Ingersoll@Sun.COM 	ST_C_InitPIN ST_InitPIN;
15729126SWyllys.Ingersoll@Sun.COM 	ST_C_SetPIN ST_SetPIN;
15739126SWyllys.Ingersoll@Sun.COM 
15749126SWyllys.Ingersoll@Sun.COM 	ST_C_OpenSession ST_OpenSession;
15759126SWyllys.Ingersoll@Sun.COM 	ST_C_CloseSession ST_CloseSession;
15769126SWyllys.Ingersoll@Sun.COM 	ST_C_GetSessionInfo ST_GetSessionInfo;
15779126SWyllys.Ingersoll@Sun.COM 	ST_C_GetOperationState ST_GetOperationState;
15789126SWyllys.Ingersoll@Sun.COM 	ST_C_SetOperationState ST_SetOperationState;
15799126SWyllys.Ingersoll@Sun.COM 	ST_C_Login ST_Login;
15809126SWyllys.Ingersoll@Sun.COM 	ST_C_Logout ST_Logout;
15819126SWyllys.Ingersoll@Sun.COM 
15829126SWyllys.Ingersoll@Sun.COM 	ST_C_CreateObject ST_CreateObject;
15839126SWyllys.Ingersoll@Sun.COM 	ST_C_CopyObject ST_CopyObject;
15849126SWyllys.Ingersoll@Sun.COM 	ST_C_DestroyObject ST_DestroyObject;
15859126SWyllys.Ingersoll@Sun.COM 	ST_C_GetObjectSize ST_GetObjectSize;
15869126SWyllys.Ingersoll@Sun.COM 	ST_C_GetAttributeValue ST_GetAttributeValue;
15879126SWyllys.Ingersoll@Sun.COM 	ST_C_SetAttributeValue ST_SetAttributeValue;
15889126SWyllys.Ingersoll@Sun.COM 	ST_C_FindObjectsInit ST_FindObjectsInit;
15899126SWyllys.Ingersoll@Sun.COM 	ST_C_FindObjects ST_FindObjects;
15909126SWyllys.Ingersoll@Sun.COM 	ST_C_FindObjectsFinal ST_FindObjectsFinal;
15919126SWyllys.Ingersoll@Sun.COM 
15929126SWyllys.Ingersoll@Sun.COM 
15939126SWyllys.Ingersoll@Sun.COM 	ST_C_EncryptInit ST_EncryptInit;
15949126SWyllys.Ingersoll@Sun.COM 	ST_C_Encrypt ST_Encrypt;
15959126SWyllys.Ingersoll@Sun.COM 	ST_C_EncryptUpdate ST_EncryptUpdate;
15969126SWyllys.Ingersoll@Sun.COM 	ST_C_EncryptFinal ST_EncryptFinal;
15979126SWyllys.Ingersoll@Sun.COM 	ST_C_DecryptInit ST_DecryptInit;
15989126SWyllys.Ingersoll@Sun.COM 	ST_C_Decrypt ST_Decrypt;
15999126SWyllys.Ingersoll@Sun.COM 	ST_C_DecryptUpdate ST_DecryptUpdate;
16009126SWyllys.Ingersoll@Sun.COM 	ST_C_DecryptFinal ST_DecryptFinal;
16019126SWyllys.Ingersoll@Sun.COM 	ST_C_DigestInit ST_DigestInit;
16029126SWyllys.Ingersoll@Sun.COM 	ST_C_Digest ST_Digest;
16039126SWyllys.Ingersoll@Sun.COM 	ST_C_DigestUpdate ST_DigestUpdate;
16049126SWyllys.Ingersoll@Sun.COM 	ST_C_DigestKey ST_DigestKey;
16059126SWyllys.Ingersoll@Sun.COM 	ST_C_DigestFinal ST_DigestFinal;
16069126SWyllys.Ingersoll@Sun.COM 	ST_C_SignInit ST_SignInit;
16079126SWyllys.Ingersoll@Sun.COM 	ST_C_Sign ST_Sign;
16089126SWyllys.Ingersoll@Sun.COM 	ST_C_SignUpdate ST_SignUpdate;
16099126SWyllys.Ingersoll@Sun.COM 	ST_C_SignFinal ST_SignFinal;
16109126SWyllys.Ingersoll@Sun.COM 	ST_C_SignRecoverInit ST_SignRecoverInit;
16119126SWyllys.Ingersoll@Sun.COM 	ST_C_SignRecover ST_SignRecover;
16129126SWyllys.Ingersoll@Sun.COM 	ST_C_VerifyInit ST_VerifyInit;
16139126SWyllys.Ingersoll@Sun.COM 	ST_C_Verify ST_Verify;
16149126SWyllys.Ingersoll@Sun.COM 	ST_C_VerifyUpdate ST_VerifyUpdate;
16159126SWyllys.Ingersoll@Sun.COM 	ST_C_VerifyFinal ST_VerifyFinal;
16169126SWyllys.Ingersoll@Sun.COM 	ST_C_VerifyRecoverInit ST_VerifyRecoverInit;
16179126SWyllys.Ingersoll@Sun.COM 	ST_C_VerifyRecover ST_VerifyRecover;
16189126SWyllys.Ingersoll@Sun.COM 	ST_C_DigestEncryptUpdate ST_DigestEncryptUpdate;
16199126SWyllys.Ingersoll@Sun.COM 	ST_C_DecryptDigestUpdate ST_DecryptDigestUpdate;
16209126SWyllys.Ingersoll@Sun.COM 	ST_C_SignEncryptUpdate ST_SignEncryptUpdate;
16219126SWyllys.Ingersoll@Sun.COM 	ST_C_DecryptVerifyUpdate ST_DecryptVerifyUpdate;
16229126SWyllys.Ingersoll@Sun.COM 	ST_C_GenerateKey ST_GenerateKey;
16239126SWyllys.Ingersoll@Sun.COM 	ST_C_GenerateKeyPair ST_GenerateKeyPair;
16249126SWyllys.Ingersoll@Sun.COM 	ST_C_WrapKey ST_WrapKey;
16259126SWyllys.Ingersoll@Sun.COM 	ST_C_UnwrapKey ST_UnwrapKey;
16269126SWyllys.Ingersoll@Sun.COM 	ST_C_DeriveKey ST_DeriveKey;
16279126SWyllys.Ingersoll@Sun.COM 	ST_C_SeedRandom ST_SeedRandom;
16289126SWyllys.Ingersoll@Sun.COM 	ST_C_GenerateRandom ST_GenerateRandom;
16299126SWyllys.Ingersoll@Sun.COM 	ST_C_GetFunctionStatus ST_GetFunctionStatus;
16309126SWyllys.Ingersoll@Sun.COM 	ST_C_CancelFunction ST_CancelFunction;
16319126SWyllys.Ingersoll@Sun.COM };
16329126SWyllys.Ingersoll@Sun.COM 
16339126SWyllys.Ingersoll@Sun.COM typedef struct ST_FCN_LIST  STDLL_FcnList_t;
16349126SWyllys.Ingersoll@Sun.COM 
16359126SWyllys.Ingersoll@Sun.COM #endif /* _TPMTOK_INT_H */
1636