147e946e7SWyllys Ingersoll /* 247e946e7SWyllys Ingersoll * The Initial Developer of the Original Code is International 347e946e7SWyllys Ingersoll * Business Machines Corporation. Portions created by IBM 447e946e7SWyllys Ingersoll * Corporation are Copyright(C) 2005 International Business 547e946e7SWyllys Ingersoll * Machines Corporation. All Rights Reserved. 647e946e7SWyllys Ingersoll * 747e946e7SWyllys Ingersoll * This program is free software; you can redistribute it and/or modify 847e946e7SWyllys Ingersoll * it under the terms of the Common Public License as published by 947e946e7SWyllys Ingersoll * IBM Corporation; either version 1 of the License, or(at your option) 1047e946e7SWyllys Ingersoll * any later version. 1147e946e7SWyllys Ingersoll * 1247e946e7SWyllys Ingersoll * This program is distributed in the hope that it will be useful, 1347e946e7SWyllys Ingersoll * but WITHOUT ANY WARRANTY; without even the implied warranty of 1447e946e7SWyllys Ingersoll * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1547e946e7SWyllys Ingersoll * Common Public License for more details. 1647e946e7SWyllys Ingersoll * 1747e946e7SWyllys Ingersoll * You should have received a copy of the Common Public License 1847e946e7SWyllys Ingersoll * along with this program; if not, a copy can be viewed at 1947e946e7SWyllys Ingersoll * http://www.opensource.org/licenses/cpl1.0.php. 2047e946e7SWyllys Ingersoll */ 2147e946e7SWyllys Ingersoll 2247e946e7SWyllys Ingersoll /* (C) COPYRIGHT International Business Machines Corp. 2001, 2002, 2005 */ 2347e946e7SWyllys Ingersoll /* 2447e946e7SWyllys Ingersoll * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 2547e946e7SWyllys Ingersoll * Use is subject to license terms. 26*91419a03SJason King * Copyright 2018 Jason King 2747e946e7SWyllys Ingersoll */ 2847e946e7SWyllys Ingersoll 2947e946e7SWyllys Ingersoll #ifndef _TPMTOK_INT_H 3047e946e7SWyllys Ingersoll #define _TPMTOK_INT_H 3147e946e7SWyllys Ingersoll 3247e946e7SWyllys Ingersoll #include <stdio.h> 3347e946e7SWyllys Ingersoll #include <pthread.h> 3447e946e7SWyllys Ingersoll #include <string.h> 3547e946e7SWyllys Ingersoll #include <strings.h> 36*91419a03SJason King #include <sys/md5.h> 37*91419a03SJason King #include <sys/sha1.h> 3847e946e7SWyllys Ingersoll #include <limits.h> 3947e946e7SWyllys Ingersoll #include <syslog.h> 4047e946e7SWyllys Ingersoll #include <errno.h> 4147e946e7SWyllys Ingersoll #include <sys/types.h> 4247e946e7SWyllys Ingersoll #include <sys/stat.h> 4347e946e7SWyllys Ingersoll #include <sys/param.h> 4447e946e7SWyllys Ingersoll #include <sys/byteorder.h> 4547e946e7SWyllys Ingersoll #include <security/cryptoki.h> 4647e946e7SWyllys Ingersoll 4747e946e7SWyllys Ingersoll #include <tss/platform.h> 4847e946e7SWyllys Ingersoll #include <tss/tss_defines.h> 4947e946e7SWyllys Ingersoll #include <tss/tss_typedef.h> 5047e946e7SWyllys Ingersoll #include <tss/tss_structs.h> 5147e946e7SWyllys Ingersoll #include <tss/tspi.h> 5247e946e7SWyllys Ingersoll 5347e946e7SWyllys Ingersoll #define VERSION_MAJOR 2 5447e946e7SWyllys Ingersoll #define VERSION_MINOR 1 5547e946e7SWyllys Ingersoll 5647e946e7SWyllys Ingersoll #define MAX_SESSION_COUNT 64 5747e946e7SWyllys Ingersoll #define MAX_PIN_LEN 256 5847e946e7SWyllys Ingersoll #define MIN_PIN_LEN 1 5947e946e7SWyllys Ingersoll 6047e946e7SWyllys Ingersoll #define MAX_SLOT_ID 10 6147e946e7SWyllys Ingersoll 6247e946e7SWyllys Ingersoll #ifndef MIN 6347e946e7SWyllys Ingersoll #define MIN(a, b) ((a) < (b) ? (a) : (b)) 6447e946e7SWyllys Ingersoll #endif 6547e946e7SWyllys Ingersoll 6647e946e7SWyllys Ingersoll #define MODE_COPY (1 << 0) 6747e946e7SWyllys Ingersoll #define MODE_CREATE (1 << 1) 6847e946e7SWyllys Ingersoll #define MODE_KEYGEN (1 << 2) 6947e946e7SWyllys Ingersoll #define MODE_MODIFY (1 << 3) 7047e946e7SWyllys Ingersoll #define MODE_DERIVE (1 << 4) 7147e946e7SWyllys Ingersoll #define MODE_UNWRAP (1 << 5) 7247e946e7SWyllys Ingersoll 7347e946e7SWyllys Ingersoll // RSA block formatting types 7447e946e7SWyllys Ingersoll // 7547e946e7SWyllys Ingersoll #define PKCS_BT_1 1 7647e946e7SWyllys Ingersoll #define PKCS_BT_2 2 7747e946e7SWyllys Ingersoll 7847e946e7SWyllys Ingersoll #define OP_ENCRYPT_INIT 1 7947e946e7SWyllys Ingersoll #define OP_DECRYPT_INIT 2 8047e946e7SWyllys Ingersoll #define OP_WRAP 3 8147e946e7SWyllys Ingersoll #define OP_UNWRAP 4 8247e946e7SWyllys Ingersoll #define OP_SIGN_INIT 5 8347e946e7SWyllys Ingersoll #define OP_VERIFY_INIT 6 8447e946e7SWyllys Ingersoll 8547e946e7SWyllys Ingersoll enum { 8647e946e7SWyllys Ingersoll STATE_INVALID = 0, 8747e946e7SWyllys Ingersoll STATE_ENCR, 8847e946e7SWyllys Ingersoll STATE_DECR, 8947e946e7SWyllys Ingersoll STATE_DIGEST, 9047e946e7SWyllys Ingersoll STATE_SIGN, 9147e946e7SWyllys Ingersoll STATE_VERIFY 9247e946e7SWyllys Ingersoll }; 9347e946e7SWyllys Ingersoll 9447e946e7SWyllys Ingersoll #define SHA1_BLOCK_SIZE 64 9547e946e7SWyllys Ingersoll #define SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1) 9647e946e7SWyllys Ingersoll 9747e946e7SWyllys Ingersoll #define RSA_BLOCK_SIZE 256 9847e946e7SWyllys Ingersoll 9947e946e7SWyllys Ingersoll #ifndef PATH_MAX 10047e946e7SWyllys Ingersoll #define PATH_MAX MAXPATHLEN 10147e946e7SWyllys Ingersoll #endif 10247e946e7SWyllys Ingersoll 10347e946e7SWyllys Ingersoll #ifndef PACK_DATA 10447e946e7SWyllys Ingersoll #define PACK_DATA 10547e946e7SWyllys Ingersoll #endif 10647e946e7SWyllys Ingersoll 10747e946e7SWyllys Ingersoll #define MD5_BLOCK_SIZE 64 10847e946e7SWyllys Ingersoll 10947e946e7SWyllys Ingersoll #define DSA_SIGNATURE_SIZE 40 11047e946e7SWyllys Ingersoll 11147e946e7SWyllys Ingersoll #define DEFAULT_SO_PIN "87654321" 11247e946e7SWyllys Ingersoll 11347e946e7SWyllys Ingersoll typedef enum { 11447e946e7SWyllys Ingersoll ALL = 1, 11547e946e7SWyllys Ingersoll PRIVATE, 11647e946e7SWyllys Ingersoll PUBLIC 11747e946e7SWyllys Ingersoll } SESS_OBJ_TYPE; 11847e946e7SWyllys Ingersoll 11947e946e7SWyllys Ingersoll typedef struct _DL_NODE 12047e946e7SWyllys Ingersoll { 12147e946e7SWyllys Ingersoll struct _DL_NODE *next; 12247e946e7SWyllys Ingersoll struct _DL_NODE *prev; 12347e946e7SWyllys Ingersoll void *data; 12447e946e7SWyllys Ingersoll } DL_NODE; 12547e946e7SWyllys Ingersoll 12647e946e7SWyllys Ingersoll #define TOKEN_DATA_FILE "token.dat" 12747e946e7SWyllys Ingersoll #define TOKEN_OBJ_DIR "objects" 12847e946e7SWyllys Ingersoll #define TOKEN_OBJ_INDEX_FILE "obj.idx" 12947e946e7SWyllys Ingersoll 13047e946e7SWyllys Ingersoll #define TPMTOK_UUID_INDEX_FILENAME "uuids.idx" 13147e946e7SWyllys Ingersoll 13247e946e7SWyllys Ingersoll /* 13347e946e7SWyllys Ingersoll * Filenames used to store migration data. 13447e946e7SWyllys Ingersoll */ 13547e946e7SWyllys Ingersoll #define SO_MAKEY_FILENAME "so_makey.dat" 13647e946e7SWyllys Ingersoll #define USER_MAKEY_FILENAME "user_makey.dat" 13747e946e7SWyllys Ingersoll #define SO_KEYBLOB_FILENAME "so_blob.dat" 13847e946e7SWyllys Ingersoll #define USER_KEYBLOB_FILENAME "user_blob.dat" 13947e946e7SWyllys Ingersoll 14047e946e7SWyllys Ingersoll #define __FUNCTION__ __func__ 14147e946e7SWyllys Ingersoll 14247e946e7SWyllys Ingersoll // 14347e946e7SWyllys Ingersoll // Both of the strings below have a length of 32 chars and must be 14447e946e7SWyllys Ingersoll // padded with spaces, and non - null terminated. 14547e946e7SWyllys Ingersoll // 14647e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_VERSION_MAJOR 2 14747e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_VERSION_MINOR 1 14847e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_MANUFACTURER "Sun Microsystems, Inc. " 14947e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_LIBDESC "PKCS#11 Interface for TPM " 15047e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_LIB_VERSION_MAJOR 1 15147e946e7SWyllys Ingersoll #define PKW_CRYPTOKI_LIB_VERSION_MINOR 0 15247e946e7SWyllys Ingersoll #define PKW_MAX_DEVICES 10 15347e946e7SWyllys Ingersoll 15447e946e7SWyllys Ingersoll #define MAX_TOK_OBJS 2048 15547e946e7SWyllys Ingersoll #define NUMBER_SLOTS_MANAGED 1 15647e946e7SWyllys Ingersoll #define TPM_SLOTID 1 15747e946e7SWyllys Ingersoll 15847e946e7SWyllys Ingersoll /* 15947e946e7SWyllys Ingersoll * CKA_HIDDEN will be used to filter return results on 16047e946e7SWyllys Ingersoll * a C_FindObjects call. Used for objects internal to the 16147e946e7SWyllys Ingersoll * TPM token for management 16247e946e7SWyllys Ingersoll */ 16347e946e7SWyllys Ingersoll /* custom attributes for the TPM token */ 16447e946e7SWyllys Ingersoll #define CKA_HIDDEN CKA_VENDOR_DEFINED + 0x01 16547e946e7SWyllys Ingersoll #define CKA_IBM_OPAQUE CKA_VENDOR_DEFINED + 0x02 16647e946e7SWyllys Ingersoll /* 16747e946e7SWyllys Ingersoll * CKA_ENC_AUTHDATA will be used to store the encrypted SHA-1 16847e946e7SWyllys Ingersoll * hashes of auth data passed in for TPM keys. The authdata 16947e946e7SWyllys Ingersoll * will be encrypted using either the public 17047e946e7SWyllys Ingersoll * leaf key or the private leaf key 17147e946e7SWyllys Ingersoll */ 17247e946e7SWyllys Ingersoll #define CKA_ENC_AUTHDATA CKA_VENDOR_DEFINED + 0x03 17347e946e7SWyllys Ingersoll 17447e946e7SWyllys Ingersoll /* custom return codes for the TPM token */ 17547e946e7SWyllys Ingersoll #define CKR_KEY_NOT_FOUND CKR_VENDOR_DEFINED + 0x01 17647e946e7SWyllys Ingersoll #define CKR_FILE_NOT_FOUND CKR_VENDOR_DEFINED + 0x02 17747e946e7SWyllys Ingersoll 17847e946e7SWyllys Ingersoll typedef struct { 17947e946e7SWyllys Ingersoll CK_SLOT_ID slotID; 18047e946e7SWyllys Ingersoll CK_SESSION_HANDLE sessionh; 18147e946e7SWyllys Ingersoll } ST_SESSION_T; 18247e946e7SWyllys Ingersoll 18347e946e7SWyllys Ingersoll typedef ST_SESSION_T ST_SESSION_HANDLE; 18447e946e7SWyllys Ingersoll 18547e946e7SWyllys Ingersoll typedef struct { 18647e946e7SWyllys Ingersoll void *Previous; 18747e946e7SWyllys Ingersoll void *Next; 18847e946e7SWyllys Ingersoll CK_SLOT_ID SltId; 18947e946e7SWyllys Ingersoll CK_SESSION_HANDLE RealHandle; 19047e946e7SWyllys Ingersoll } Session_Struct_t; 19147e946e7SWyllys Ingersoll 19247e946e7SWyllys Ingersoll typedef Session_Struct_t *SessStructP; 19347e946e7SWyllys Ingersoll 19447e946e7SWyllys Ingersoll typedef struct { 19547e946e7SWyllys Ingersoll pid_t Pid; 19647e946e7SWyllys Ingersoll pthread_mutex_t ProcMutex; 19747e946e7SWyllys Ingersoll Session_Struct_t *SessListBeg; 19847e946e7SWyllys Ingersoll Session_Struct_t *SessListEnd; 19947e946e7SWyllys Ingersoll pthread_mutex_t SessListMutex; 20047e946e7SWyllys Ingersoll } API_Proc_Struct_t; 20147e946e7SWyllys Ingersoll 20247e946e7SWyllys Ingersoll 20347e946e7SWyllys Ingersoll 20447e946e7SWyllys Ingersoll 20547e946e7SWyllys Ingersoll enum { 20647e946e7SWyllys Ingersoll PRF_DUMMYFUNCTION = 1, 20747e946e7SWyllys Ingersoll PRF_FCVFUNCTION, 20847e946e7SWyllys Ingersoll PRF_INITIALIZE, 20947e946e7SWyllys Ingersoll PRF_FINALIZE, 21047e946e7SWyllys Ingersoll PRF_GETINFO, 21147e946e7SWyllys Ingersoll PRF_GETFUNCTIONLIST, 21247e946e7SWyllys Ingersoll PRF_GETSLOTLIST, 21347e946e7SWyllys Ingersoll PRF_GETSLOTINFO, 21447e946e7SWyllys Ingersoll PRF_GETTOKENINFO, 21547e946e7SWyllys Ingersoll PRF_GETMECHLIST, 21647e946e7SWyllys Ingersoll PRF_GETMECHINFO, 21747e946e7SWyllys Ingersoll PRF_INITTOKEN, 21847e946e7SWyllys Ingersoll PRF_INITPIN, 21947e946e7SWyllys Ingersoll PRF_SETPIN, 22047e946e7SWyllys Ingersoll PRF_OPENSESSION, 22147e946e7SWyllys Ingersoll PRF_CLOSESESSION, 22247e946e7SWyllys Ingersoll PRF_CLOSEALLSESSIONS, 22347e946e7SWyllys Ingersoll PRF_GETSESSIONINFO, 22447e946e7SWyllys Ingersoll PRF_GETOPERATIONSTATE, 22547e946e7SWyllys Ingersoll PRF_SETOPERATIONSTATE, 22647e946e7SWyllys Ingersoll PRF_LOGIN, 22747e946e7SWyllys Ingersoll PRF_LOGOUT, 22847e946e7SWyllys Ingersoll PRF_CREATEOBJECT, 22947e946e7SWyllys Ingersoll PRF_COPYOBJECT, 23047e946e7SWyllys Ingersoll PRF_DESTROYOBJECT, 23147e946e7SWyllys Ingersoll PRF_GETOBJECTSIZE, 23247e946e7SWyllys Ingersoll PRF_GETATTRIBUTEVALUE, 23347e946e7SWyllys Ingersoll PRF_SETATTRIBUTEVALUE, 23447e946e7SWyllys Ingersoll PRF_FINDOBJECTSINIT, 23547e946e7SWyllys Ingersoll PRF_FINDOBJECTS, 23647e946e7SWyllys Ingersoll PRF_FINDOBJECTSFINAL, 23747e946e7SWyllys Ingersoll PRF_ENCRYPTINIT, 23847e946e7SWyllys Ingersoll PRF_ENCRYPT, 23947e946e7SWyllys Ingersoll PRF_ENCRYPTUPDATE, 24047e946e7SWyllys Ingersoll PRF_ENCRYPTFINAL, 24147e946e7SWyllys Ingersoll PRF_DECRYPTINIT, 24247e946e7SWyllys Ingersoll PRF_DECRYPT, 24347e946e7SWyllys Ingersoll PRF_DECRYPTUPDATE, 24447e946e7SWyllys Ingersoll PRF_DECRYPTFINAL, 24547e946e7SWyllys Ingersoll PRF_DIGESTINIT, 24647e946e7SWyllys Ingersoll PRF_DIGEST, 24747e946e7SWyllys Ingersoll PRF_DIGESTUPDATE, 24847e946e7SWyllys Ingersoll PRF_DIGESTKEY, 24947e946e7SWyllys Ingersoll PRF_DIGESTFINAL, 25047e946e7SWyllys Ingersoll PRF_SIGNINIT, 25147e946e7SWyllys Ingersoll PRF_SIGN, 25247e946e7SWyllys Ingersoll PRF_SIGNUPDATE, 25347e946e7SWyllys Ingersoll PRF_SIGNFINAL, 25447e946e7SWyllys Ingersoll PRF_SIGNRECOVERINIT, 25547e946e7SWyllys Ingersoll PRF_SIGNRECOVER, 25647e946e7SWyllys Ingersoll PRF_VERIFYINIT, 25747e946e7SWyllys Ingersoll PRF_VERIFY, 25847e946e7SWyllys Ingersoll PRF_VERIFYUPDATE, 25947e946e7SWyllys Ingersoll PRF_VERIFYFINAL, 26047e946e7SWyllys Ingersoll PRF_VERIFYRECOVERINIT, 26147e946e7SWyllys Ingersoll PRF_VERIFYRECOVER, 26247e946e7SWyllys Ingersoll PRF_GENKEY, 26347e946e7SWyllys Ingersoll PRF_GENKEYPAIR, 26447e946e7SWyllys Ingersoll PRF_WRAPKEY, 26547e946e7SWyllys Ingersoll PRF_UNWRAPKEY, 26647e946e7SWyllys Ingersoll PRF_DERIVEKEY, 26747e946e7SWyllys Ingersoll PRF_GENRND, 26847e946e7SWyllys Ingersoll PRF_LASTENTRY 26947e946e7SWyllys Ingersoll }; 27047e946e7SWyllys Ingersoll 27147e946e7SWyllys Ingersoll typedef struct _ENCR_DECR_CONTEXT 27247e946e7SWyllys Ingersoll { 27347e946e7SWyllys Ingersoll CK_OBJECT_HANDLE key; 27447e946e7SWyllys Ingersoll CK_MECHANISM mech; 27547e946e7SWyllys Ingersoll CK_BYTE *context; 27647e946e7SWyllys Ingersoll CK_ULONG context_len; 27747e946e7SWyllys Ingersoll CK_BBOOL multi; 27847e946e7SWyllys Ingersoll CK_BBOOL active; 27947e946e7SWyllys Ingersoll } ENCR_DECR_CONTEXT; 28047e946e7SWyllys Ingersoll 28147e946e7SWyllys Ingersoll typedef struct _DIGEST_CONTEXT 28247e946e7SWyllys Ingersoll { 28347e946e7SWyllys Ingersoll CK_MECHANISM mech; 28447e946e7SWyllys Ingersoll union { 28547e946e7SWyllys Ingersoll MD5_CTX *md5ctx; 28647e946e7SWyllys Ingersoll SHA1_CTX *sha1ctx; 28747e946e7SWyllys Ingersoll void *ref; /* reference ptr for the union */ 28847e946e7SWyllys Ingersoll } context; 28947e946e7SWyllys Ingersoll CK_ULONG context_len; 29047e946e7SWyllys Ingersoll CK_BBOOL multi; 29147e946e7SWyllys Ingersoll CK_BBOOL active; 29247e946e7SWyllys Ingersoll } DIGEST_CONTEXT; 29347e946e7SWyllys Ingersoll 29447e946e7SWyllys Ingersoll typedef struct _SIGN_VERIFY_CONTEXT 29547e946e7SWyllys Ingersoll { 29647e946e7SWyllys Ingersoll CK_OBJECT_HANDLE key; 29747e946e7SWyllys Ingersoll CK_MECHANISM mech; // current sign mechanism 29847e946e7SWyllys Ingersoll void *context; // temporary work area 29947e946e7SWyllys Ingersoll CK_ULONG context_len; 30047e946e7SWyllys Ingersoll CK_BBOOL multi; // is this a multi - part operation? 30147e946e7SWyllys Ingersoll CK_BBOOL recover; // are we in recover mode? 30247e946e7SWyllys Ingersoll CK_BBOOL active; 30347e946e7SWyllys Ingersoll } SIGN_VERIFY_CONTEXT; 30447e946e7SWyllys Ingersoll 30547e946e7SWyllys Ingersoll typedef struct _SESSION 30647e946e7SWyllys Ingersoll { 30747e946e7SWyllys Ingersoll CK_SESSION_HANDLE handle; 30847e946e7SWyllys Ingersoll CK_SESSION_INFO session_info; 30947e946e7SWyllys Ingersoll 31047e946e7SWyllys Ingersoll CK_OBJECT_HANDLE *find_list; // array of CK_OBJECT_HANDLE 31147e946e7SWyllys Ingersoll CK_ULONG find_count; // # handles in the list 31247e946e7SWyllys Ingersoll CK_ULONG find_len; // max # of handles in the list 31347e946e7SWyllys Ingersoll CK_ULONG find_idx; // current position 31447e946e7SWyllys Ingersoll CK_BBOOL find_active; 31547e946e7SWyllys Ingersoll 31647e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT encr_ctx; 31747e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT decr_ctx; 31847e946e7SWyllys Ingersoll DIGEST_CONTEXT digest_ctx; 31947e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT sign_ctx; 32047e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT verify_ctx; 32147e946e7SWyllys Ingersoll 32247e946e7SWyllys Ingersoll TSS_HCONTEXT hContext; 32347e946e7SWyllys Ingersoll } SESSION; 32447e946e7SWyllys Ingersoll 32547e946e7SWyllys Ingersoll typedef struct _TEMPLATE 32647e946e7SWyllys Ingersoll { 32747e946e7SWyllys Ingersoll DL_NODE *attribute_list; 32847e946e7SWyllys Ingersoll } TEMPLATE; 32947e946e7SWyllys Ingersoll 33047e946e7SWyllys Ingersoll typedef struct _OBJECT 33147e946e7SWyllys Ingersoll { 33247e946e7SWyllys Ingersoll CK_OBJECT_CLASS class; 33347e946e7SWyllys Ingersoll CK_BYTE name[8]; // for token objects 33447e946e7SWyllys Ingersoll 33547e946e7SWyllys Ingersoll SESSION *session; // creator; only for session objects 33647e946e7SWyllys Ingersoll TEMPLATE *template; 33747e946e7SWyllys Ingersoll CK_ULONG count_hi; // only significant for token objects 33847e946e7SWyllys Ingersoll CK_ULONG count_lo; // only significant for token objects 33947e946e7SWyllys Ingersoll CK_ULONG index; 34047e946e7SWyllys Ingersoll } OBJECT; 34147e946e7SWyllys Ingersoll 34247e946e7SWyllys Ingersoll typedef struct _OBJECT_MAP 34347e946e7SWyllys Ingersoll { 34447e946e7SWyllys Ingersoll CK_OBJECT_HANDLE handle; 34547e946e7SWyllys Ingersoll CK_BBOOL is_private; 34647e946e7SWyllys Ingersoll CK_BBOOL is_session_obj; 34747e946e7SWyllys Ingersoll SESSION *session; 34847e946e7SWyllys Ingersoll OBJECT *ptr; 34947e946e7SWyllys Ingersoll } OBJECT_MAP; 35047e946e7SWyllys Ingersoll 35147e946e7SWyllys Ingersoll typedef struct _ATTRIBUTE_PARSE_LIST 35247e946e7SWyllys Ingersoll { 35347e946e7SWyllys Ingersoll CK_ATTRIBUTE_TYPE type; 35447e946e7SWyllys Ingersoll void *ptr; 35547e946e7SWyllys Ingersoll CK_ULONG len; 35647e946e7SWyllys Ingersoll CK_BBOOL found; 35747e946e7SWyllys Ingersoll } ATTRIBUTE_PARSE_LIST; 35847e946e7SWyllys Ingersoll 35947e946e7SWyllys Ingersoll typedef struct _OP_STATE_DATA 36047e946e7SWyllys Ingersoll { 36147e946e7SWyllys Ingersoll CK_STATE session_state; 36247e946e7SWyllys Ingersoll CK_ULONG active_operation; 36347e946e7SWyllys Ingersoll CK_ULONG data_len; 36447e946e7SWyllys Ingersoll } OP_STATE_DATA; 36547e946e7SWyllys Ingersoll 36647e946e7SWyllys Ingersoll typedef struct _TWEAK_VEC 36747e946e7SWyllys Ingersoll { 36847e946e7SWyllys Ingersoll int allow_key_mods; 36947e946e7SWyllys Ingersoll } TWEAK_VEC; 37047e946e7SWyllys Ingersoll 37147e946e7SWyllys Ingersoll typedef struct _TOKEN_DATA 37247e946e7SWyllys Ingersoll { 37347e946e7SWyllys Ingersoll CK_TOKEN_INFO token_info; 37447e946e7SWyllys Ingersoll CK_BYTE user_pin_sha[SHA1_DIGEST_LENGTH]; 37547e946e7SWyllys Ingersoll CK_BYTE so_pin_sha[SHA1_DIGEST_LENGTH]; 37647e946e7SWyllys Ingersoll CK_BYTE next_token_object_name[8]; 37747e946e7SWyllys Ingersoll TWEAK_VEC tweak_vector; 37847e946e7SWyllys Ingersoll } TOKEN_DATA; 37947e946e7SWyllys Ingersoll 38047e946e7SWyllys Ingersoll typedef struct _RSA_DIGEST_CONTEXT { 38147e946e7SWyllys Ingersoll DIGEST_CONTEXT hash_context; 38247e946e7SWyllys Ingersoll CK_BBOOL flag; 38347e946e7SWyllys Ingersoll } RSA_DIGEST_CONTEXT; 38447e946e7SWyllys Ingersoll 38547e946e7SWyllys Ingersoll typedef struct _MECH_LIST_ELEMENT 38647e946e7SWyllys Ingersoll { 38747e946e7SWyllys Ingersoll CK_MECHANISM_TYPE mech_type; 38847e946e7SWyllys Ingersoll CK_MECHANISM_INFO mech_info; 38947e946e7SWyllys Ingersoll } MECH_LIST_ELEMENT; 39047e946e7SWyllys Ingersoll 39147e946e7SWyllys Ingersoll struct mech_list_item; 39247e946e7SWyllys Ingersoll 39347e946e7SWyllys Ingersoll struct mech_list_item { 39447e946e7SWyllys Ingersoll struct mech_list_item *next; 39547e946e7SWyllys Ingersoll MECH_LIST_ELEMENT element; 39647e946e7SWyllys Ingersoll }; 39747e946e7SWyllys Ingersoll 39847e946e7SWyllys Ingersoll struct mech_list_item * 39947e946e7SWyllys Ingersoll find_mech_list_item_for_type(CK_MECHANISM_TYPE type, 40047e946e7SWyllys Ingersoll struct mech_list_item *head); 40147e946e7SWyllys Ingersoll 40247e946e7SWyllys Ingersoll typedef struct _TOK_OBJ_ENTRY 40347e946e7SWyllys Ingersoll { 40447e946e7SWyllys Ingersoll CK_BBOOL deleted; 40547e946e7SWyllys Ingersoll char name[8]; 40647e946e7SWyllys Ingersoll CK_ULONG count_lo; 40747e946e7SWyllys Ingersoll CK_ULONG count_hi; 40847e946e7SWyllys Ingersoll } TOK_OBJ_ENTRY; 40947e946e7SWyllys Ingersoll 41047e946e7SWyllys Ingersoll typedef struct _LW_SHM_TYPE 41147e946e7SWyllys Ingersoll { 41247e946e7SWyllys Ingersoll pthread_mutex_t mutex; 41347e946e7SWyllys Ingersoll TOKEN_DATA nv_token_data; 41447e946e7SWyllys Ingersoll CK_ULONG num_priv_tok_obj; 41547e946e7SWyllys Ingersoll CK_ULONG num_publ_tok_obj; 41647e946e7SWyllys Ingersoll CK_BBOOL priv_loaded; 41747e946e7SWyllys Ingersoll CK_BBOOL publ_loaded; 4188d26100cSWyllys Ingersoll CK_BBOOL token_available; 41947e946e7SWyllys Ingersoll TOK_OBJ_ENTRY publ_tok_objs[ MAX_TOK_OBJS ]; 42047e946e7SWyllys Ingersoll TOK_OBJ_ENTRY priv_tok_objs[ MAX_TOK_OBJS ]; 42147e946e7SWyllys Ingersoll } LW_SHM_TYPE; 42247e946e7SWyllys Ingersoll 42347e946e7SWyllys Ingersoll typedef unsigned int CK_ULONG_32; 42447e946e7SWyllys Ingersoll typedef CK_ULONG_32 CK_OBJECT_CLASS_32; 42547e946e7SWyllys Ingersoll typedef CK_ULONG_32 CK_ATTRIBUTE_TYPE_32; 42647e946e7SWyllys Ingersoll 42747e946e7SWyllys Ingersoll typedef struct CK_ATTRIBUTE_32 { 42847e946e7SWyllys Ingersoll CK_ATTRIBUTE_TYPE_32 type; 42947e946e7SWyllys Ingersoll CK_ULONG_32 pValue; 43047e946e7SWyllys Ingersoll CK_ULONG_32 ulValueLen; 43147e946e7SWyllys Ingersoll } CK_ATTRIBUTE_32; 43247e946e7SWyllys Ingersoll 43347e946e7SWyllys Ingersoll char *get_tpm_keystore_path(); 43447e946e7SWyllys Ingersoll 43547e946e7SWyllys Ingersoll struct messages { 43647e946e7SWyllys Ingersoll char *msg; 43747e946e7SWyllys Ingersoll }; 43847e946e7SWyllys Ingersoll 43947e946e7SWyllys Ingersoll struct token_specific_struct { 44047e946e7SWyllys Ingersoll CK_BYTE token_debug_tag[MAXPATHLEN]; 44147e946e7SWyllys Ingersoll 44247e946e7SWyllys Ingersoll CK_RV (*t_init)(char *, CK_SLOT_ID, TSS_HCONTEXT *); 44347e946e7SWyllys Ingersoll int (*t_slot2local)(); 44447e946e7SWyllys Ingersoll 44547e946e7SWyllys Ingersoll CK_RV (*t_rng)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG); 44647e946e7SWyllys Ingersoll CK_RV (*t_session)(CK_SLOT_ID); 447ab8176c2SWyllys Ingersoll CK_RV (*t_final)(TSS_HCONTEXT); 44847e946e7SWyllys Ingersoll CK_RV (*t_rsa_decrypt)(TSS_HCONTEXT, CK_BYTE *, 44947e946e7SWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG *, OBJECT *); 45047e946e7SWyllys Ingersoll 45147e946e7SWyllys Ingersoll CK_RV (*t_rsa_encrypt)( 45247e946e7SWyllys Ingersoll TSS_HCONTEXT, 45347e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, CK_BYTE *, 45447e946e7SWyllys Ingersoll CK_ULONG *, OBJECT *); 45547e946e7SWyllys Ingersoll 45647e946e7SWyllys Ingersoll CK_RV (*t_rsa_sign)(TSS_HCONTEXT, 45747e946e7SWyllys Ingersoll CK_BYTE *, 45847e946e7SWyllys Ingersoll CK_ULONG, 45947e946e7SWyllys Ingersoll CK_BYTE *, 46047e946e7SWyllys Ingersoll CK_ULONG *, 46147e946e7SWyllys Ingersoll OBJECT *); 46247e946e7SWyllys Ingersoll 46347e946e7SWyllys Ingersoll CK_RV (*t_rsa_verify)(TSS_HCONTEXT, 46447e946e7SWyllys Ingersoll CK_BYTE *, 46547e946e7SWyllys Ingersoll CK_ULONG, 46647e946e7SWyllys Ingersoll CK_BYTE *, 46747e946e7SWyllys Ingersoll CK_ULONG, 46847e946e7SWyllys Ingersoll OBJECT *); 46947e946e7SWyllys Ingersoll 47047e946e7SWyllys Ingersoll CK_RV (*t_rsa_generate_keypair)(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *); 47147e946e7SWyllys Ingersoll 47247e946e7SWyllys Ingersoll CK_RV (*t_sha_init)(DIGEST_CONTEXT *); 47347e946e7SWyllys Ingersoll 47447e946e7SWyllys Ingersoll CK_RV (*t_sha_update)( 47547e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 47647e946e7SWyllys Ingersoll CK_BYTE *, 47747e946e7SWyllys Ingersoll CK_ULONG); 47847e946e7SWyllys Ingersoll 47947e946e7SWyllys Ingersoll CK_RV (*t_sha_final)( 48047e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 48147e946e7SWyllys Ingersoll CK_BYTE *, 48247e946e7SWyllys Ingersoll CK_ULONG *); 48347e946e7SWyllys Ingersoll CK_RV (*t_login)(TSS_HCONTEXT, CK_USER_TYPE, CK_BYTE *, CK_ULONG); 48447e946e7SWyllys Ingersoll CK_RV (*t_logout)(TSS_HCONTEXT); 48547e946e7SWyllys Ingersoll CK_RV (*t_init_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG); 48647e946e7SWyllys Ingersoll CK_RV (*t_set_pin)(ST_SESSION_HANDLE, CK_BYTE *, 48747e946e7SWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG); 48847e946e7SWyllys Ingersoll CK_RV (*t_verify_so_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG); 48947e946e7SWyllys Ingersoll }; 49047e946e7SWyllys Ingersoll 49147e946e7SWyllys Ingersoll typedef struct token_specific_struct token_spec_t; 49247e946e7SWyllys Ingersoll 49347e946e7SWyllys Ingersoll /* 49447e946e7SWyllys Ingersoll * Global Variables 49547e946e7SWyllys Ingersoll */ 49647e946e7SWyllys Ingersoll extern void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR); 49747e946e7SWyllys Ingersoll 49847e946e7SWyllys Ingersoll extern struct messages err_msg[]; 49947e946e7SWyllys Ingersoll 50047e946e7SWyllys Ingersoll extern token_spec_t token_specific; 50147e946e7SWyllys Ingersoll extern CK_BBOOL initialized; 50247e946e7SWyllys Ingersoll extern char *card_function_names[]; 50347e946e7SWyllys Ingersoll extern char *total_function_names[]; 50447e946e7SWyllys Ingersoll 50547e946e7SWyllys Ingersoll extern MECH_LIST_ELEMENT mech_list[]; 50647e946e7SWyllys Ingersoll extern CK_ULONG mech_list_len; 50747e946e7SWyllys Ingersoll 50847e946e7SWyllys Ingersoll extern pthread_mutex_t native_mutex; 50947e946e7SWyllys Ingersoll 51047e946e7SWyllys Ingersoll extern void *xproclock; 51147e946e7SWyllys Ingersoll 51247e946e7SWyllys Ingersoll extern pthread_mutex_t pkcs_mutex, obj_list_mutex, 51347e946e7SWyllys Ingersoll sess_list_mutex, login_mutex; 51447e946e7SWyllys Ingersoll 51547e946e7SWyllys Ingersoll extern DL_NODE *sess_list; 51647e946e7SWyllys Ingersoll extern DL_NODE *sess_obj_list; 51747e946e7SWyllys Ingersoll extern DL_NODE *publ_token_obj_list; 51847e946e7SWyllys Ingersoll extern DL_NODE *priv_token_obj_list; 51947e946e7SWyllys Ingersoll extern DL_NODE *object_map; 52047e946e7SWyllys Ingersoll 52147e946e7SWyllys Ingersoll extern CK_BYTE so_pin_md5[MD5_DIGEST_LENGTH]; 52247e946e7SWyllys Ingersoll extern CK_BYTE user_pin_md5[MD5_DIGEST_LENGTH]; 52347e946e7SWyllys Ingersoll 52447e946e7SWyllys Ingersoll extern CK_BYTE default_user_pin_sha[SHA1_DIGEST_LENGTH]; 52547e946e7SWyllys Ingersoll extern CK_BYTE default_so_pin_sha[SHA1_DIGEST_LENGTH]; 52647e946e7SWyllys Ingersoll extern CK_BYTE default_so_pin_md5[MD5_DIGEST_LENGTH]; 52747e946e7SWyllys Ingersoll 52847e946e7SWyllys Ingersoll extern LW_SHM_TYPE *global_shm; 52947e946e7SWyllys Ingersoll 53047e946e7SWyllys Ingersoll extern TOKEN_DATA *nv_token_data; 53147e946e7SWyllys Ingersoll 53247e946e7SWyllys Ingersoll extern CK_ULONG next_object_handle; 53347e946e7SWyllys Ingersoll extern CK_ULONG next_session_handle; 53447e946e7SWyllys Ingersoll 53547e946e7SWyllys Ingersoll extern CK_STATE global_login_state; 53647e946e7SWyllys Ingersoll 53747e946e7SWyllys Ingersoll extern CK_BYTE ber_AlgIdRSAEncryption[]; 53847e946e7SWyllys Ingersoll extern CK_ULONG ber_AlgIdRSAEncryptionLen; 53947e946e7SWyllys Ingersoll extern CK_BYTE ber_rsaEncryption[]; 54047e946e7SWyllys Ingersoll extern CK_ULONG ber_rsaEncryptionLen; 54147e946e7SWyllys Ingersoll extern CK_BYTE ber_idDSA[]; 54247e946e7SWyllys Ingersoll extern CK_ULONG ber_idDSALen; 54347e946e7SWyllys Ingersoll 54447e946e7SWyllys Ingersoll extern CK_BYTE ber_md5WithRSAEncryption[]; 54547e946e7SWyllys Ingersoll extern CK_ULONG ber_md5WithRSAEncryptionLen; 54647e946e7SWyllys Ingersoll extern CK_BYTE ber_sha1WithRSAEncryption[]; 54747e946e7SWyllys Ingersoll extern CK_ULONG ber_sha1WithRSAEncryptionLen; 54847e946e7SWyllys Ingersoll extern CK_BYTE ber_AlgMd5[]; 54947e946e7SWyllys Ingersoll extern CK_ULONG ber_AlgMd5Len; 55047e946e7SWyllys Ingersoll extern CK_BYTE ber_AlgSha1[]; 55147e946e7SWyllys Ingersoll extern CK_ULONG ber_AlgSha1Len; 55247e946e7SWyllys Ingersoll 55347e946e7SWyllys Ingersoll extern CK_C_INITIALIZE_ARGS cinit_args; 55447e946e7SWyllys Ingersoll 55547e946e7SWyllys Ingersoll /* 55647e946e7SWyllys Ingersoll * Function Prototypes 55747e946e7SWyllys Ingersoll */ 55847e946e7SWyllys Ingersoll void *attach_shared_memory(); 55947e946e7SWyllys Ingersoll void detach_shared_memory(char *); 56047e946e7SWyllys Ingersoll 56147e946e7SWyllys Ingersoll int API_Initialized(); 56247e946e7SWyllys Ingersoll void Terminate_All_Process_Sessions(); 56347e946e7SWyllys Ingersoll int API_Register(); 56447e946e7SWyllys Ingersoll void API_UnRegister(); 56547e946e7SWyllys Ingersoll 56647e946e7SWyllys Ingersoll void CreateXProcLock(void *); 56747e946e7SWyllys Ingersoll int XProcLock(void *); 56847e946e7SWyllys Ingersoll int XProcUnLock(void *); 56947e946e7SWyllys Ingersoll 57047e946e7SWyllys Ingersoll void loginit(); 57147e946e7SWyllys Ingersoll void logterm(); 57247e946e7SWyllys Ingersoll void logit(int, char *, ...); 57347e946e7SWyllys Ingersoll void AddToSessionList(Session_Struct_t *); 57447e946e7SWyllys Ingersoll void RemoveFromSessionList(Session_Struct_t *); 57547e946e7SWyllys Ingersoll 57647e946e7SWyllys Ingersoll int Valid_Session(Session_Struct_t *, ST_SESSION_T *); 57747e946e7SWyllys Ingersoll 57847e946e7SWyllys Ingersoll CK_BBOOL pin_expired(CK_SESSION_INFO *, CK_FLAGS); 57947e946e7SWyllys Ingersoll CK_BBOOL pin_locked(CK_SESSION_INFO *, CK_FLAGS); 58047e946e7SWyllys Ingersoll void set_login_flags(CK_USER_TYPE, CK_FLAGS *); 58147e946e7SWyllys Ingersoll 58247e946e7SWyllys Ingersoll extern void init_slot_info(TOKEN_DATA *); 58347e946e7SWyllys Ingersoll 58447e946e7SWyllys Ingersoll CK_RV update_migration_data(TSS_HCONTEXT, 58547e946e7SWyllys Ingersoll TSS_HKEY, TSS_HKEY, char *, char *, BYTE *, BYTE *); 58647e946e7SWyllys Ingersoll CK_RV token_rng(TSS_HCONTEXT, CK_BYTE *, CK_ULONG); 58747e946e7SWyllys Ingersoll 58847e946e7SWyllys Ingersoll TSS_RESULT set_public_modulus(TSS_HCONTEXT, TSS_HKEY, 58947e946e7SWyllys Ingersoll unsigned long, unsigned char *); 59047e946e7SWyllys Ingersoll TSS_RESULT open_tss_context(TSS_HCONTEXT *); 59147e946e7SWyllys Ingersoll CK_RV token_get_tpm_info(TSS_HCONTEXT, TOKEN_DATA *); 59247e946e7SWyllys Ingersoll 59347e946e7SWyllys Ingersoll CK_RV clock_set_default_attributes(TEMPLATE *); 59447e946e7SWyllys Ingersoll CK_RV clock_check_required_attributes(TEMPLATE *, CK_ULONG); 59547e946e7SWyllys Ingersoll CK_RV clock_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 59647e946e7SWyllys Ingersoll 59747e946e7SWyllys Ingersoll CK_RV counter_set_default_attributes(TEMPLATE *); 59847e946e7SWyllys Ingersoll CK_RV counter_check_required_attributes(TEMPLATE *, CK_ULONG); 59947e946e7SWyllys Ingersoll CK_RV counter_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 60047e946e7SWyllys Ingersoll 60147e946e7SWyllys Ingersoll CK_RV compute_next_token_obj_name(CK_BYTE *, CK_BYTE *); 60247e946e7SWyllys Ingersoll 60347e946e7SWyllys Ingersoll CK_RV save_token_object(TSS_HCONTEXT, OBJECT *); 60447e946e7SWyllys Ingersoll CK_RV save_public_token_object(OBJECT *); 60547e946e7SWyllys Ingersoll CK_RV save_private_token_object(TSS_HCONTEXT, OBJECT *); 60647e946e7SWyllys Ingersoll 60747e946e7SWyllys Ingersoll CK_RV load_public_token_objects(void); 60847e946e7SWyllys Ingersoll CK_RV load_private_token_objects(TSS_HCONTEXT); 60947e946e7SWyllys Ingersoll 61047e946e7SWyllys Ingersoll CK_RV reload_token_object(TSS_HCONTEXT, OBJECT *); 61147e946e7SWyllys Ingersoll 61247e946e7SWyllys Ingersoll CK_RV delete_token_object(OBJECT *); 61347e946e7SWyllys Ingersoll 61447e946e7SWyllys Ingersoll CK_RV init_token_data(TSS_HCONTEXT, TOKEN_DATA *); 61547e946e7SWyllys Ingersoll CK_RV load_token_data(TSS_HCONTEXT, TOKEN_DATA *); 61647e946e7SWyllys Ingersoll CK_RV save_token_data(TOKEN_DATA *); 61747e946e7SWyllys Ingersoll void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR); 61847e946e7SWyllys Ingersoll 61933c15889SWyllys Ingersoll CK_RV compute_sha(CK_BYTE *, CK_ULONG_32, CK_BYTE *); 62047e946e7SWyllys Ingersoll 62147e946e7SWyllys Ingersoll CK_RV parity_is_odd(CK_BYTE); 62247e946e7SWyllys Ingersoll 62347e946e7SWyllys Ingersoll CK_RV build_attribute(CK_ATTRIBUTE_TYPE, 62447e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, CK_ATTRIBUTE **); 62547e946e7SWyllys Ingersoll 62633c15889SWyllys Ingersoll CK_RV add_pkcs_padding(CK_BYTE *, UINT32, UINT32, UINT32); 62747e946e7SWyllys Ingersoll 62833c15889SWyllys Ingersoll CK_RV strip_pkcs_padding(CK_BYTE *, UINT32, UINT32 *); 62947e946e7SWyllys Ingersoll 63047e946e7SWyllys Ingersoll CK_RV remove_leading_zeros(CK_ATTRIBUTE *); 63147e946e7SWyllys Ingersoll 63247e946e7SWyllys Ingersoll CK_RV rsa_pkcs_encrypt( 63347e946e7SWyllys Ingersoll SESSION *, 63447e946e7SWyllys Ingersoll CK_BBOOL, 63547e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 63647e946e7SWyllys Ingersoll CK_BYTE *, 63747e946e7SWyllys Ingersoll CK_ULONG, 63847e946e7SWyllys Ingersoll CK_BYTE *, 63947e946e7SWyllys Ingersoll CK_ULONG *); 64047e946e7SWyllys Ingersoll 64147e946e7SWyllys Ingersoll CK_RV rsa_pkcs_decrypt(SESSION *, 64247e946e7SWyllys Ingersoll CK_BBOOL, 64347e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 64447e946e7SWyllys Ingersoll CK_BYTE *, 64547e946e7SWyllys Ingersoll CK_ULONG, 64647e946e7SWyllys Ingersoll CK_BYTE *, 64747e946e7SWyllys Ingersoll CK_ULONG *); 64847e946e7SWyllys Ingersoll 64947e946e7SWyllys Ingersoll CK_RV rsa_pkcs_sign(SESSION *, 65047e946e7SWyllys Ingersoll CK_BBOOL, 65147e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 65247e946e7SWyllys Ingersoll CK_BYTE *, 65347e946e7SWyllys Ingersoll CK_ULONG, 65447e946e7SWyllys Ingersoll CK_BYTE *, 65547e946e7SWyllys Ingersoll CK_ULONG *); 65647e946e7SWyllys Ingersoll 65747e946e7SWyllys Ingersoll CK_RV rsa_pkcs_verify(SESSION *, 65847e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 65947e946e7SWyllys Ingersoll CK_BYTE *, 66047e946e7SWyllys Ingersoll CK_ULONG, 66147e946e7SWyllys Ingersoll CK_BYTE *, 66247e946e7SWyllys Ingersoll CK_ULONG); 66347e946e7SWyllys Ingersoll 66447e946e7SWyllys Ingersoll CK_RV rsa_pkcs_verify_recover(SESSION *, 66547e946e7SWyllys Ingersoll CK_BBOOL, 66647e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 66747e946e7SWyllys Ingersoll CK_BYTE *, 66847e946e7SWyllys Ingersoll CK_ULONG, 66947e946e7SWyllys Ingersoll CK_BYTE *, 67047e946e7SWyllys Ingersoll CK_ULONG *); 67147e946e7SWyllys Ingersoll 67247e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_sign(SESSION *, 67347e946e7SWyllys Ingersoll CK_BBOOL, 67447e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 67547e946e7SWyllys Ingersoll CK_BYTE *, 67647e946e7SWyllys Ingersoll CK_ULONG, 67747e946e7SWyllys Ingersoll CK_BYTE *, 67847e946e7SWyllys Ingersoll CK_ULONG *); 67947e946e7SWyllys Ingersoll 68047e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_verify(SESSION *, 68147e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 68247e946e7SWyllys Ingersoll CK_BYTE *, 68347e946e7SWyllys Ingersoll CK_ULONG, 68447e946e7SWyllys Ingersoll CK_BYTE *, 68547e946e7SWyllys Ingersoll CK_ULONG); 68647e946e7SWyllys Ingersoll 68747e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_sign_update(SESSION *, 68847e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 68947e946e7SWyllys Ingersoll CK_BYTE *, 69047e946e7SWyllys Ingersoll CK_ULONG); 69147e946e7SWyllys Ingersoll 69247e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_verify_update(SESSION *, 69347e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 69447e946e7SWyllys Ingersoll CK_BYTE *, 69547e946e7SWyllys Ingersoll CK_ULONG); 69647e946e7SWyllys Ingersoll 69747e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_sign_final(SESSION *, 69847e946e7SWyllys Ingersoll CK_BBOOL, 69947e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 70047e946e7SWyllys Ingersoll CK_BYTE *, 70147e946e7SWyllys Ingersoll CK_ULONG *); 70247e946e7SWyllys Ingersoll 70347e946e7SWyllys Ingersoll CK_RV rsa_hash_pkcs_verify_final(SESSION *, 70447e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 70547e946e7SWyllys Ingersoll CK_BYTE *, 70647e946e7SWyllys Ingersoll CK_ULONG); 70747e946e7SWyllys Ingersoll 70847e946e7SWyllys Ingersoll 70947e946e7SWyllys Ingersoll CK_RV ckm_rsa_key_pair_gen(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *); 71047e946e7SWyllys Ingersoll 71147e946e7SWyllys Ingersoll CK_RV sha1_hash(SESSION *, CK_BBOOL, 71247e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 71347e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, 71447e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 71547e946e7SWyllys Ingersoll 71647e946e7SWyllys Ingersoll CK_RV sha1_hmac_sign(SESSION *, CK_BBOOL, 71747e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 71847e946e7SWyllys Ingersoll CK_BYTE *, 71947e946e7SWyllys Ingersoll CK_ULONG, 72047e946e7SWyllys Ingersoll CK_BYTE *, 72147e946e7SWyllys Ingersoll CK_ULONG *); 72247e946e7SWyllys Ingersoll 72347e946e7SWyllys Ingersoll CK_RV sha1_hmac_verify(SESSION *, 72447e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 72547e946e7SWyllys Ingersoll CK_BYTE *, 72647e946e7SWyllys Ingersoll CK_ULONG, 72747e946e7SWyllys Ingersoll CK_BYTE *, 72847e946e7SWyllys Ingersoll CK_ULONG); 72947e946e7SWyllys Ingersoll 73047e946e7SWyllys Ingersoll CK_RV md5_hash(SESSION *, CK_BBOOL, 73147e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 73247e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, 73347e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 73447e946e7SWyllys Ingersoll 73547e946e7SWyllys Ingersoll CK_RV md5_hmac_sign(SESSION *, CK_BBOOL, 73647e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 73747e946e7SWyllys Ingersoll CK_BYTE *, 73847e946e7SWyllys Ingersoll CK_ULONG, 73947e946e7SWyllys Ingersoll CK_BYTE *, 74047e946e7SWyllys Ingersoll CK_ULONG *); 74147e946e7SWyllys Ingersoll 74247e946e7SWyllys Ingersoll CK_RV md5_hmac_verify(SESSION *, 74347e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 74447e946e7SWyllys Ingersoll CK_BYTE *, 74547e946e7SWyllys Ingersoll CK_ULONG, 74647e946e7SWyllys Ingersoll CK_BYTE *, 74747e946e7SWyllys Ingersoll CK_ULONG); 74847e946e7SWyllys Ingersoll 74947e946e7SWyllys Ingersoll DL_NODE *dlist_add_as_first(DL_NODE *, void *); 75047e946e7SWyllys Ingersoll DL_NODE *dlist_add_as_last(DL_NODE *, void *); 75147e946e7SWyllys Ingersoll DL_NODE *dlist_find(DL_NODE *, void *); 75247e946e7SWyllys Ingersoll DL_NODE *dlist_get_first(DL_NODE *); 75347e946e7SWyllys Ingersoll DL_NODE *dlist_get_last(DL_NODE *); 75447e946e7SWyllys Ingersoll CK_ULONG dlist_length(DL_NODE *); 75547e946e7SWyllys Ingersoll DL_NODE *dlist_next(DL_NODE *); 75647e946e7SWyllys Ingersoll DL_NODE *dlist_prev(DL_NODE *); 75747e946e7SWyllys Ingersoll void dlist_purge(DL_NODE *); 75847e946e7SWyllys Ingersoll DL_NODE *dlist_remove_node(DL_NODE *, DL_NODE *); 75947e946e7SWyllys Ingersoll 76047e946e7SWyllys Ingersoll CK_RV attach_shm(void); 76147e946e7SWyllys Ingersoll CK_RV detach_shm(void); 76247e946e7SWyllys Ingersoll 76347e946e7SWyllys Ingersoll // encryption manager routines 76447e946e7SWyllys Ingersoll // 76547e946e7SWyllys Ingersoll CK_RV encr_mgr_init(SESSION *, 76647e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 76747e946e7SWyllys Ingersoll CK_ULONG, 76847e946e7SWyllys Ingersoll CK_MECHANISM *, 76947e946e7SWyllys Ingersoll CK_OBJECT_HANDLE); 77047e946e7SWyllys Ingersoll 77147e946e7SWyllys Ingersoll CK_RV encr_mgr_cleanup(ENCR_DECR_CONTEXT *); 77247e946e7SWyllys Ingersoll 77347e946e7SWyllys Ingersoll CK_RV encr_mgr_encrypt(SESSION *, CK_BBOOL, 77447e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 77547e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, 77647e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 77747e946e7SWyllys Ingersoll 77847e946e7SWyllys Ingersoll CK_RV decr_mgr_init(SESSION *, 77947e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 78047e946e7SWyllys Ingersoll CK_ULONG, 78147e946e7SWyllys Ingersoll CK_MECHANISM *, 78247e946e7SWyllys Ingersoll CK_OBJECT_HANDLE); 78347e946e7SWyllys Ingersoll 78447e946e7SWyllys Ingersoll CK_RV decr_mgr_cleanup(ENCR_DECR_CONTEXT *); 78547e946e7SWyllys Ingersoll 78647e946e7SWyllys Ingersoll CK_RV decr_mgr_decrypt(SESSION *, CK_BBOOL, 78747e946e7SWyllys Ingersoll ENCR_DECR_CONTEXT *, 78847e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, 78947e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 79047e946e7SWyllys Ingersoll 79147e946e7SWyllys Ingersoll CK_RV digest_mgr_cleanup(DIGEST_CONTEXT *); 79247e946e7SWyllys Ingersoll 79347e946e7SWyllys Ingersoll CK_RV digest_mgr_init(SESSION *, 79447e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 79547e946e7SWyllys Ingersoll CK_MECHANISM *); 79647e946e7SWyllys Ingersoll 79747e946e7SWyllys Ingersoll CK_RV digest_mgr_digest(SESSION *, CK_BBOOL, 79847e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 79947e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG, 80047e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 80147e946e7SWyllys Ingersoll 80247e946e7SWyllys Ingersoll CK_RV digest_mgr_digest_update(SESSION *, 80347e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 80447e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG); 80547e946e7SWyllys Ingersoll 80647e946e7SWyllys Ingersoll CK_RV digest_mgr_digest_key(SESSION *, 80747e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 80847e946e7SWyllys Ingersoll CK_OBJECT_HANDLE); 80947e946e7SWyllys Ingersoll 81047e946e7SWyllys Ingersoll CK_RV digest_mgr_digest_final(SESSION *, 81147e946e7SWyllys Ingersoll DIGEST_CONTEXT *, 81247e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 81347e946e7SWyllys Ingersoll 81447e946e7SWyllys Ingersoll CK_RV key_mgr_generate_key_pair(SESSION *, 81547e946e7SWyllys Ingersoll CK_MECHANISM *, 81647e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, 81747e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, 81847e946e7SWyllys Ingersoll CK_OBJECT_HANDLE *, 81947e946e7SWyllys Ingersoll CK_OBJECT_HANDLE *); 82047e946e7SWyllys Ingersoll 82147e946e7SWyllys Ingersoll CK_RV key_mgr_wrap_key(SESSION *, 82247e946e7SWyllys Ingersoll CK_BBOOL, 82347e946e7SWyllys Ingersoll CK_MECHANISM *, 82447e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, 82547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, 82647e946e7SWyllys Ingersoll CK_BYTE *, 82747e946e7SWyllys Ingersoll CK_ULONG *); 82847e946e7SWyllys Ingersoll 82947e946e7SWyllys Ingersoll CK_RV key_mgr_unwrap_key(SESSION *, 83047e946e7SWyllys Ingersoll CK_MECHANISM *, 83147e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 83247e946e7SWyllys Ingersoll CK_ULONG, 83347e946e7SWyllys Ingersoll CK_BYTE *, 83447e946e7SWyllys Ingersoll CK_ULONG, 83547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, 83647e946e7SWyllys Ingersoll CK_OBJECT_HANDLE *); 83747e946e7SWyllys Ingersoll 83847e946e7SWyllys Ingersoll CK_RV sign_mgr_init(SESSION *, 83947e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 84047e946e7SWyllys Ingersoll CK_MECHANISM *, 84147e946e7SWyllys Ingersoll CK_BBOOL, 84247e946e7SWyllys Ingersoll CK_OBJECT_HANDLE); 84347e946e7SWyllys Ingersoll 84447e946e7SWyllys Ingersoll CK_RV sign_mgr_cleanup(SIGN_VERIFY_CONTEXT *); 84547e946e7SWyllys Ingersoll 84647e946e7SWyllys Ingersoll CK_RV sign_mgr_sign(SESSION *, 84747e946e7SWyllys Ingersoll CK_BBOOL, 84847e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 84947e946e7SWyllys Ingersoll CK_BYTE *, 85047e946e7SWyllys Ingersoll CK_ULONG, 85147e946e7SWyllys Ingersoll CK_BYTE *, 85247e946e7SWyllys Ingersoll CK_ULONG *); 85347e946e7SWyllys Ingersoll 85447e946e7SWyllys Ingersoll CK_RV sign_mgr_sign_recover(SESSION *, 85547e946e7SWyllys Ingersoll CK_BBOOL, 85647e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 85747e946e7SWyllys Ingersoll CK_BYTE *, 85847e946e7SWyllys Ingersoll CK_ULONG, 85947e946e7SWyllys Ingersoll CK_BYTE *, 86047e946e7SWyllys Ingersoll CK_ULONG *); 86147e946e7SWyllys Ingersoll 86247e946e7SWyllys Ingersoll CK_RV sign_mgr_sign_final(SESSION *, 86347e946e7SWyllys Ingersoll CK_BBOOL, 86447e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 86547e946e7SWyllys Ingersoll CK_BYTE *, 86647e946e7SWyllys Ingersoll CK_ULONG *); 86747e946e7SWyllys Ingersoll 86847e946e7SWyllys Ingersoll CK_RV sign_mgr_sign_update(SESSION *, 86947e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 87047e946e7SWyllys Ingersoll CK_BYTE *, 87147e946e7SWyllys Ingersoll CK_ULONG); 87247e946e7SWyllys Ingersoll 87347e946e7SWyllys Ingersoll CK_RV verify_mgr_init(SESSION *, 87447e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 87547e946e7SWyllys Ingersoll CK_MECHANISM *, 87647e946e7SWyllys Ingersoll CK_BBOOL, 87747e946e7SWyllys Ingersoll CK_OBJECT_HANDLE); 87847e946e7SWyllys Ingersoll 87947e946e7SWyllys Ingersoll CK_RV verify_mgr_cleanup(SIGN_VERIFY_CONTEXT *); 88047e946e7SWyllys Ingersoll 88147e946e7SWyllys Ingersoll CK_RV verify_mgr_verify(SESSION *, 88247e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 88347e946e7SWyllys Ingersoll CK_BYTE *, 88447e946e7SWyllys Ingersoll CK_ULONG, 88547e946e7SWyllys Ingersoll CK_BYTE *, 88647e946e7SWyllys Ingersoll CK_ULONG); 88747e946e7SWyllys Ingersoll 88847e946e7SWyllys Ingersoll CK_RV verify_mgr_verify_recover(SESSION *, 88947e946e7SWyllys Ingersoll CK_BBOOL, 89047e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 89147e946e7SWyllys Ingersoll CK_BYTE *, 89247e946e7SWyllys Ingersoll CK_ULONG, 89347e946e7SWyllys Ingersoll CK_BYTE *, 89447e946e7SWyllys Ingersoll CK_ULONG *); 89547e946e7SWyllys Ingersoll 89647e946e7SWyllys Ingersoll CK_RV verify_mgr_verify_update(SESSION *, 89747e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 89847e946e7SWyllys Ingersoll CK_BYTE *, 89947e946e7SWyllys Ingersoll CK_ULONG); 90047e946e7SWyllys Ingersoll 90147e946e7SWyllys Ingersoll CK_RV verify_mgr_verify_final(SESSION *, 90247e946e7SWyllys Ingersoll SIGN_VERIFY_CONTEXT *, 90347e946e7SWyllys Ingersoll CK_BYTE *, 90447e946e7SWyllys Ingersoll CK_ULONG); 90547e946e7SWyllys Ingersoll 90647e946e7SWyllys Ingersoll 90747e946e7SWyllys Ingersoll // session manager routines 90847e946e7SWyllys Ingersoll // 90947e946e7SWyllys Ingersoll CK_RV session_mgr_close_all_sessions(void); 91047e946e7SWyllys Ingersoll CK_RV session_mgr_close_session(SESSION *); 91147e946e7SWyllys Ingersoll SESSION *session_mgr_find(CK_SESSION_HANDLE); 91247e946e7SWyllys Ingersoll CK_RV session_mgr_login_all(CK_USER_TYPE); 91347e946e7SWyllys Ingersoll CK_RV session_mgr_logout_all(void); 91447e946e7SWyllys Ingersoll CK_RV session_mgr_new(CK_ULONG, SESSION **); 91547e946e7SWyllys Ingersoll 91647e946e7SWyllys Ingersoll CK_BBOOL session_mgr_readonly_exists(void); 91747e946e7SWyllys Ingersoll CK_BBOOL session_mgr_so_session_exists(void); 91847e946e7SWyllys Ingersoll CK_BBOOL session_mgr_user_session_exists(void); 91947e946e7SWyllys Ingersoll CK_BBOOL session_mgr_public_session_exists(void); 92047e946e7SWyllys Ingersoll 92147e946e7SWyllys Ingersoll CK_RV session_mgr_get_op_state(SESSION *, CK_BBOOL, 92247e946e7SWyllys Ingersoll CK_BYTE *, CK_ULONG *); 92347e946e7SWyllys Ingersoll 92447e946e7SWyllys Ingersoll CK_RV session_mgr_set_op_state(SESSION *, 92547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *); 92647e946e7SWyllys Ingersoll 92747e946e7SWyllys Ingersoll CK_RV object_mgr_add(SESSION *, 92847e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *); 92947e946e7SWyllys Ingersoll 93047e946e7SWyllys Ingersoll CK_RV object_mgr_add_to_map(SESSION *, OBJECT *, CK_OBJECT_HANDLE *); 93147e946e7SWyllys Ingersoll 93247e946e7SWyllys Ingersoll CK_RV object_mgr_add_to_shm(OBJECT *); 93347e946e7SWyllys Ingersoll CK_RV object_mgr_del_from_shm(OBJECT *); 93447e946e7SWyllys Ingersoll 93547e946e7SWyllys Ingersoll CK_RV object_mgr_copy(SESSION *, 93647e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE, 93747e946e7SWyllys Ingersoll CK_OBJECT_HANDLE *); 93847e946e7SWyllys Ingersoll 93947e946e7SWyllys Ingersoll CK_RV object_mgr_create_final(SESSION *, 94047e946e7SWyllys Ingersoll OBJECT *, CK_OBJECT_HANDLE *); 94147e946e7SWyllys Ingersoll 94247e946e7SWyllys Ingersoll CK_RV object_mgr_create_skel(SESSION *, 94347e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, 94447e946e7SWyllys Ingersoll CK_ULONG, CK_ULONG, OBJECT **); 94547e946e7SWyllys Ingersoll 94647e946e7SWyllys Ingersoll CK_RV object_mgr_destroy_object(SESSION *, CK_OBJECT_HANDLE); 94747e946e7SWyllys Ingersoll 94847e946e7SWyllys Ingersoll CK_RV object_mgr_destroy_token_objects(TSS_HCONTEXT); 94947e946e7SWyllys Ingersoll 95047e946e7SWyllys Ingersoll CK_RV object_mgr_find_in_map1(TSS_HCONTEXT, CK_OBJECT_HANDLE, OBJECT **); 95147e946e7SWyllys Ingersoll 95247e946e7SWyllys Ingersoll CK_RV object_mgr_find_in_map2(TSS_HCONTEXT, OBJECT *, CK_OBJECT_HANDLE *); 95347e946e7SWyllys Ingersoll 95447e946e7SWyllys Ingersoll CK_RV object_mgr_find_init(SESSION *, CK_ATTRIBUTE *, CK_ULONG); 95547e946e7SWyllys Ingersoll 95647e946e7SWyllys Ingersoll CK_RV object_mgr_find_build_list(SESSION *, 95747e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 95847e946e7SWyllys Ingersoll CK_ULONG, 95947e946e7SWyllys Ingersoll DL_NODE *, 96047e946e7SWyllys Ingersoll CK_BBOOL public_only); 96147e946e7SWyllys Ingersoll 96247e946e7SWyllys Ingersoll CK_RV object_mgr_find_final(SESSION *); 96347e946e7SWyllys Ingersoll 96447e946e7SWyllys Ingersoll CK_RV object_mgr_get_attribute_values(SESSION *, 96547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, 96647e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 96747e946e7SWyllys Ingersoll CK_ULONG); 96847e946e7SWyllys Ingersoll 96947e946e7SWyllys Ingersoll CK_RV object_mgr_get_object_size(TSS_HCONTEXT, CK_OBJECT_HANDLE, 97047e946e7SWyllys Ingersoll CK_ULONG *); 97147e946e7SWyllys Ingersoll 97247e946e7SWyllys Ingersoll CK_BBOOL object_mgr_invalidate_handle1(CK_OBJECT_HANDLE handle); 97347e946e7SWyllys Ingersoll 97447e946e7SWyllys Ingersoll CK_BBOOL object_mgr_invalidate_handle2(OBJECT *); 97547e946e7SWyllys Ingersoll 97647e946e7SWyllys Ingersoll CK_BBOOL object_mgr_purge_session_objects(SESSION *, SESS_OBJ_TYPE); 97747e946e7SWyllys Ingersoll 97847e946e7SWyllys Ingersoll CK_BBOOL object_mgr_purge_token_objects(TSS_HCONTEXT); 97947e946e7SWyllys Ingersoll 98047e946e7SWyllys Ingersoll CK_BBOOL object_mgr_purge_private_token_objects(TSS_HCONTEXT); 98147e946e7SWyllys Ingersoll 98247e946e7SWyllys Ingersoll CK_RV object_mgr_remove_from_map(CK_OBJECT_HANDLE); 98347e946e7SWyllys Ingersoll 98447e946e7SWyllys Ingersoll CK_RV object_mgr_restore_obj(CK_BYTE *, OBJECT *); 98547e946e7SWyllys Ingersoll 98647e946e7SWyllys Ingersoll CK_RV object_mgr_set_attribute_values(SESSION *, 98747e946e7SWyllys Ingersoll CK_OBJECT_HANDLE, 98847e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 98947e946e7SWyllys Ingersoll CK_ULONG); 99047e946e7SWyllys Ingersoll 99147e946e7SWyllys Ingersoll CK_BBOOL object_mgr_purge_map(SESSION *, SESS_OBJ_TYPE); 99247e946e7SWyllys Ingersoll 99347e946e7SWyllys Ingersoll CK_RV object_create(CK_ATTRIBUTE *, CK_ULONG, OBJECT **); 99447e946e7SWyllys Ingersoll 99547e946e7SWyllys Ingersoll CK_RV object_create_skel(CK_ATTRIBUTE *, 99647e946e7SWyllys Ingersoll CK_ULONG, 99747e946e7SWyllys Ingersoll CK_ULONG, 99847e946e7SWyllys Ingersoll CK_ULONG, 99947e946e7SWyllys Ingersoll CK_ULONG, 100047e946e7SWyllys Ingersoll OBJECT **); 100147e946e7SWyllys Ingersoll 100247e946e7SWyllys Ingersoll CK_RV object_copy(CK_ATTRIBUTE *, 100347e946e7SWyllys Ingersoll CK_ULONG, 100447e946e7SWyllys Ingersoll OBJECT *, 100547e946e7SWyllys Ingersoll OBJECT **); 100647e946e7SWyllys Ingersoll 100747e946e7SWyllys Ingersoll CK_RV object_flatten(OBJECT *, 100847e946e7SWyllys Ingersoll CK_BYTE **, 100933c15889SWyllys Ingersoll CK_ULONG_32 *); 101047e946e7SWyllys Ingersoll 101147e946e7SWyllys Ingersoll CK_BBOOL object_free(OBJECT *); 101247e946e7SWyllys Ingersoll 101347e946e7SWyllys Ingersoll CK_RV object_get_attribute_values(OBJECT *, 101447e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 101547e946e7SWyllys Ingersoll CK_ULONG); 101647e946e7SWyllys Ingersoll 101747e946e7SWyllys Ingersoll CK_ULONG object_get_size(OBJECT *); 101847e946e7SWyllys Ingersoll 101947e946e7SWyllys Ingersoll CK_RV object_restore(CK_BYTE *, 102047e946e7SWyllys Ingersoll OBJECT **, 102147e946e7SWyllys Ingersoll CK_BBOOL replace); 102247e946e7SWyllys Ingersoll 102347e946e7SWyllys Ingersoll CK_RV object_set_attribute_values(OBJECT *, 102447e946e7SWyllys Ingersoll CK_ATTRIBUTE *, 102547e946e7SWyllys Ingersoll CK_ULONG); 102647e946e7SWyllys Ingersoll 102747e946e7SWyllys Ingersoll CK_BBOOL object_is_modifiable(OBJECT *); 102847e946e7SWyllys Ingersoll CK_BBOOL object_is_private(OBJECT *); 102947e946e7SWyllys Ingersoll CK_BBOOL object_is_public(OBJECT *); 103047e946e7SWyllys Ingersoll CK_BBOOL object_is_token_object(OBJECT *); 103147e946e7SWyllys Ingersoll CK_BBOOL object_is_session_object(OBJECT *); 103247e946e7SWyllys Ingersoll 103347e946e7SWyllys Ingersoll CK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE); 103447e946e7SWyllys Ingersoll 103547e946e7SWyllys Ingersoll CK_RV template_add_attributes(TEMPLATE *, 103647e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG); 103747e946e7SWyllys Ingersoll 103847e946e7SWyllys Ingersoll CK_RV template_add_default_attributes(TEMPLATE *, 103947e946e7SWyllys Ingersoll CK_ULONG, 104047e946e7SWyllys Ingersoll CK_ULONG, 104147e946e7SWyllys Ingersoll CK_ULONG); 104247e946e7SWyllys Ingersoll 104347e946e7SWyllys Ingersoll CK_BBOOL template_attribute_find(TEMPLATE *, 104447e946e7SWyllys Ingersoll CK_ATTRIBUTE_TYPE, CK_ATTRIBUTE **); 104547e946e7SWyllys Ingersoll 104647e946e7SWyllys Ingersoll void template_attribute_find_multiple(TEMPLATE *, 104747e946e7SWyllys Ingersoll ATTRIBUTE_PARSE_LIST *, 104847e946e7SWyllys Ingersoll CK_ULONG); 104947e946e7SWyllys Ingersoll 105047e946e7SWyllys Ingersoll CK_BBOOL template_check_exportability(TEMPLATE *, CK_ATTRIBUTE_TYPE type); 105147e946e7SWyllys Ingersoll 105247e946e7SWyllys Ingersoll CK_RV template_check_required_attributes(TEMPLATE *, 105347e946e7SWyllys Ingersoll CK_ULONG, CK_ULONG, CK_ULONG); 105447e946e7SWyllys Ingersoll 105547e946e7SWyllys Ingersoll CK_RV template_check_required_base_attributes(TEMPLATE *, 105647e946e7SWyllys Ingersoll CK_ULONG); 105747e946e7SWyllys Ingersoll 105847e946e7SWyllys Ingersoll CK_BBOOL template_compare(CK_ATTRIBUTE *, 105947e946e7SWyllys Ingersoll CK_ULONG, TEMPLATE *); 106047e946e7SWyllys Ingersoll 106147e946e7SWyllys Ingersoll CK_RV template_copy(TEMPLATE *, TEMPLATE *); 106247e946e7SWyllys Ingersoll 106347e946e7SWyllys Ingersoll CK_RV template_flatten(TEMPLATE *, CK_BYTE *); 106447e946e7SWyllys Ingersoll 106547e946e7SWyllys Ingersoll CK_RV template_free(TEMPLATE *); 106647e946e7SWyllys Ingersoll 106747e946e7SWyllys Ingersoll CK_BBOOL template_get_class(TEMPLATE *, CK_ULONG *, CK_ULONG *); 106847e946e7SWyllys Ingersoll 106947e946e7SWyllys Ingersoll CK_ULONG template_get_count(TEMPLATE *); 107047e946e7SWyllys Ingersoll 107147e946e7SWyllys Ingersoll CK_ULONG template_get_size(TEMPLATE *); 107247e946e7SWyllys Ingersoll CK_ULONG template_get_compressed_size(TEMPLATE *); 107347e946e7SWyllys Ingersoll 107447e946e7SWyllys Ingersoll CK_RV template_set_default_common_attributes(TEMPLATE *); 107547e946e7SWyllys Ingersoll 107647e946e7SWyllys Ingersoll CK_RV template_merge(TEMPLATE *, TEMPLATE **); 107747e946e7SWyllys Ingersoll 107847e946e7SWyllys Ingersoll CK_RV template_update_attribute(TEMPLATE *, CK_ATTRIBUTE *); 107947e946e7SWyllys Ingersoll 108047e946e7SWyllys Ingersoll CK_RV template_unflatten(TEMPLATE **, CK_BYTE *, CK_ULONG); 108147e946e7SWyllys Ingersoll 108247e946e7SWyllys Ingersoll CK_RV template_validate_attribute(TEMPLATE *, 108347e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, CK_ULONG); 108447e946e7SWyllys Ingersoll 108547e946e7SWyllys Ingersoll CK_RV template_validate_attributes(TEMPLATE *, 108647e946e7SWyllys Ingersoll CK_ULONG, CK_ULONG, CK_ULONG); 108747e946e7SWyllys Ingersoll 108847e946e7SWyllys Ingersoll CK_RV template_validate_base_attribute(TEMPLATE *, 108947e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG); 109047e946e7SWyllys Ingersoll 109147e946e7SWyllys Ingersoll 109247e946e7SWyllys Ingersoll // DATA OBJECT ROUTINES 109347e946e7SWyllys Ingersoll // 109447e946e7SWyllys Ingersoll CK_RV data_object_check_required_attributes(TEMPLATE *, CK_ULONG); 109547e946e7SWyllys Ingersoll CK_RV data_object_set_default_attributes(TEMPLATE *, CK_ULONG); 109647e946e7SWyllys Ingersoll CK_RV data_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 109747e946e7SWyllys Ingersoll 109847e946e7SWyllys Ingersoll // CERTIFICATE ROUTINES 109947e946e7SWyllys Ingersoll CK_RV cert_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 110047e946e7SWyllys Ingersoll 110147e946e7SWyllys Ingersoll CK_RV cert_x509_check_required_attributes(TEMPLATE *, CK_ULONG); 110247e946e7SWyllys Ingersoll CK_RV cert_x509_set_default_attributes(TEMPLATE *, CK_ULONG); 110347e946e7SWyllys Ingersoll CK_RV cert_x509_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 110447e946e7SWyllys Ingersoll CK_RV cert_vendor_check_required_attributes(TEMPLATE *, CK_ULONG); 110547e946e7SWyllys Ingersoll CK_RV cert_vendor_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 110647e946e7SWyllys Ingersoll 110747e946e7SWyllys Ingersoll // 110847e946e7SWyllys Ingersoll // KEY ROUTINES 110947e946e7SWyllys Ingersoll // 111047e946e7SWyllys Ingersoll CK_RV key_object_check_required_attributes(TEMPLATE *, CK_ULONG); 111147e946e7SWyllys Ingersoll CK_RV key_object_set_default_attributes(TEMPLATE *, CK_ULONG); 111247e946e7SWyllys Ingersoll CK_RV key_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 111347e946e7SWyllys Ingersoll 111447e946e7SWyllys Ingersoll CK_RV publ_key_check_required_attributes(TEMPLATE *, CK_ULONG); 111547e946e7SWyllys Ingersoll CK_RV publ_key_set_default_attributes(TEMPLATE *, CK_ULONG); 111647e946e7SWyllys Ingersoll CK_RV publ_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 111747e946e7SWyllys Ingersoll 111847e946e7SWyllys Ingersoll CK_RV priv_key_check_required_attributes(TEMPLATE *, CK_ULONG); 111947e946e7SWyllys Ingersoll CK_RV priv_key_set_default_attributes(TEMPLATE *, CK_ULONG); 112047e946e7SWyllys Ingersoll CK_RV priv_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG); 112147e946e7SWyllys Ingersoll CK_RV priv_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 112247e946e7SWyllys Ingersoll 112347e946e7SWyllys Ingersoll CK_BBOOL secret_key_check_exportability(CK_ATTRIBUTE_TYPE type); 112447e946e7SWyllys Ingersoll CK_RV secret_key_check_required_attributes(TEMPLATE *, CK_ULONG); 112547e946e7SWyllys Ingersoll CK_RV secret_key_set_default_attributes(TEMPLATE *, CK_ULONG); 112647e946e7SWyllys Ingersoll CK_RV secret_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG, 112747e946e7SWyllys Ingersoll CK_BBOOL fromend); 112847e946e7SWyllys Ingersoll CK_RV secret_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, 112947e946e7SWyllys Ingersoll CK_ULONG); 113047e946e7SWyllys Ingersoll 113147e946e7SWyllys Ingersoll // rsa routines 113247e946e7SWyllys Ingersoll // 113347e946e7SWyllys Ingersoll CK_RV rsa_publ_check_required_attributes(TEMPLATE *, CK_ULONG); 113447e946e7SWyllys Ingersoll CK_RV rsa_publ_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 113547e946e7SWyllys Ingersoll CK_RV rsa_publ_set_default_attributes(TEMPLATE *, CK_ULONG); 113647e946e7SWyllys Ingersoll CK_BBOOL rsa_priv_check_exportability(CK_ATTRIBUTE_TYPE type); 113747e946e7SWyllys Ingersoll CK_RV rsa_priv_check_required_attributes(TEMPLATE *, CK_ULONG); 113847e946e7SWyllys Ingersoll CK_RV rsa_priv_set_default_attributes(TEMPLATE *, CK_ULONG); 113947e946e7SWyllys Ingersoll CK_RV rsa_priv_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 114047e946e7SWyllys Ingersoll CK_RV rsa_priv_wrap_get_data(TEMPLATE *, CK_BBOOL, CK_BYTE **, CK_ULONG *); 114147e946e7SWyllys Ingersoll CK_RV rsa_priv_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG); 114247e946e7SWyllys Ingersoll 114347e946e7SWyllys Ingersoll // Generic secret key routines 114447e946e7SWyllys Ingersoll CK_RV generic_secret_check_required_attributes(TEMPLATE *, CK_ULONG); 114547e946e7SWyllys Ingersoll CK_RV generic_secret_set_default_attributes(TEMPLATE *, CK_ULONG); 114647e946e7SWyllys Ingersoll CK_RV generic_secret_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG); 114747e946e7SWyllys Ingersoll CK_RV generic_secret_wrap_get_data(TEMPLATE *, CK_BBOOL, 114847e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *); 114947e946e7SWyllys Ingersoll 115047e946e7SWyllys Ingersoll CK_RV generic_secret_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG, CK_BBOOL fromend); 115147e946e7SWyllys Ingersoll 115247e946e7SWyllys Ingersoll CK_RV tpm_encrypt_data(TSS_HCONTEXT, 115347e946e7SWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *); 115447e946e7SWyllys Ingersoll 115547e946e7SWyllys Ingersoll CK_RV tpm_decrypt_data(TSS_HCONTEXT, 115647e946e7SWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *); 115747e946e7SWyllys Ingersoll 115847e946e7SWyllys Ingersoll CK_ULONG ber_encode_INTEGER(CK_BBOOL, 115947e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG); 116047e946e7SWyllys Ingersoll 116147e946e7SWyllys Ingersoll CK_RV ber_decode_INTEGER(CK_BYTE *, 116247e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *); 116347e946e7SWyllys Ingersoll 116447e946e7SWyllys Ingersoll CK_RV ber_encode_OCTET_STRING(CK_BBOOL, 116547e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG); 116647e946e7SWyllys Ingersoll 116747e946e7SWyllys Ingersoll CK_RV ber_decode_OCTET_STRING(CK_BYTE *, 116847e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *); 116947e946e7SWyllys Ingersoll 117047e946e7SWyllys Ingersoll CK_RV ber_encode_SEQUENCE(CK_BBOOL, 117147e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG); 117247e946e7SWyllys Ingersoll 117347e946e7SWyllys Ingersoll CK_RV ber_decode_SEQUENCE(CK_BYTE *, 117447e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *); 117547e946e7SWyllys Ingersoll 117647e946e7SWyllys Ingersoll CK_RV ber_encode_PrivateKeyInfo(CK_BBOOL, 117747e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, 117847e946e7SWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG); 117947e946e7SWyllys Ingersoll 118047e946e7SWyllys Ingersoll CK_RV ber_decode_PrivateKeyInfo(CK_BYTE *, 118147e946e7SWyllys Ingersoll CK_ULONG, CK_BYTE **, CK_ULONG *, CK_BYTE **); 118247e946e7SWyllys Ingersoll 118347e946e7SWyllys Ingersoll CK_RV ber_encode_RSAPrivateKey(CK_BBOOL, 118447e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *, 118547e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *, 118647e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *, 118747e946e7SWyllys Ingersoll CK_ATTRIBUTE *); 118847e946e7SWyllys Ingersoll 118947e946e7SWyllys Ingersoll CK_RV ber_decode_RSAPrivateKey(CK_BYTE *, 119047e946e7SWyllys Ingersoll CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **, 119147e946e7SWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **, 119247e946e7SWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **); 119347e946e7SWyllys Ingersoll 119447e946e7SWyllys Ingersoll 119547e946e7SWyllys Ingersoll CK_RV ber_encode_DSAPrivateKey(CK_BBOOL, 119647e946e7SWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *, 119747e946e7SWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *); 119847e946e7SWyllys Ingersoll 119947e946e7SWyllys Ingersoll CK_RV ber_decode_DSAPrivateKey(CK_BYTE *, 120047e946e7SWyllys Ingersoll CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **, 120147e946e7SWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **); 120247e946e7SWyllys Ingersoll 120347e946e7SWyllys Ingersoll #define APPID "TPM_STDLL" 120447e946e7SWyllys Ingersoll 120547e946e7SWyllys Ingersoll /* log to stdout */ 120647e946e7SWyllys Ingersoll #define LogMessage(dest, priority, layer, fmt, ...) \ 120747e946e7SWyllys Ingersoll (void) fprintf(dest, "%s %s %s:%d " fmt "\n", (char *)priority, \ 120847e946e7SWyllys Ingersoll (char *)layer, (char *)__FILE__,\ 120947e946e7SWyllys Ingersoll (int)__LINE__, __VA_ARGS__); 121047e946e7SWyllys Ingersoll 121147e946e7SWyllys Ingersoll #define LogMessage1(dest, priority, layer, data) \ 121247e946e7SWyllys Ingersoll (void) fprintf(dest, "%s %s %s:%d %s\n", priority, layer, __FILE__, \ 121347e946e7SWyllys Ingersoll __LINE__, data); 121447e946e7SWyllys Ingersoll 121547e946e7SWyllys Ingersoll /* Debug logging */ 121647e946e7SWyllys Ingersoll #ifdef DEBUG 121747e946e7SWyllys Ingersoll #define LogDebug(fmt, ...) LogMessage(stdout, "LOG_DEBUG", APPID, \ 121847e946e7SWyllys Ingersoll fmt, __VA_ARGS__) 121947e946e7SWyllys Ingersoll 122047e946e7SWyllys Ingersoll #define LogDebug1(data) LogMessage1(stdout, "LOG_DEBUG", APPID, data) 122147e946e7SWyllys Ingersoll 122247e946e7SWyllys Ingersoll /* Error logging */ 122347e946e7SWyllys Ingersoll #define LogError(fmt, ...) LogMessage(stderr, "LOG_ERR", APPID,\ 122447e946e7SWyllys Ingersoll "ERROR: " fmt, __VA_ARGS__) 122547e946e7SWyllys Ingersoll 122647e946e7SWyllys Ingersoll #define LogError1(data) LogMessage1(stderr, "LOG_ERR", APPID,\ 122747e946e7SWyllys Ingersoll "ERROR: " data) 122847e946e7SWyllys Ingersoll 122947e946e7SWyllys Ingersoll /* Warn logging */ 123047e946e7SWyllys Ingersoll #define LogWarn(fmt, ...) LogMessage(stdout, "LOG_WARNING", APPID,\ 123147e946e7SWyllys Ingersoll "WARNING: " fmt, __VA_ARGS__) 123247e946e7SWyllys Ingersoll 123347e946e7SWyllys Ingersoll #define LogWarn1(data) LogMessage1(stdout, "LOG_WARNING", APPID,\ 123447e946e7SWyllys Ingersoll "WARNING: " data) 123547e946e7SWyllys Ingersoll 123647e946e7SWyllys Ingersoll /* Info Logging */ 123747e946e7SWyllys Ingersoll #define LogInfo(fmt, ...) LogMessage(stdout, "LOG_INFO", APPID,\ 123847e946e7SWyllys Ingersoll fmt, __VA_ARGS__) 123947e946e7SWyllys Ingersoll 124047e946e7SWyllys Ingersoll #define LogInfo1(data) LogMessage1(stdout, "LOG_INFO", APPID, data) 124147e946e7SWyllys Ingersoll 124247e946e7SWyllys Ingersoll #define st_err_log(...) LogMessage(stderr, "ST MSG", APPID,\ 124347e946e7SWyllys Ingersoll "", __VA_ARGS__) 124447e946e7SWyllys Ingersoll #else 124547e946e7SWyllys Ingersoll #define LogDebug(...) 124647e946e7SWyllys Ingersoll #define LogDebug1(...) 124747e946e7SWyllys Ingersoll #define LogBlob(...) 124847e946e7SWyllys Ingersoll #define LogError(...) 124947e946e7SWyllys Ingersoll #define LogError1(...) 125047e946e7SWyllys Ingersoll #define LogWarn(...) 125147e946e7SWyllys Ingersoll #define LogWarn1(...) 125247e946e7SWyllys Ingersoll #define LogInfo(...) 125347e946e7SWyllys Ingersoll #define LogInfo1(...) 125447e946e7SWyllys Ingersoll #define st_err_log(...) 125547e946e7SWyllys Ingersoll #endif 125647e946e7SWyllys Ingersoll 125747e946e7SWyllys Ingersoll /* 125847e946e7SWyllys Ingersoll * CK_FUNCTION_LIST is a structure holding a Cryptoki spec 125947e946e7SWyllys Ingersoll * version and pointers of appropriate types to all the 126047e946e7SWyllys Ingersoll * Cryptoki functions 126147e946e7SWyllys Ingersoll */ 126247e946e7SWyllys Ingersoll 126347e946e7SWyllys Ingersoll /* CK_FUNCTION_LIST is new for v2.0 */ 126447e946e7SWyllys Ingersoll 126547e946e7SWyllys Ingersoll typedef CK_RV 126647e946e7SWyllys Ingersoll (CK_PTR ST_C_Initialize) 126747e946e7SWyllys Ingersoll (void *ppFunctionList, CK_SLOT_ID slotID, CK_CHAR_PTR pCorrelator); 126847e946e7SWyllys Ingersoll typedef CK_RV 126947e946e7SWyllys Ingersoll (CK_PTR ST_C_Finalize) 127047e946e7SWyllys Ingersoll (CK_VOID_PTR pReserved); 127147e946e7SWyllys Ingersoll typedef CK_RV 127247e946e7SWyllys Ingersoll (CK_PTR ST_C_Terminate)(); 127347e946e7SWyllys Ingersoll typedef CK_RV 127447e946e7SWyllys Ingersoll (CK_PTR ST_C_GetInfo) 127547e946e7SWyllys Ingersoll (CK_INFO_PTR pInfo); 127647e946e7SWyllys Ingersoll typedef CK_RV 127747e946e7SWyllys Ingersoll (CK_PTR ST_C_GetFunctionList) 127847e946e7SWyllys Ingersoll (CK_FUNCTION_LIST_PTR_PTR ppFunctionList); 127947e946e7SWyllys Ingersoll typedef CK_RV 128047e946e7SWyllys Ingersoll (CK_PTR ST_C_GetSlotList) 128147e946e7SWyllys Ingersoll (CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, 128247e946e7SWyllys Ingersoll CK_ULONG_PTR pusCount); 128347e946e7SWyllys Ingersoll typedef CK_RV 128447e946e7SWyllys Ingersoll (CK_PTR ST_C_GetSlotInfo) 128547e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo); 128647e946e7SWyllys Ingersoll typedef CK_RV 128747e946e7SWyllys Ingersoll (CK_PTR ST_C_GetTokenInfo) 128847e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo); 128947e946e7SWyllys Ingersoll typedef CK_RV 129047e946e7SWyllys Ingersoll (CK_PTR ST_C_GetMechanismList) 129147e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList, 129247e946e7SWyllys Ingersoll CK_ULONG_PTR pusCount); 129347e946e7SWyllys Ingersoll typedef CK_RV 129447e946e7SWyllys Ingersoll (CK_PTR ST_C_GetMechanismInfo) 129547e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, 129647e946e7SWyllys Ingersoll CK_MECHANISM_INFO_PTR pInfo); 129747e946e7SWyllys Ingersoll typedef CK_RV 129847e946e7SWyllys Ingersoll (CK_PTR ST_C_InitToken) 129947e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG usPinLen, 130047e946e7SWyllys Ingersoll CK_CHAR_PTR pLabel); 130147e946e7SWyllys Ingersoll typedef CK_RV 130247e946e7SWyllys Ingersoll (CK_PTR ST_C_InitPIN) 130347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_CHAR_PTR pPin, 130447e946e7SWyllys Ingersoll CK_ULONG usPinLen); 130547e946e7SWyllys Ingersoll typedef CK_RV 130647e946e7SWyllys Ingersoll (CK_PTR ST_C_SetPIN) 130747e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_CHAR_PTR pOldPin, 130847e946e7SWyllys Ingersoll CK_ULONG usOldLen, CK_CHAR_PTR pNewPin, 130947e946e7SWyllys Ingersoll CK_ULONG usNewLen); 131047e946e7SWyllys Ingersoll 131147e946e7SWyllys Ingersoll typedef CK_RV 131247e946e7SWyllys Ingersoll (CK_PTR ST_C_OpenSession) 131347e946e7SWyllys Ingersoll (CK_SLOT_ID slotID, CK_FLAGS flags, 131447e946e7SWyllys Ingersoll CK_SESSION_HANDLE_PTR phSession); 131547e946e7SWyllys Ingersoll 131647e946e7SWyllys Ingersoll typedef CK_RV 131747e946e7SWyllys Ingersoll (CK_PTR ST_C_CloseSession) 131847e946e7SWyllys Ingersoll (ST_SESSION_T hSession); 131947e946e7SWyllys Ingersoll typedef CK_RV 132047e946e7SWyllys Ingersoll (CK_PTR ST_C_CloseAllSessions) 132147e946e7SWyllys Ingersoll (CK_SLOT_ID slotID); 132247e946e7SWyllys Ingersoll typedef CK_RV 132347e946e7SWyllys Ingersoll (CK_PTR ST_C_GetSessionInfo) 132447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_SESSION_INFO_PTR pInfo); 132547e946e7SWyllys Ingersoll typedef CK_RV 132647e946e7SWyllys Ingersoll (CK_PTR ST_C_GetOperationState) 132747e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState, 132847e946e7SWyllys Ingersoll CK_ULONG_PTR pulOperationStateLen); 132947e946e7SWyllys Ingersoll typedef CK_RV 133047e946e7SWyllys Ingersoll (CK_PTR ST_C_SetOperationState) 133147e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState, 133247e946e7SWyllys Ingersoll CK_ULONG ulOperationStateLen, 133347e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hEncryptionKey, 133447e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hAuthenticationKey); 133547e946e7SWyllys Ingersoll typedef CK_RV 133647e946e7SWyllys Ingersoll (CK_PTR ST_C_Login)(ST_SESSION_T hSession, 133747e946e7SWyllys Ingersoll CK_USER_TYPE userType, CK_CHAR_PTR pPin, 133847e946e7SWyllys Ingersoll CK_ULONG usPinLen); 133947e946e7SWyllys Ingersoll typedef CK_RV 134047e946e7SWyllys Ingersoll (CK_PTR ST_C_Logout)(ST_SESSION_T hSession); 134147e946e7SWyllys Ingersoll typedef CK_RV 134247e946e7SWyllys Ingersoll (CK_PTR ST_C_CreateObject) 134347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate, 134447e946e7SWyllys Ingersoll CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject); 134547e946e7SWyllys Ingersoll 134647e946e7SWyllys Ingersoll typedef CK_RV 134747e946e7SWyllys Ingersoll (CK_PTR ST_C_CopyObject) 134847e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject, 134947e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount, 135047e946e7SWyllys Ingersoll CK_OBJECT_HANDLE_PTR phNewObject); 135147e946e7SWyllys Ingersoll typedef CK_RV 135247e946e7SWyllys Ingersoll (CK_PTR ST_C_DestroyObject) 135347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject); 135447e946e7SWyllys Ingersoll typedef CK_RV 135547e946e7SWyllys Ingersoll (CK_PTR ST_C_GetObjectSize) 135647e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject, 135747e946e7SWyllys Ingersoll CK_ULONG_PTR pusSize); 135847e946e7SWyllys Ingersoll typedef CK_RV 135947e946e7SWyllys Ingersoll (CK_PTR ST_C_GetAttributeValue) 136047e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject, 136147e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount); 136247e946e7SWyllys Ingersoll typedef CK_RV 136347e946e7SWyllys Ingersoll (CK_PTR ST_C_SetAttributeValue) 136447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject, 136547e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount); 136647e946e7SWyllys Ingersoll typedef CK_RV 136747e946e7SWyllys Ingersoll (CK_PTR ST_C_FindObjectsInit) 136847e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate, 136947e946e7SWyllys Ingersoll CK_ULONG usCount); 137047e946e7SWyllys Ingersoll typedef CK_RV 137147e946e7SWyllys Ingersoll (CK_PTR ST_C_FindObjects) 137247e946e7SWyllys Ingersoll (ST_SESSION_T hSession, 137347e946e7SWyllys Ingersoll CK_OBJECT_HANDLE_PTR phObject, CK_ULONG usMaxObjectCount, 137447e946e7SWyllys Ingersoll CK_ULONG_PTR pusObjectCount); 137547e946e7SWyllys Ingersoll typedef CK_RV 137647e946e7SWyllys Ingersoll (CK_PTR ST_C_FindObjectsFinal) 137747e946e7SWyllys Ingersoll (ST_SESSION_T hSession); 137847e946e7SWyllys Ingersoll typedef CK_RV 137947e946e7SWyllys Ingersoll (CK_PTR ST_C_EncryptInit) 138047e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 138147e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 138247e946e7SWyllys Ingersoll typedef CK_RV 138347e946e7SWyllys Ingersoll (CK_PTR ST_C_Encrypt) 138447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData, 138547e946e7SWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pEncryptedData, 138647e946e7SWyllys Ingersoll CK_ULONG_PTR pusEncryptedDataLen); 138747e946e7SWyllys Ingersoll typedef CK_RV 138847e946e7SWyllys Ingersoll (CK_PTR ST_C_EncryptUpdate) 138947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 139047e946e7SWyllys Ingersoll CK_ULONG usPartLen, CK_BYTE_PTR pEncryptedPart, 139147e946e7SWyllys Ingersoll CK_ULONG_PTR pusEncryptedPartLen); 139247e946e7SWyllys Ingersoll typedef CK_RV 139347e946e7SWyllys Ingersoll (CK_PTR ST_C_EncryptFinal) 139447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, 139547e946e7SWyllys Ingersoll CK_BYTE_PTR pLastEncryptedPart, 139647e946e7SWyllys Ingersoll CK_ULONG_PTR pusLastEncryptedPartLen); 139747e946e7SWyllys Ingersoll typedef CK_RV 139847e946e7SWyllys Ingersoll (CK_PTR ST_C_DecryptInit) 139947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 140047e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 140147e946e7SWyllys Ingersoll typedef CK_RV 140247e946e7SWyllys Ingersoll (CK_PTR ST_C_Decrypt) 140347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedData, 140447e946e7SWyllys Ingersoll CK_ULONG usEncryptedDataLen, CK_BYTE_PTR pData, 140547e946e7SWyllys Ingersoll CK_ULONG_PTR pusDataLen); 140647e946e7SWyllys Ingersoll typedef CK_RV 140747e946e7SWyllys Ingersoll (CK_PTR ST_C_DecryptUpdate) 140847e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart, 140947e946e7SWyllys Ingersoll CK_ULONG usEncryptedPartLen, CK_BYTE_PTR pPart, 141047e946e7SWyllys Ingersoll CK_ULONG_PTR pusPartLen); 141147e946e7SWyllys Ingersoll typedef CK_RV 141247e946e7SWyllys Ingersoll (CK_PTR ST_C_DecryptFinal) 141347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pLastPart, 141447e946e7SWyllys Ingersoll CK_ULONG_PTR pusLastPartLen); 141547e946e7SWyllys Ingersoll typedef CK_RV 141647e946e7SWyllys Ingersoll (CK_PTR ST_C_DigestInit) 141747e946e7SWyllys Ingersoll (ST_SESSION_T hSession, 141847e946e7SWyllys Ingersoll CK_MECHANISM_PTR pMechanism); 141947e946e7SWyllys Ingersoll typedef CK_RV 142047e946e7SWyllys Ingersoll (CK_PTR ST_C_Digest) 142147e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData, 142247e946e7SWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pDigest, 142347e946e7SWyllys Ingersoll CK_ULONG_PTR pusDigestLen); 142447e946e7SWyllys Ingersoll typedef CK_RV 142547e946e7SWyllys Ingersoll (CK_PTR ST_C_DigestUpdate) 142647e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 142747e946e7SWyllys Ingersoll CK_ULONG usPartLen); 142847e946e7SWyllys Ingersoll typedef CK_RV 142947e946e7SWyllys Ingersoll (CK_PTR ST_C_DigestKey) 143047e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hKey); 143147e946e7SWyllys Ingersoll typedef CK_RV 143247e946e7SWyllys Ingersoll (CK_PTR ST_C_DigestFinal) 143347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pDigest, 143447e946e7SWyllys Ingersoll CK_ULONG_PTR pusDigestLen); 143547e946e7SWyllys Ingersoll typedef CK_RV 143647e946e7SWyllys Ingersoll (CK_PTR ST_C_SignInit) 143747e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 143847e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 143947e946e7SWyllys Ingersoll typedef CK_RV 144047e946e7SWyllys Ingersoll (CK_PTR ST_C_Sign) 144147e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData, 144247e946e7SWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature, 144347e946e7SWyllys Ingersoll CK_ULONG_PTR pusSignatureLen); 144447e946e7SWyllys Ingersoll typedef CK_RV 144547e946e7SWyllys Ingersoll (CK_PTR ST_C_SignUpdate) 144647e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 144747e946e7SWyllys Ingersoll CK_ULONG usPartLen); 144847e946e7SWyllys Ingersoll typedef CK_RV 144947e946e7SWyllys Ingersoll (CK_PTR ST_C_SignFinal) 145047e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature, 145147e946e7SWyllys Ingersoll CK_ULONG_PTR pusSignatureLen); 145247e946e7SWyllys Ingersoll typedef CK_RV 145347e946e7SWyllys Ingersoll (CK_PTR ST_C_SignRecoverInit) 145447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 145547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 145647e946e7SWyllys Ingersoll typedef CK_RV 145747e946e7SWyllys Ingersoll (CK_PTR ST_C_SignRecover) 145847e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData, 145947e946e7SWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature, 146047e946e7SWyllys Ingersoll CK_ULONG_PTR pusSignatureLen); 146147e946e7SWyllys Ingersoll typedef CK_RV 146247e946e7SWyllys Ingersoll (CK_PTR ST_C_VerifyInit) 146347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 146447e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 146547e946e7SWyllys Ingersoll typedef CK_RV 146647e946e7SWyllys Ingersoll (CK_PTR ST_C_Verify) 146747e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData, 146847e946e7SWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature, 146947e946e7SWyllys Ingersoll CK_ULONG usSignatureLen); 147047e946e7SWyllys Ingersoll typedef CK_RV 147147e946e7SWyllys Ingersoll (CK_PTR ST_C_VerifyUpdate) 147247e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 147347e946e7SWyllys Ingersoll CK_ULONG usPartLen); 147447e946e7SWyllys Ingersoll typedef CK_RV 147547e946e7SWyllys Ingersoll (CK_PTR ST_C_VerifyFinal) 147647e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature, 147747e946e7SWyllys Ingersoll CK_ULONG usSignatureLen); 147847e946e7SWyllys Ingersoll typedef CK_RV 147947e946e7SWyllys Ingersoll (CK_PTR ST_C_VerifyRecoverInit) 148047e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 148147e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hKey); 148247e946e7SWyllys Ingersoll typedef CK_RV 148347e946e7SWyllys Ingersoll (CK_PTR ST_C_VerifyRecover) 148447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature, 148547e946e7SWyllys Ingersoll CK_ULONG usSignatureLen, CK_BYTE_PTR pData, 148647e946e7SWyllys Ingersoll CK_ULONG_PTR pusDataLen); 148747e946e7SWyllys Ingersoll typedef CK_RV 148847e946e7SWyllys Ingersoll (CK_PTR ST_C_DigestEncryptUpdate) 148947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 149047e946e7SWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, 149147e946e7SWyllys Ingersoll CK_ULONG_PTR pulEncryptedPartLen); 149247e946e7SWyllys Ingersoll typedef CK_RV 149347e946e7SWyllys Ingersoll (CK_PTR ST_C_DecryptDigestUpdate) 149447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart, 149547e946e7SWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, 149647e946e7SWyllys Ingersoll CK_ULONG_PTR pulPartLen); 149747e946e7SWyllys Ingersoll typedef CK_RV 149847e946e7SWyllys Ingersoll (CK_PTR ST_C_SignEncryptUpdate) 149947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart, 150047e946e7SWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, 150147e946e7SWyllys Ingersoll CK_ULONG_PTR pulEncryptedPartLen); 150247e946e7SWyllys Ingersoll typedef CK_RV 150347e946e7SWyllys Ingersoll (CK_PTR ST_C_DecryptVerifyUpdate) 150447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart, 150547e946e7SWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, 150647e946e7SWyllys Ingersoll CK_ULONG_PTR pulPartLen); 150747e946e7SWyllys Ingersoll typedef CK_RV 150847e946e7SWyllys Ingersoll (CK_PTR ST_C_GenerateKey) 150947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 151047e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount, 151147e946e7SWyllys Ingersoll CK_OBJECT_HANDLE_PTR phKey); 151247e946e7SWyllys Ingersoll typedef CK_RV 151347e946e7SWyllys Ingersoll (CK_PTR ST_C_GenerateKeyPair) 151447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 151547e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pPublicKeyTemplate, 151647e946e7SWyllys Ingersoll CK_ULONG usPublicKeyAttributeCount, 151747e946e7SWyllys Ingersoll CK_ATTRIBUTE_PTR pPrivateKeyTemplate, 151847e946e7SWyllys Ingersoll CK_ULONG usPrivateKeyAttributeCount, 151947e946e7SWyllys Ingersoll CK_OBJECT_HANDLE_PTR phPrivateKey, 152047e946e7SWyllys Ingersoll CK_OBJECT_HANDLE_PTR phPublicKey); 152147e946e7SWyllys Ingersoll typedef CK_RV 152247e946e7SWyllys Ingersoll (CK_PTR ST_C_WrapKey) 152347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 152447e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, 152547e946e7SWyllys Ingersoll CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pusWrappedKeyLen); 152647e946e7SWyllys Ingersoll typedef CK_RV 152747e946e7SWyllys Ingersoll (CK_PTR ST_C_UnwrapKey) 152847e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 152947e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey, 153047e946e7SWyllys Ingersoll CK_ULONG usWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate, 153147e946e7SWyllys Ingersoll CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey); 153247e946e7SWyllys Ingersoll typedef CK_RV 153347e946e7SWyllys Ingersoll (CK_PTR ST_C_DeriveKey) 153447e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism, 153547e946e7SWyllys Ingersoll CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate, 153647e946e7SWyllys Ingersoll CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey); 153747e946e7SWyllys Ingersoll typedef CK_RV 153847e946e7SWyllys Ingersoll (CK_PTR ST_C_SeedRandom) 153947e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSeed, 154047e946e7SWyllys Ingersoll CK_ULONG usSeedLen); 154147e946e7SWyllys Ingersoll typedef CK_RV 154247e946e7SWyllys Ingersoll (CK_PTR ST_C_GenerateRandom) 154347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pRandomData, 154447e946e7SWyllys Ingersoll CK_ULONG usRandomLen); 154547e946e7SWyllys Ingersoll typedef CK_RV 154647e946e7SWyllys Ingersoll (CK_PTR ST_C_GetFunctionStatus) 154747e946e7SWyllys Ingersoll (ST_SESSION_T hSession); 154847e946e7SWyllys Ingersoll typedef CK_RV 154947e946e7SWyllys Ingersoll (CK_PTR ST_C_CancelFunction) 155047e946e7SWyllys Ingersoll (ST_SESSION_T hSession); 155147e946e7SWyllys Ingersoll typedef CK_RV 155247e946e7SWyllys Ingersoll (CK_PTR ST_Notify) 155347e946e7SWyllys Ingersoll (ST_SESSION_T hSession, CK_NOTIFICATION event, 155447e946e7SWyllys Ingersoll CK_VOID_PTR pApplication); 155547e946e7SWyllys Ingersoll typedef CK_RV 155647e946e7SWyllys Ingersoll (CK_PTR ST_C_WaitForSlotEvent) 155747e946e7SWyllys Ingersoll (CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, 155847e946e7SWyllys Ingersoll CK_VOID_PTR pReserved); 155947e946e7SWyllys Ingersoll 156047e946e7SWyllys Ingersoll 156147e946e7SWyllys Ingersoll 156247e946e7SWyllys Ingersoll struct ST_FCN_LIST { 156347e946e7SWyllys Ingersoll 156447e946e7SWyllys Ingersoll ST_C_Initialize ST_Initialize; 156547e946e7SWyllys Ingersoll ST_C_Finalize ST_Finalize; 156647e946e7SWyllys Ingersoll 156747e946e7SWyllys Ingersoll ST_C_GetTokenInfo ST_GetTokenInfo; 156847e946e7SWyllys Ingersoll ST_C_GetMechanismList ST_GetMechanismList; 156947e946e7SWyllys Ingersoll ST_C_GetMechanismInfo ST_GetMechanismInfo; 157047e946e7SWyllys Ingersoll ST_C_InitToken ST_InitToken; 157147e946e7SWyllys Ingersoll ST_C_InitPIN ST_InitPIN; 157247e946e7SWyllys Ingersoll ST_C_SetPIN ST_SetPIN; 157347e946e7SWyllys Ingersoll 157447e946e7SWyllys Ingersoll ST_C_OpenSession ST_OpenSession; 157547e946e7SWyllys Ingersoll ST_C_CloseSession ST_CloseSession; 157647e946e7SWyllys Ingersoll ST_C_GetSessionInfo ST_GetSessionInfo; 157747e946e7SWyllys Ingersoll ST_C_GetOperationState ST_GetOperationState; 157847e946e7SWyllys Ingersoll ST_C_SetOperationState ST_SetOperationState; 157947e946e7SWyllys Ingersoll ST_C_Login ST_Login; 158047e946e7SWyllys Ingersoll ST_C_Logout ST_Logout; 158147e946e7SWyllys Ingersoll 158247e946e7SWyllys Ingersoll ST_C_CreateObject ST_CreateObject; 158347e946e7SWyllys Ingersoll ST_C_CopyObject ST_CopyObject; 158447e946e7SWyllys Ingersoll ST_C_DestroyObject ST_DestroyObject; 158547e946e7SWyllys Ingersoll ST_C_GetObjectSize ST_GetObjectSize; 158647e946e7SWyllys Ingersoll ST_C_GetAttributeValue ST_GetAttributeValue; 158747e946e7SWyllys Ingersoll ST_C_SetAttributeValue ST_SetAttributeValue; 158847e946e7SWyllys Ingersoll ST_C_FindObjectsInit ST_FindObjectsInit; 158947e946e7SWyllys Ingersoll ST_C_FindObjects ST_FindObjects; 159047e946e7SWyllys Ingersoll ST_C_FindObjectsFinal ST_FindObjectsFinal; 159147e946e7SWyllys Ingersoll 159247e946e7SWyllys Ingersoll 159347e946e7SWyllys Ingersoll ST_C_EncryptInit ST_EncryptInit; 159447e946e7SWyllys Ingersoll ST_C_Encrypt ST_Encrypt; 159547e946e7SWyllys Ingersoll ST_C_EncryptUpdate ST_EncryptUpdate; 159647e946e7SWyllys Ingersoll ST_C_EncryptFinal ST_EncryptFinal; 159747e946e7SWyllys Ingersoll ST_C_DecryptInit ST_DecryptInit; 159847e946e7SWyllys Ingersoll ST_C_Decrypt ST_Decrypt; 159947e946e7SWyllys Ingersoll ST_C_DecryptUpdate ST_DecryptUpdate; 160047e946e7SWyllys Ingersoll ST_C_DecryptFinal ST_DecryptFinal; 160147e946e7SWyllys Ingersoll ST_C_DigestInit ST_DigestInit; 160247e946e7SWyllys Ingersoll ST_C_Digest ST_Digest; 160347e946e7SWyllys Ingersoll ST_C_DigestUpdate ST_DigestUpdate; 160447e946e7SWyllys Ingersoll ST_C_DigestKey ST_DigestKey; 160547e946e7SWyllys Ingersoll ST_C_DigestFinal ST_DigestFinal; 160647e946e7SWyllys Ingersoll ST_C_SignInit ST_SignInit; 160747e946e7SWyllys Ingersoll ST_C_Sign ST_Sign; 160847e946e7SWyllys Ingersoll ST_C_SignUpdate ST_SignUpdate; 160947e946e7SWyllys Ingersoll ST_C_SignFinal ST_SignFinal; 161047e946e7SWyllys Ingersoll ST_C_SignRecoverInit ST_SignRecoverInit; 161147e946e7SWyllys Ingersoll ST_C_SignRecover ST_SignRecover; 161247e946e7SWyllys Ingersoll ST_C_VerifyInit ST_VerifyInit; 161347e946e7SWyllys Ingersoll ST_C_Verify ST_Verify; 161447e946e7SWyllys Ingersoll ST_C_VerifyUpdate ST_VerifyUpdate; 161547e946e7SWyllys Ingersoll ST_C_VerifyFinal ST_VerifyFinal; 161647e946e7SWyllys Ingersoll ST_C_VerifyRecoverInit ST_VerifyRecoverInit; 161747e946e7SWyllys Ingersoll ST_C_VerifyRecover ST_VerifyRecover; 161847e946e7SWyllys Ingersoll ST_C_DigestEncryptUpdate ST_DigestEncryptUpdate; 161947e946e7SWyllys Ingersoll ST_C_DecryptDigestUpdate ST_DecryptDigestUpdate; 162047e946e7SWyllys Ingersoll ST_C_SignEncryptUpdate ST_SignEncryptUpdate; 162147e946e7SWyllys Ingersoll ST_C_DecryptVerifyUpdate ST_DecryptVerifyUpdate; 162247e946e7SWyllys Ingersoll ST_C_GenerateKey ST_GenerateKey; 162347e946e7SWyllys Ingersoll ST_C_GenerateKeyPair ST_GenerateKeyPair; 162447e946e7SWyllys Ingersoll ST_C_WrapKey ST_WrapKey; 162547e946e7SWyllys Ingersoll ST_C_UnwrapKey ST_UnwrapKey; 162647e946e7SWyllys Ingersoll ST_C_DeriveKey ST_DeriveKey; 162747e946e7SWyllys Ingersoll ST_C_SeedRandom ST_SeedRandom; 162847e946e7SWyllys Ingersoll ST_C_GenerateRandom ST_GenerateRandom; 162947e946e7SWyllys Ingersoll ST_C_GetFunctionStatus ST_GetFunctionStatus; 163047e946e7SWyllys Ingersoll ST_C_CancelFunction ST_CancelFunction; 163147e946e7SWyllys Ingersoll }; 163247e946e7SWyllys Ingersoll 163347e946e7SWyllys Ingersoll typedef struct ST_FCN_LIST STDLL_FcnList_t; 163447e946e7SWyllys Ingersoll 163547e946e7SWyllys Ingersoll #endif /* _TPMTOK_INT_H */ 1636