47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * The Initial Developer of the Original Code is International
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Business Machines Corporation. Portions created by IBM
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Corporation are Copyright(C) 2005 International Business
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Machines Corporation. All Rights Reserved.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * This program is free software; you can redistribute it and/or modify
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * it under the terms of the Common Public License as published by
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * IBM Corporation; either version 1 of the License, or(at your option)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * any later version.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * This program is distributed in the hope that it will be useful,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * but WITHOUT ANY WARRANTY; without even the implied warranty of
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Common Public License for more details.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * You should have received a copy of the Common Public License
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * along with this program; if not, a copy can be viewed at
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * http://www.opensource.org/licenses/cpl1.0.php.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* (C) COPYRIGHT International Business Machines Corp. 2001, 2002, 2005 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Use is subject to license terms.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// RSA block formatting types
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef enum {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TPMTOK_UUID_INDEX_FILENAME "uuids.idx"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Filenames used to store migration data.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define USER_MAKEY_FILENAME "user_makey.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define USER_KEYBLOB_FILENAME "user_blob.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// Both of the strings below have a length of 32 chars and must be
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// padded with spaces, and non - null terminated.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_MANUFACTURER "Sun Microsystems, Inc. "
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_LIBDESC "PKCS#11 Interface for TPM "
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * CKA_HIDDEN will be used to filter return results on
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * a C_FindObjects call. Used for objects internal to the
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * TPM token for management
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* custom attributes for the TPM token */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKA_HIDDEN CKA_VENDOR_DEFINED + 0x01
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKA_IBM_OPAQUE CKA_VENDOR_DEFINED + 0x02
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * CKA_ENC_AUTHDATA will be used to store the encrypted SHA-1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * hashes of auth data passed in for TPM keys. The authdata
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * will be encrypted using either the public
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * leaf key or the private leaf key
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKA_ENC_AUTHDATA CKA_VENDOR_DEFINED + 0x03
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* custom return codes for the TPM token */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKR_KEY_NOT_FOUND CKR_VENDOR_DEFINED + 0x01
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKR_FILE_NOT_FOUND CKR_VENDOR_DEFINED + 0x02
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *ref; /* reference ptr for the union */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM mech; // current sign mechanism
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL multi; // is this a multi - part operation?
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL recover; // are we in recover mode?
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE *find_list; // array of CK_OBJECT_HANDLE
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG find_count; // # handles in the list
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG find_len; // max # of handles in the list
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SESSION *session; // creator; only for session objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_hi; // only significant for token objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_lo; // only significant for token objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollfind_mech_list_item_for_type(CK_MECHANISM_TYPE type,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TOK_OBJ_ENTRY publ_tok_objs[ MAX_TOK_OBJS ];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TOK_OBJ_ENTRY priv_tok_objs[ MAX_TOK_OBJS ];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_init)(char *, CK_SLOT_ID, TSS_HCONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rng)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_decrypt)(TSS_HCONTEXT, CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG *, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_generate_keypair)(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_login)(TSS_HCONTEXT, CK_USER_TYPE, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_init_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_set_pin)(ST_SESSION_HANDLE, CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_verify_so_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct token_specific_struct token_spec_t;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Global Variables
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern pthread_mutex_t pkcs_mutex, obj_list_mutex,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE so_pin_md5[MD5_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE user_pin_md5[MD5_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE default_user_pin_sha[SHA1_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE default_so_pin_sha[SHA1_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE default_so_pin_md5[MD5_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_md5WithRSAEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_sha1WithRSAEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Function Prototypes
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid logit(int, char *, ...);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid RemoveFromSessionList(Session_Struct_t *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint Valid_Session(Session_Struct_t *, ST_SESSION_T *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL pin_expired(CK_SESSION_INFO *, CK_FLAGS);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL pin_locked(CK_SESSION_INFO *, CK_FLAGS);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid set_login_flags(CK_USER_TYPE, CK_FLAGS *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, TSS_HKEY, char *, char *, BYTE *, BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV token_rng(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollTSS_RESULT set_public_modulus(TSS_HCONTEXT, TSS_HKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll unsigned long, unsigned char *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollTSS_RESULT open_tss_context(TSS_HCONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV token_get_tpm_info(TSS_HCONTEXT, TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV clock_set_default_attributes(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV clock_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV clock_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV counter_set_default_attributes(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV counter_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV counter_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV compute_next_token_obj_name(CK_BYTE *, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_private_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV load_private_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV reload_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV init_token_data(TSS_HCONTEXT, TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV load_token_data(TSS_HCONTEXT, TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV compute_sha(CK_BYTE *, CK_ULONG_32, CK_BYTE *);
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV add_pkcs_padding(CK_BYTE *, UINT32, UINT32, UINT32);
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV strip_pkcs_padding(CK_BYTE *, UINT32, UINT32 *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_verify_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ckm_rsa_key_pair_gen(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_add_as_first(DL_NODE *, void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_add_as_last(DL_NODE *, void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_remove_node(DL_NODE *, DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// encryption manager routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV encr_mgr_cleanup(ENCR_DECR_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV decr_mgr_cleanup(ENCR_DECR_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_digest(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// session manager routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollSESSION *session_mgr_find(CK_SESSION_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_new(CK_ULONG, SESSION **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL session_mgr_so_session_exists(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL session_mgr_user_session_exists(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL session_mgr_public_session_exists(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_get_op_state(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_add_to_map(SESSION *, OBJECT *, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_destroy_object(SESSION *, CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_destroy_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_in_map1(TSS_HCONTEXT, CK_OBJECT_HANDLE, OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_in_map2(TSS_HCONTEXT, OBJECT *, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_init(SESSION *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_get_attribute_values(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_get_object_size(TSS_HCONTEXT, CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_invalidate_handle1(CK_OBJECT_HANDLE handle);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_invalidate_handle2(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_session_objects(SESSION *, SESS_OBJ_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_private_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_remove_from_map(CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_restore_obj(CK_BYTE *, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_set_attribute_values(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_map(SESSION *, SESS_OBJ_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_create(CK_ATTRIBUTE *, CK_ULONG, OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_session_object(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_add_default_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_attribute_find(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid template_attribute_find_multiple(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_check_exportability(TEMPLATE *, CK_ATTRIBUTE_TYPE type);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_check_required_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_check_required_base_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_copy(TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_flatten(TEMPLATE *, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_get_class(TEMPLATE *, CK_ULONG *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG template_get_compressed_size(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_set_default_common_attributes(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_merge(TEMPLATE *, TEMPLATE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_update_attribute(TEMPLATE *, CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_unflatten(TEMPLATE **, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_attribute(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_base_attribute(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// DATA OBJECT ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV data_object_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV data_object_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV data_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// CERTIFICATE ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_x509_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_x509_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_x509_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_vendor_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_vendor_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// KEY ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_object_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_object_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV publ_key_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV publ_key_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV publ_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV priv_key_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV priv_key_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV priv_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV priv_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL secret_key_check_exportability(CK_ATTRIBUTE_TYPE type);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV secret_key_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV secret_key_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV secret_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV secret_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// rsa routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_publ_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_publ_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_publ_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL rsa_priv_check_exportability(CK_ATTRIBUTE_TYPE type);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_priv_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_priv_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_priv_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_priv_wrap_get_data(TEMPLATE *, CK_BBOOL, CK_BYTE **, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_priv_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// Generic secret key routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_check_required_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_set_default_attributes(TEMPLATE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_wrap_get_data(TEMPLATE *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG, CK_BBOOL fromend);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_BYTE **, CK_ULONG *, CK_BYTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* log to stdout */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogMessage(dest, priority, layer, fmt, ...) \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (void) fprintf(dest, "%s %s %s:%d " fmt "\n", (char *)priority, \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogMessage1(dest, priority, layer, data) \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (void) fprintf(dest, "%s %s %s:%d %s\n", priority, layer, __FILE__, \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Debug logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug(fmt, ...) LogMessage(stdout, "LOG_DEBUG", APPID, \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug1(data) LogMessage1(stdout, "LOG_DEBUG", APPID, data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Error logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError(fmt, ...) LogMessage(stderr, "LOG_ERR", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError1(data) LogMessage1(stderr, "LOG_ERR", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Warn logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn(fmt, ...) LogMessage(stdout, "LOG_WARNING", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn1(data) LogMessage1(stdout, "LOG_WARNING", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Info Logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo(fmt, ...) LogMessage(stdout, "LOG_INFO", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo1(data) LogMessage1(stdout, "LOG_INFO", APPID, data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define st_err_log(...) LogMessage(stderr, "ST MSG", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * CK_FUNCTION_LIST is a structure holding a Cryptoki spec
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * version and pointers of appropriate types to all the
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Cryptoki functions
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* CK_FUNCTION_LIST is new for v2.0 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (void *ppFunctionList, CK_SLOT_ID slotID, CK_CHAR_PTR pCorrelator);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG usPinLen,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_CHAR_PTR pOldPin,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_SESSION_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Logout)(ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phObject, CK_ULONG usMaxObjectCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pEncryptedData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usEncryptedDataLen, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pLastPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pDigest,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usSignatureLen, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pusWrappedKeyLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pRandomData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_NOTIFICATION event,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetOperationState ST_GetOperationState;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SetOperationState ST_SetOperationState;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetAttributeValue ST_GetAttributeValue;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SetAttributeValue ST_SetAttributeValue;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyRecoverInit ST_VerifyRecoverInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DigestEncryptUpdate ST_DigestEncryptUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DecryptDigestUpdate ST_DecryptDigestUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignEncryptUpdate ST_SignEncryptUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DecryptVerifyUpdate ST_DecryptVerifyUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetFunctionStatus ST_GetFunctionStatus;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif /* _TPMTOK_INT_H */