1N/A/*
1N/A * The Initial Developer of the Original Code is International
1N/A * Business Machines Corporation. Portions created by IBM
1N/A * Corporation are Copyright(C) 2005 International Business
1N/A * Machines Corporation. All Rights Reserved.
1N/A *
1N/A * This program is free software; you can redistribute it and/or modify
1N/A * it under the terms of the Common Public License as published by
1N/A * IBM Corporation; either version 1 of the License, or(at your option)
1N/A * any later version.
1N/A *
1N/A * This program is distributed in the hope that it will be useful,
1N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of
1N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1N/A * Common Public License for more details.
1N/A *
1N/A * You should have received a copy of the Common Public License
1N/A * along with this program; if not, a copy can be viewed at
1N/A * http://www.opensource.org/licenses/cpl1.0.php.
1N/A */
1N/A
1N/A/* (C) COPYRIGHT International Business Machines Corp. 2001, 2002, 2005 */
1N/A/*
1N/A * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
1N/A */
1N/A
1N/A#ifndef _TPMTOK_INT_H
1N/A#define _TPMTOK_INT_H
1N/A
1N/A#include <stdio.h>
1N/A#include <pthread.h>
1N/A#include <string.h>
1N/A#include <strings.h>
1N/A#include <md5.h>
1N/A#include <sha1.h>
1N/A#include <limits.h>
1N/A#include <syslog.h>
1N/A#include <errno.h>
1N/A#include <sys/types.h>
1N/A#include <sys/stat.h>
1N/A#include <sys/param.h>
1N/A#include <sys/byteorder.h>
1N/A#include <security/cryptoki.h>
1N/A
1N/A#include <tss/platform.h>
1N/A#include <tss/tss_defines.h>
1N/A#include <tss/tss_typedef.h>
1N/A#include <tss/tss_structs.h>
1N/A#include <tss/tspi.h>
1N/A
1N/A#define VERSION_MAJOR 2
1N/A#define VERSION_MINOR 1
1N/A
1N/A#define MAX_SESSION_COUNT 64
1N/A#define MAX_PIN_LEN 256
1N/A#define MIN_PIN_LEN 1
1N/A
1N/A#define MAX_SLOT_ID 10
1N/A
1N/A#ifndef MIN
1N/A#define MIN(a, b) ((a) < (b) ? (a) : (b))
1N/A#endif
1N/A
1N/A#define MODE_COPY (1 << 0)
1N/A#define MODE_CREATE (1 << 1)
1N/A#define MODE_KEYGEN (1 << 2)
1N/A#define MODE_MODIFY (1 << 3)
1N/A#define MODE_DERIVE (1 << 4)
1N/A#define MODE_UNWRAP (1 << 5)
1N/A
1N/A// RSA block formatting types
1N/A//
1N/A#define PKCS_BT_1 1
1N/A#define PKCS_BT_2 2
1N/A
1N/A#define OP_ENCRYPT_INIT 1
1N/A#define OP_DECRYPT_INIT 2
1N/A#define OP_WRAP 3
1N/A#define OP_UNWRAP 4
1N/A#define OP_SIGN_INIT 5
1N/A#define OP_VERIFY_INIT 6
1N/A
1N/Aenum {
1N/A STATE_INVALID = 0,
1N/A STATE_ENCR,
1N/A STATE_DECR,
1N/A STATE_DIGEST,
1N/A STATE_SIGN,
1N/A STATE_VERIFY
1N/A};
1N/A
1N/A#define SHA1_BLOCK_SIZE 64
1N/A#define SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1)
1N/A
1N/A#define RSA_BLOCK_SIZE 256
1N/A
1N/A#ifndef PATH_MAX
1N/A#define PATH_MAX MAXPATHLEN
1N/A#endif
1N/A
1N/A#ifndef PACK_DATA
1N/A#define PACK_DATA
1N/A#endif
1N/A
1N/A#define MD5_BLOCK_SIZE 64
1N/A
1N/A#define DSA_SIGNATURE_SIZE 40
1N/A
1N/A#define DEFAULT_SO_PIN "87654321"
1N/A
1N/Atypedef enum {
1N/A ALL = 1,
1N/A PRIVATE,
1N/A PUBLIC
1N/A} SESS_OBJ_TYPE;
1N/A
1N/Atypedef struct _DL_NODE
1N/A{
1N/A struct _DL_NODE *next;
1N/A struct _DL_NODE *prev;
1N/A void *data;
1N/A} DL_NODE;
1N/A
1N/A#define TOKEN_DATA_FILE "token.dat"
1N/A#define TOKEN_OBJ_DIR "objects"
1N/A#define TOKEN_OBJ_INDEX_FILE "obj.idx"
1N/A
1N/A#define TPMTOK_UUID_INDEX_FILENAME "uuids.idx"
1N/A
1N/A/*
1N/A * Filenames used to store migration data.
1N/A */
1N/A#define SO_MAKEY_FILENAME "so_makey.dat"
1N/A#define USER_MAKEY_FILENAME "user_makey.dat"
1N/A#define SO_KEYBLOB_FILENAME "so_blob.dat"
1N/A#define USER_KEYBLOB_FILENAME "user_blob.dat"
1N/A
1N/A#define __FUNCTION__ __func__
1N/A
1N/A//
1N/A// Both of the strings below have a length of 32 chars and must be
1N/A// padded with spaces, and non - null terminated.
1N/A//
1N/A#define PKW_CRYPTOKI_VERSION_MAJOR 2
1N/A#define PKW_CRYPTOKI_VERSION_MINOR 1
1N/A#define PKW_CRYPTOKI_MANUFACTURER "Oracle Corporation "
1N/A#define PKW_CRYPTOKI_LIBDESC "PKCS#11 Interface for TPM "
1N/A#define PKW_CRYPTOKI_LIB_VERSION_MAJOR 1
1N/A#define PKW_CRYPTOKI_LIB_VERSION_MINOR 0
1N/A#define PKW_MAX_DEVICES 10
1N/A
1N/A#define MAX_TOK_OBJS 2048
1N/A#define NUMBER_SLOTS_MANAGED 1
1N/A#define TPM_SLOTID 1
1N/A
1N/A/*
1N/A * CKA_HIDDEN will be used to filter return results on
1N/A * a C_FindObjects call. Used for objects internal to the
1N/A * TPM token for management
1N/A */
1N/A/* custom attributes for the TPM token */
1N/A#define CKA_HIDDEN CKA_VENDOR_DEFINED + 0x01
1N/A#define CKA_IBM_OPAQUE CKA_VENDOR_DEFINED + 0x02
1N/A/*
1N/A * CKA_ENC_AUTHDATA will be used to store the encrypted SHA-1
1N/A * hashes of auth data passed in for TPM keys. The authdata
1N/A * will be encrypted using either the public
1N/A * leaf key or the private leaf key
1N/A */
1N/A#define CKA_ENC_AUTHDATA CKA_VENDOR_DEFINED + 0x03
1N/A
1N/A/* custom return codes for the TPM token */
1N/A#define CKR_KEY_NOT_FOUND CKR_VENDOR_DEFINED + 0x01
1N/A#define CKR_FILE_NOT_FOUND CKR_VENDOR_DEFINED + 0x02
1N/A
1N/Atypedef struct {
1N/A CK_SLOT_ID slotID;
1N/A CK_SESSION_HANDLE sessionh;
1N/A} ST_SESSION_T;
1N/A
1N/Atypedef ST_SESSION_T ST_SESSION_HANDLE;
1N/A
1N/Atypedef struct {
1N/A void *Previous;
1N/A void *Next;
1N/A CK_SLOT_ID SltId;
1N/A CK_SESSION_HANDLE RealHandle;
1N/A} Session_Struct_t;
1N/A
1N/Atypedef Session_Struct_t *SessStructP;
1N/A
1N/Atypedef struct {
1N/A pid_t Pid;
1N/A pthread_mutex_t ProcMutex;
1N/A Session_Struct_t *SessListBeg;
1N/A Session_Struct_t *SessListEnd;
1N/A pthread_mutex_t SessListMutex;
1N/A} API_Proc_Struct_t;
1N/A
1N/A
1N/A
1N/A
1N/Aenum {
1N/A PRF_DUMMYFUNCTION = 1,
1N/A PRF_FCVFUNCTION,
1N/A PRF_INITIALIZE,
1N/A PRF_FINALIZE,
1N/A PRF_GETINFO,
1N/A PRF_GETFUNCTIONLIST,
1N/A PRF_GETSLOTLIST,
1N/A PRF_GETSLOTINFO,
1N/A PRF_GETTOKENINFO,
1N/A PRF_GETMECHLIST,
1N/A PRF_GETMECHINFO,
1N/A PRF_INITTOKEN,
1N/A PRF_INITPIN,
1N/A PRF_SETPIN,
1N/A PRF_OPENSESSION,
1N/A PRF_CLOSESESSION,
1N/A PRF_CLOSEALLSESSIONS,
1N/A PRF_GETSESSIONINFO,
1N/A PRF_GETOPERATIONSTATE,
1N/A PRF_SETOPERATIONSTATE,
1N/A PRF_LOGIN,
1N/A PRF_LOGOUT,
1N/A PRF_CREATEOBJECT,
1N/A PRF_COPYOBJECT,
1N/A PRF_DESTROYOBJECT,
1N/A PRF_GETOBJECTSIZE,
1N/A PRF_GETATTRIBUTEVALUE,
1N/A PRF_SETATTRIBUTEVALUE,
1N/A PRF_FINDOBJECTSINIT,
1N/A PRF_FINDOBJECTS,
1N/A PRF_FINDOBJECTSFINAL,
1N/A PRF_ENCRYPTINIT,
1N/A PRF_ENCRYPT,
1N/A PRF_ENCRYPTUPDATE,
1N/A PRF_ENCRYPTFINAL,
1N/A PRF_DECRYPTINIT,
1N/A PRF_DECRYPT,
1N/A PRF_DECRYPTUPDATE,
1N/A PRF_DECRYPTFINAL,
1N/A PRF_DIGESTINIT,
1N/A PRF_DIGEST,
1N/A PRF_DIGESTUPDATE,
1N/A PRF_DIGESTKEY,
1N/A PRF_DIGESTFINAL,
1N/A PRF_SIGNINIT,
1N/A PRF_SIGN,
1N/A PRF_SIGNUPDATE,
1N/A PRF_SIGNFINAL,
1N/A PRF_SIGNRECOVERINIT,
1N/A PRF_SIGNRECOVER,
1N/A PRF_VERIFYINIT,
1N/A PRF_VERIFY,
1N/A PRF_VERIFYUPDATE,
1N/A PRF_VERIFYFINAL,
1N/A PRF_VERIFYRECOVERINIT,
1N/A PRF_VERIFYRECOVER,
1N/A PRF_GENKEY,
1N/A PRF_GENKEYPAIR,
1N/A PRF_WRAPKEY,
1N/A PRF_UNWRAPKEY,
1N/A PRF_DERIVEKEY,
1N/A PRF_GENRND,
1N/A PRF_LASTENTRY
1N/A};
1N/A
1N/Atypedef struct _ENCR_DECR_CONTEXT
1N/A{
1N/A CK_OBJECT_HANDLE key;
1N/A CK_MECHANISM mech;
1N/A CK_BYTE *context;
1N/A CK_ULONG context_len;
1N/A CK_BBOOL multi;
1N/A CK_BBOOL active;
1N/A} ENCR_DECR_CONTEXT;
1N/A
1N/Atypedef struct _DIGEST_CONTEXT
1N/A{
1N/A CK_MECHANISM mech;
1N/A union {
1N/A MD5_CTX *md5ctx;
1N/A SHA1_CTX *sha1ctx;
1N/A void *ref; /* reference ptr for the union */
1N/A } context;
1N/A CK_ULONG context_len;
1N/A CK_BBOOL multi;
1N/A CK_BBOOL active;
1N/A} DIGEST_CONTEXT;
1N/A
1N/Atypedef struct _SIGN_VERIFY_CONTEXT
1N/A{
1N/A CK_OBJECT_HANDLE key;
1N/A CK_MECHANISM mech; // current sign mechanism
1N/A void *context; // temporary work area
1N/A CK_ULONG context_len;
1N/A CK_BBOOL multi; // is this a multi - part operation?
1N/A CK_BBOOL recover; // are we in recover mode?
1N/A CK_BBOOL active;
1N/A} SIGN_VERIFY_CONTEXT;
1N/A
1N/Atypedef struct _SESSION
1N/A{
1N/A CK_SESSION_HANDLE handle;
1N/A CK_SESSION_INFO session_info;
1N/A
1N/A CK_OBJECT_HANDLE *find_list; // array of CK_OBJECT_HANDLE
1N/A CK_ULONG find_count; // # handles in the list
1N/A CK_ULONG find_len; // max # of handles in the list
1N/A CK_ULONG find_idx; // current position
1N/A CK_BBOOL find_active;
1N/A
1N/A ENCR_DECR_CONTEXT encr_ctx;
1N/A ENCR_DECR_CONTEXT decr_ctx;
1N/A DIGEST_CONTEXT digest_ctx;
1N/A SIGN_VERIFY_CONTEXT sign_ctx;
1N/A SIGN_VERIFY_CONTEXT verify_ctx;
1N/A
1N/A TSS_HCONTEXT hContext;
1N/A} SESSION;
1N/A
1N/Atypedef struct _TEMPLATE
1N/A{
1N/A DL_NODE *attribute_list;
1N/A} TEMPLATE;
1N/A
1N/Atypedef struct _OBJECT
1N/A{
1N/A CK_OBJECT_CLASS class;
1N/A CK_BYTE name[8]; // for token objects
1N/A
1N/A SESSION *session; // creator; only for session objects
1N/A TEMPLATE *template;
1N/A CK_ULONG count_hi; // only significant for token objects
1N/A CK_ULONG count_lo; // only significant for token objects
1N/A CK_ULONG index;
1N/A} OBJECT;
1N/A
1N/Atypedef struct _OBJECT_MAP
1N/A{
1N/A CK_OBJECT_HANDLE handle;
1N/A CK_BBOOL is_private;
1N/A CK_BBOOL is_session_obj;
1N/A SESSION *session;
1N/A OBJECT *ptr;
1N/A} OBJECT_MAP;
1N/A
1N/Atypedef struct _ATTRIBUTE_PARSE_LIST
1N/A{
1N/A CK_ATTRIBUTE_TYPE type;
1N/A void *ptr;
1N/A CK_ULONG len;
1N/A CK_BBOOL found;
1N/A} ATTRIBUTE_PARSE_LIST;
1N/A
1N/Atypedef struct _OP_STATE_DATA
1N/A{
1N/A CK_STATE session_state;
1N/A CK_ULONG active_operation;
1N/A CK_ULONG data_len;
1N/A} OP_STATE_DATA;
1N/A
1N/Atypedef struct _TWEAK_VEC
1N/A{
1N/A int allow_key_mods;
1N/A} TWEAK_VEC;
1N/A
1N/Atypedef struct _TOKEN_DATA
1N/A{
1N/A CK_TOKEN_INFO token_info;
1N/A CK_BYTE user_pin_sha[SHA1_DIGEST_LENGTH];
1N/A CK_BYTE so_pin_sha[SHA1_DIGEST_LENGTH];
1N/A CK_BYTE next_token_object_name[8];
1N/A TWEAK_VEC tweak_vector;
1N/A} TOKEN_DATA;
1N/A
1N/Atypedef struct _RSA_DIGEST_CONTEXT {
1N/A DIGEST_CONTEXT hash_context;
1N/A CK_BBOOL flag;
1N/A} RSA_DIGEST_CONTEXT;
1N/A
1N/Atypedef struct _MECH_LIST_ELEMENT
1N/A{
1N/A CK_MECHANISM_TYPE mech_type;
1N/A CK_MECHANISM_INFO mech_info;
1N/A} MECH_LIST_ELEMENT;
1N/A
1N/Astruct mech_list_item;
1N/A
1N/Astruct mech_list_item {
1N/A struct mech_list_item *next;
1N/A MECH_LIST_ELEMENT element;
1N/A};
1N/A
1N/Astruct mech_list_item *
1N/Afind_mech_list_item_for_type(CK_MECHANISM_TYPE type,
1N/A struct mech_list_item *head);
1N/A
1N/Atypedef struct _TOK_OBJ_ENTRY
1N/A{
1N/A CK_BBOOL deleted;
1N/A char name[8];
1N/A CK_ULONG count_lo;
1N/A CK_ULONG count_hi;
1N/A} TOK_OBJ_ENTRY;
1N/A
1N/Atypedef struct _LW_SHM_TYPE
1N/A{
1N/A pthread_mutex_t mutex;
1N/A TOKEN_DATA nv_token_data;
1N/A CK_ULONG num_priv_tok_obj;
1N/A CK_ULONG num_publ_tok_obj;
1N/A CK_BBOOL priv_loaded;
1N/A CK_BBOOL publ_loaded;
1N/A CK_BBOOL token_available;
1N/A TOK_OBJ_ENTRY publ_tok_objs[ MAX_TOK_OBJS ];
1N/A TOK_OBJ_ENTRY priv_tok_objs[ MAX_TOK_OBJS ];
1N/A} LW_SHM_TYPE;
1N/A
1N/Atypedef unsigned int CK_ULONG_32;
1N/Atypedef CK_ULONG_32 CK_OBJECT_CLASS_32;
1N/Atypedef CK_ULONG_32 CK_ATTRIBUTE_TYPE_32;
1N/A
1N/Atypedef struct CK_ATTRIBUTE_32 {
1N/A CK_ATTRIBUTE_TYPE_32 type;
1N/A CK_ULONG_32 pValue;
1N/A CK_ULONG_32 ulValueLen;
1N/A} CK_ATTRIBUTE_32;
1N/A
1N/Achar *get_tpm_keystore_path();
1N/A
1N/Astruct messages {
1N/A char *msg;
1N/A};
1N/A
1N/Astruct token_specific_struct {
1N/A CK_BYTE token_debug_tag[MAXPATHLEN];
1N/A
1N/A CK_RV (*t_init)(char *, CK_SLOT_ID, TSS_HCONTEXT *);
1N/A int (*t_slot2local)();
1N/A
1N/A CK_RV (*t_rng)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
1N/A CK_RV (*t_session)(CK_SLOT_ID);
1N/A CK_RV (*t_final)(TSS_HCONTEXT);
1N/A CK_RV (*t_rsa_decrypt)(TSS_HCONTEXT, CK_BYTE *,
1N/A CK_ULONG, CK_BYTE *, CK_ULONG *, OBJECT *);
1N/A
1N/A CK_RV (*t_rsa_encrypt)(
1N/A TSS_HCONTEXT,
1N/A CK_BYTE *, CK_ULONG, CK_BYTE *,
1N/A CK_ULONG *, OBJECT *);
1N/A
1N/A CK_RV (*t_rsa_sign)(TSS_HCONTEXT,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *,
1N/A OBJECT *);
1N/A
1N/A CK_RV (*t_rsa_verify)(TSS_HCONTEXT,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A OBJECT *);
1N/A
1N/A CK_RV (*t_rsa_generate_keypair)(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
1N/A
1N/A CK_RV (*t_sha_init)(DIGEST_CONTEXT *);
1N/A
1N/A CK_RV (*t_sha_update)(
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/A CK_RV (*t_sha_final)(
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A CK_RV (*t_login)(TSS_HCONTEXT, CK_USER_TYPE, CK_BYTE *, CK_ULONG);
1N/A CK_RV (*t_logout)(TSS_HCONTEXT);
1N/A CK_RV (*t_init_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
1N/A CK_RV (*t_set_pin)(ST_SESSION_HANDLE, CK_BYTE *,
1N/A CK_ULONG, CK_BYTE *, CK_ULONG);
1N/A CK_RV (*t_verify_so_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
1N/A};
1N/A
1N/Atypedef struct token_specific_struct token_spec_t;
1N/A
1N/A/*
1N/A * Global Variables
1N/A */
1N/Aextern void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
1N/A
1N/Aextern struct messages err_msg[];
1N/A
1N/Aextern token_spec_t token_specific;
1N/Aextern CK_BBOOL initialized;
1N/Aextern char *card_function_names[];
1N/Aextern char *total_function_names[];
1N/A
1N/Aextern MECH_LIST_ELEMENT mech_list[];
1N/Aextern CK_ULONG mech_list_len;
1N/A
1N/Aextern pthread_mutex_t native_mutex;
1N/A
1N/Aextern void *xproclock;
1N/A
1N/Aextern pthread_mutex_t pkcs_mutex, obj_list_mutex,
1N/A sess_list_mutex, login_mutex;
1N/A
1N/Aextern DL_NODE *sess_list;
1N/Aextern DL_NODE *sess_obj_list;
1N/Aextern DL_NODE *publ_token_obj_list;
1N/Aextern DL_NODE *priv_token_obj_list;
1N/Aextern DL_NODE *object_map;
1N/A
1N/Aextern CK_BYTE so_pin_md5[MD5_DIGEST_LENGTH];
1N/Aextern CK_BYTE user_pin_md5[MD5_DIGEST_LENGTH];
1N/A
1N/Aextern CK_BYTE default_user_pin_sha[SHA1_DIGEST_LENGTH];
1N/Aextern CK_BYTE default_so_pin_sha[SHA1_DIGEST_LENGTH];
1N/Aextern CK_BYTE default_so_pin_md5[MD5_DIGEST_LENGTH];
1N/A
1N/Aextern LW_SHM_TYPE *global_shm;
1N/A
1N/Aextern TOKEN_DATA *nv_token_data;
1N/A
1N/Aextern CK_ULONG next_object_handle;
1N/Aextern CK_ULONG next_session_handle;
1N/A
1N/Aextern CK_STATE global_login_state;
1N/A
1N/Aextern CK_BYTE ber_AlgIdRSAEncryption[];
1N/Aextern CK_ULONG ber_AlgIdRSAEncryptionLen;
1N/Aextern CK_BYTE ber_rsaEncryption[];
1N/Aextern CK_ULONG ber_rsaEncryptionLen;
1N/Aextern CK_BYTE ber_idDSA[];
1N/Aextern CK_ULONG ber_idDSALen;
1N/A
1N/Aextern CK_BYTE ber_md5WithRSAEncryption[];
1N/Aextern CK_ULONG ber_md5WithRSAEncryptionLen;
1N/Aextern CK_BYTE ber_sha1WithRSAEncryption[];
1N/Aextern CK_ULONG ber_sha1WithRSAEncryptionLen;
1N/Aextern CK_BYTE ber_AlgMd5[];
1N/Aextern CK_ULONG ber_AlgMd5Len;
1N/Aextern CK_BYTE ber_AlgSha1[];
1N/Aextern CK_ULONG ber_AlgSha1Len;
1N/A
1N/Aextern CK_C_INITIALIZE_ARGS cinit_args;
1N/A
1N/A/*
1N/A * Function Prototypes
1N/A */
1N/Avoid *attach_shared_memory();
1N/Avoid detach_shared_memory(char *);
1N/A
1N/Aint API_Initialized();
1N/Avoid Terminate_All_Process_Sessions();
1N/Aint API_Register();
1N/Avoid API_UnRegister();
1N/A
1N/Avoid CreateXProcLock(void *);
1N/Aint XProcLock(void *);
1N/Aint XProcUnLock(void *);
1N/A
1N/Avoid _init(void);
1N/Avoid loginit();
1N/Avoid logterm();
1N/Avoid logit(int, char *, ...);
1N/Avoid AddToSessionList(Session_Struct_t *);
1N/Avoid RemoveFromSessionList(Session_Struct_t *);
1N/A
1N/Aint Valid_Session(Session_Struct_t *, ST_SESSION_T *);
1N/A
1N/ACK_BBOOL pin_expired(CK_SESSION_INFO *, CK_FLAGS);
1N/ACK_BBOOL pin_locked(CK_SESSION_INFO *, CK_FLAGS);
1N/Avoid set_login_flags(CK_USER_TYPE, CK_FLAGS *);
1N/A
1N/Aextern void init_slot_info(TOKEN_DATA *);
1N/A
1N/ACK_RV update_migration_data(TSS_HCONTEXT,
1N/A TSS_HKEY, TSS_HKEY, char *, char *, BYTE *, BYTE *);
1N/ACK_RV token_rng(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
1N/A
1N/ATSS_RESULT set_public_modulus(TSS_HCONTEXT, TSS_HKEY,
1N/A unsigned long, unsigned char *);
1N/ATSS_RESULT open_tss_context(TSS_HCONTEXT *);
1N/ACK_RV token_get_tpm_info(TSS_HCONTEXT, TOKEN_DATA *);
1N/A
1N/ACK_RV clock_set_default_attributes(TEMPLATE *);
1N/ACK_RV clock_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV clock_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV counter_set_default_attributes(TEMPLATE *);
1N/ACK_RV counter_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV counter_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV compute_next_token_obj_name(CK_BYTE *, CK_BYTE *);
1N/A
1N/ACK_RV save_token_object(TSS_HCONTEXT, OBJECT *);
1N/ACK_RV save_public_token_object(OBJECT *);
1N/ACK_RV save_private_token_object(TSS_HCONTEXT, OBJECT *);
1N/A
1N/ACK_RV load_public_token_objects(void);
1N/ACK_RV load_private_token_objects(TSS_HCONTEXT);
1N/A
1N/ACK_RV reload_token_object(TSS_HCONTEXT, OBJECT *);
1N/A
1N/ACK_RV delete_token_object(OBJECT *);
1N/A
1N/ACK_RV init_token_data(TSS_HCONTEXT, TOKEN_DATA *);
1N/ACK_RV load_token_data(TSS_HCONTEXT, TOKEN_DATA *);
1N/ACK_RV save_token_data(TOKEN_DATA *);
1N/Avoid copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
1N/A
1N/ACK_RV compute_sha(CK_BYTE *, CK_ULONG_32, CK_BYTE *);
1N/A
1N/ACK_RV parity_is_odd(CK_BYTE);
1N/A
1N/ACK_RV build_attribute(CK_ATTRIBUTE_TYPE,
1N/A CK_BYTE *, CK_ULONG, CK_ATTRIBUTE **);
1N/A
1N/ACK_RV add_pkcs_padding(CK_BYTE *, UINT32, UINT32, UINT32);
1N/A
1N/ACK_RV strip_pkcs_padding(CK_BYTE *, UINT32, UINT32 *);
1N/A
1N/ACK_RV remove_leading_zeros(CK_ATTRIBUTE *);
1N/A
1N/ACK_RV rsa_pkcs_encrypt(
1N/A SESSION *,
1N/A CK_BBOOL,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_pkcs_decrypt(SESSION *,
1N/A CK_BBOOL,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_pkcs_sign(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_pkcs_verify(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV rsa_pkcs_verify_recover(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_hash_pkcs_sign(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_hash_pkcs_verify(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV rsa_hash_pkcs_sign_update(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV rsa_hash_pkcs_verify_update(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV rsa_hash_pkcs_sign_final(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV rsa_hash_pkcs_verify_final(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/A
1N/ACK_RV ckm_rsa_key_pair_gen(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
1N/A
1N/ACK_RV sha1_hash(SESSION *, CK_BBOOL,
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV sha1_hmac_sign(SESSION *, CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV sha1_hmac_verify(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV md5_hash(SESSION *, CK_BBOOL,
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV md5_hmac_sign(SESSION *, CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV md5_hmac_verify(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ADL_NODE *dlist_add_as_first(DL_NODE *, void *);
1N/ADL_NODE *dlist_add_as_last(DL_NODE *, void *);
1N/ADL_NODE *dlist_find(DL_NODE *, void *);
1N/ADL_NODE *dlist_get_first(DL_NODE *);
1N/ADL_NODE *dlist_get_last(DL_NODE *);
1N/A CK_ULONG dlist_length(DL_NODE *);
1N/ADL_NODE *dlist_next(DL_NODE *);
1N/ADL_NODE *dlist_prev(DL_NODE *);
1N/Avoid dlist_purge(DL_NODE *);
1N/ADL_NODE *dlist_remove_node(DL_NODE *, DL_NODE *);
1N/A
1N/ACK_RV attach_shm(void);
1N/ACK_RV detach_shm(void);
1N/A
1N/A// encryption manager routines
1N/A//
1N/ACK_RV encr_mgr_init(SESSION *,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_ULONG,
1N/A CK_MECHANISM *,
1N/A CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV encr_mgr_cleanup(ENCR_DECR_CONTEXT *);
1N/A
1N/ACK_RV encr_mgr_encrypt(SESSION *, CK_BBOOL,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV decr_mgr_init(SESSION *,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_ULONG,
1N/A CK_MECHANISM *,
1N/A CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV decr_mgr_cleanup(ENCR_DECR_CONTEXT *);
1N/A
1N/ACK_RV decr_mgr_decrypt(SESSION *, CK_BBOOL,
1N/A ENCR_DECR_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV digest_mgr_cleanup(DIGEST_CONTEXT *);
1N/A
1N/ACK_RV digest_mgr_init(SESSION *,
1N/A DIGEST_CONTEXT *,
1N/A CK_MECHANISM *);
1N/A
1N/ACK_RV digest_mgr_digest(SESSION *, CK_BBOOL,
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV digest_mgr_digest_update(SESSION *,
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV digest_mgr_digest_key(SESSION *,
1N/A DIGEST_CONTEXT *,
1N/A CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV digest_mgr_digest_final(SESSION *,
1N/A DIGEST_CONTEXT *,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV key_mgr_generate_key_pair(SESSION *,
1N/A CK_MECHANISM *,
1N/A CK_ATTRIBUTE *, CK_ULONG,
1N/A CK_ATTRIBUTE *, CK_ULONG,
1N/A CK_OBJECT_HANDLE *,
1N/A CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV key_mgr_wrap_key(SESSION *,
1N/A CK_BBOOL,
1N/A CK_MECHANISM *,
1N/A CK_OBJECT_HANDLE,
1N/A CK_OBJECT_HANDLE,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV key_mgr_unwrap_key(SESSION *,
1N/A CK_MECHANISM *,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_OBJECT_HANDLE,
1N/A CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV sign_mgr_init(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_MECHANISM *,
1N/A CK_BBOOL,
1N/A CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV sign_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
1N/A
1N/ACK_RV sign_mgr_sign(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV sign_mgr_sign_recover(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV sign_mgr_sign_final(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV sign_mgr_sign_update(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV verify_mgr_init(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_MECHANISM *,
1N/A CK_BBOOL,
1N/A CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV verify_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
1N/A
1N/ACK_RV verify_mgr_verify(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV verify_mgr_verify_recover(SESSION *,
1N/A CK_BBOOL,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG,
1N/A CK_BYTE *,
1N/A CK_ULONG *);
1N/A
1N/ACK_RV verify_mgr_verify_update(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV verify_mgr_verify_final(SESSION *,
1N/A SIGN_VERIFY_CONTEXT *,
1N/A CK_BYTE *,
1N/A CK_ULONG);
1N/A
1N/A
1N/A// session manager routines
1N/A//
1N/ACK_RV session_mgr_close_all_sessions(void);
1N/ACK_RV session_mgr_close_session(SESSION *);
1N/ASESSION *session_mgr_find(CK_SESSION_HANDLE);
1N/ACK_RV session_mgr_login_all(CK_USER_TYPE);
1N/ACK_RV session_mgr_logout_all(void);
1N/ACK_RV session_mgr_new(CK_ULONG, SESSION **);
1N/A
1N/ACK_BBOOL session_mgr_readonly_exists(void);
1N/ACK_BBOOL session_mgr_so_session_exists(void);
1N/ACK_BBOOL session_mgr_user_session_exists(void);
1N/ACK_BBOOL session_mgr_public_session_exists(void);
1N/A
1N/ACK_RV session_mgr_get_op_state(SESSION *, CK_BBOOL,
1N/A CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV session_mgr_set_op_state(SESSION *,
1N/A CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *);
1N/A
1N/ACK_RV object_mgr_add(SESSION *,
1N/A CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV object_mgr_add_to_map(SESSION *, OBJECT *, CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV object_mgr_add_to_shm(OBJECT *);
1N/ACK_RV object_mgr_del_from_shm(OBJECT *);
1N/A
1N/ACK_RV object_mgr_copy(SESSION *,
1N/A CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE,
1N/A CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV object_mgr_create_final(SESSION *,
1N/A OBJECT *, CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV object_mgr_create_skel(SESSION *,
1N/A CK_ATTRIBUTE *, CK_ULONG, CK_ULONG,
1N/A CK_ULONG, CK_ULONG, OBJECT **);
1N/A
1N/ACK_RV object_mgr_destroy_object(SESSION *, CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV object_mgr_destroy_token_objects(TSS_HCONTEXT);
1N/A
1N/ACK_RV object_mgr_find_in_map1(TSS_HCONTEXT, CK_OBJECT_HANDLE, OBJECT **);
1N/A
1N/ACK_RV object_mgr_find_in_map2(TSS_HCONTEXT, OBJECT *, CK_OBJECT_HANDLE *);
1N/A
1N/ACK_RV object_mgr_find_init(SESSION *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV object_mgr_find_build_list(SESSION *,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG,
1N/A DL_NODE *,
1N/A CK_BBOOL public_only);
1N/A
1N/ACK_RV object_mgr_find_final(SESSION *);
1N/A
1N/ACK_RV object_mgr_get_attribute_values(SESSION *,
1N/A CK_OBJECT_HANDLE,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_RV object_mgr_get_object_size(TSS_HCONTEXT, CK_OBJECT_HANDLE,
1N/A CK_ULONG *);
1N/A
1N/ACK_BBOOL object_mgr_invalidate_handle1(CK_OBJECT_HANDLE handle);
1N/A
1N/ACK_BBOOL object_mgr_invalidate_handle2(OBJECT *);
1N/A
1N/ACK_BBOOL object_mgr_purge_session_objects(SESSION *, SESS_OBJ_TYPE);
1N/A
1N/ACK_BBOOL object_mgr_purge_token_objects(TSS_HCONTEXT);
1N/A
1N/ACK_BBOOL object_mgr_purge_private_token_objects(TSS_HCONTEXT);
1N/A
1N/ACK_RV object_mgr_remove_from_map(CK_OBJECT_HANDLE);
1N/A
1N/ACK_RV object_mgr_restore_obj(CK_BYTE *, OBJECT *);
1N/A
1N/ACK_RV object_mgr_set_attribute_values(SESSION *,
1N/A CK_OBJECT_HANDLE,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_BBOOL object_mgr_purge_map(SESSION *, SESS_OBJ_TYPE);
1N/A
1N/ACK_RV object_create(CK_ATTRIBUTE *, CK_ULONG, OBJECT **);
1N/A
1N/ACK_RV object_create_skel(CK_ATTRIBUTE *,
1N/A CK_ULONG,
1N/A CK_ULONG,
1N/A CK_ULONG,
1N/A CK_ULONG,
1N/A OBJECT **);
1N/A
1N/ACK_RV object_copy(CK_ATTRIBUTE *,
1N/A CK_ULONG,
1N/A OBJECT *,
1N/A OBJECT **);
1N/A
1N/ACK_RV object_flatten(OBJECT *,
1N/A CK_BYTE **,
1N/A CK_ULONG_32 *);
1N/A
1N/ACK_BBOOL object_free(OBJECT *);
1N/A
1N/ACK_RV object_get_attribute_values(OBJECT *,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_ULONG object_get_size(OBJECT *);
1N/A
1N/ACK_RV object_restore(CK_BYTE *,
1N/A OBJECT **,
1N/A CK_BBOOL replace);
1N/A
1N/ACK_RV object_set_attribute_values(OBJECT *,
1N/A CK_ATTRIBUTE *,
1N/A CK_ULONG);
1N/A
1N/ACK_BBOOL object_is_modifiable(OBJECT *);
1N/ACK_BBOOL object_is_private(OBJECT *);
1N/ACK_BBOOL object_is_public(OBJECT *);
1N/ACK_BBOOL object_is_token_object(OBJECT *);
1N/ACK_BBOOL object_is_session_object(OBJECT *);
1N/A
1N/ACK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE);
1N/A
1N/ACK_RV template_add_attributes(TEMPLATE *,
1N/A CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV template_add_default_attributes(TEMPLATE *,
1N/A CK_ULONG,
1N/A CK_ULONG,
1N/A CK_ULONG);
1N/A
1N/ACK_BBOOL template_attribute_find(TEMPLATE *,
1N/A CK_ATTRIBUTE_TYPE, CK_ATTRIBUTE **);
1N/A
1N/Avoid template_attribute_find_multiple(TEMPLATE *,
1N/A ATTRIBUTE_PARSE_LIST *,
1N/A CK_ULONG);
1N/A
1N/ACK_BBOOL template_check_exportability(TEMPLATE *, CK_ATTRIBUTE_TYPE type);
1N/A
1N/ACK_RV template_check_required_attributes(TEMPLATE *,
1N/A CK_ULONG, CK_ULONG, CK_ULONG);
1N/A
1N/ACK_RV template_check_required_base_attributes(TEMPLATE *,
1N/A CK_ULONG);
1N/A
1N/ACK_BBOOL template_compare(CK_ATTRIBUTE *,
1N/A CK_ULONG, TEMPLATE *);
1N/A
1N/ACK_RV template_copy(TEMPLATE *, TEMPLATE *);
1N/A
1N/ACK_RV template_flatten(TEMPLATE *, CK_BYTE *);
1N/A
1N/ACK_RV template_free(TEMPLATE *);
1N/A
1N/ACK_BBOOL template_get_class(TEMPLATE *, CK_ULONG *, CK_ULONG *);
1N/A
1N/ACK_ULONG template_get_count(TEMPLATE *);
1N/A
1N/ACK_ULONG template_get_size(TEMPLATE *);
1N/ACK_ULONG template_get_compressed_size(TEMPLATE *);
1N/A
1N/ACK_RV template_set_default_common_attributes(TEMPLATE *);
1N/A
1N/ACK_RV template_merge(TEMPLATE *, TEMPLATE **);
1N/A
1N/ACK_RV template_update_attribute(TEMPLATE *, CK_ATTRIBUTE *);
1N/A
1N/ACK_RV template_unflatten(TEMPLATE **, CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV template_validate_attribute(TEMPLATE *,
1N/A CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, CK_ULONG);
1N/A
1N/ACK_RV template_validate_attributes(TEMPLATE *,
1N/A CK_ULONG, CK_ULONG, CK_ULONG);
1N/A
1N/ACK_RV template_validate_base_attribute(TEMPLATE *,
1N/A CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/A
1N/A// DATA OBJECT ROUTINES
1N/A//
1N/ACK_RV data_object_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV data_object_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV data_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/A// CERTIFICATE ROUTINES
1N/ACK_RV cert_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV cert_x509_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV cert_x509_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV cert_x509_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/ACK_RV cert_vendor_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV cert_vendor_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/A//
1N/A// KEY ROUTINES
1N/A//
1N/ACK_RV key_object_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV key_object_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV key_object_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV publ_key_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV publ_key_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV publ_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/ACK_RV priv_key_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV priv_key_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV priv_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG);
1N/ACK_RV priv_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/A
1N/A CK_BBOOL secret_key_check_exportability(CK_ATTRIBUTE_TYPE type);
1N/ACK_RV secret_key_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV secret_key_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV secret_key_unwrap(TEMPLATE *, CK_ULONG, CK_BYTE *, CK_ULONG,
1N/A CK_BBOOL fromend);
1N/ACK_RV secret_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *,
1N/A CK_ULONG);
1N/A
1N/A// rsa routines
1N/A//
1N/ACK_RV rsa_publ_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV rsa_publ_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/ACK_RV rsa_publ_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/A CK_BBOOL rsa_priv_check_exportability(CK_ATTRIBUTE_TYPE type);
1N/ACK_RV rsa_priv_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV rsa_priv_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV rsa_priv_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/ACK_RV rsa_priv_wrap_get_data(TEMPLATE *, CK_BBOOL, CK_BYTE **, CK_ULONG *);
1N/ACK_RV rsa_priv_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG);
1N/A
1N/A// Generic secret key routines
1N/ACK_RV generic_secret_check_required_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV generic_secret_set_default_attributes(TEMPLATE *, CK_ULONG);
1N/ACK_RV generic_secret_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
1N/ACK_RV generic_secret_wrap_get_data(TEMPLATE *, CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *);
1N/A
1N/ACK_RV generic_secret_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG, CK_BBOOL fromend);
1N/A
1N/ACK_RV tpm_encrypt_data(TSS_HCONTEXT,
1N/A TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_RV tpm_decrypt_data(TSS_HCONTEXT,
1N/A TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
1N/A
1N/ACK_ULONG ber_encode_INTEGER(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV ber_decode_INTEGER(CK_BYTE *,
1N/A CK_BYTE **, CK_ULONG *, CK_ULONG *);
1N/A
1N/ACK_RV ber_encode_OCTET_STRING(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV ber_decode_OCTET_STRING(CK_BYTE *,
1N/A CK_BYTE **, CK_ULONG *, CK_ULONG *);
1N/A
1N/ACK_RV ber_encode_SEQUENCE(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV ber_decode_SEQUENCE(CK_BYTE *,
1N/A CK_BYTE **, CK_ULONG *, CK_ULONG *);
1N/A
1N/ACK_RV ber_encode_PrivateKeyInfo(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_BYTE *,
1N/A CK_ULONG, CK_BYTE *, CK_ULONG);
1N/A
1N/ACK_RV ber_decode_PrivateKeyInfo(CK_BYTE *,
1N/A CK_ULONG, CK_BYTE **, CK_ULONG *, CK_BYTE **);
1N/A
1N/ACK_RV ber_encode_RSAPrivateKey(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
1N/A CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
1N/A CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
1N/A CK_ATTRIBUTE *);
1N/A
1N/ACK_RV ber_decode_RSAPrivateKey(CK_BYTE *,
1N/A CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
1N/A CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
1N/A CK_ATTRIBUTE **, CK_ATTRIBUTE **, CK_ATTRIBUTE **);
1N/A
1N/A
1N/ACK_RV ber_encode_DSAPrivateKey(CK_BBOOL,
1N/A CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
1N/A CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *);
1N/A
1N/ACK_RV ber_decode_DSAPrivateKey(CK_BYTE *,
1N/A CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
1N/A CK_ATTRIBUTE **, CK_ATTRIBUTE **);
1N/A
1N/A#define APPID "TPM_STDLL"
1N/A
1N/A/* log to stdout */
1N/A#define LogMessage(dest, priority, layer, fmt, ...) \
1N/A (void) fprintf(dest, "%s %s %s:%d " fmt "\n", (char *)priority, \
1N/A (char *)layer, (char *)__FILE__,\
1N/A (int)__LINE__, __VA_ARGS__);
1N/A
1N/A#define LogMessage1(dest, priority, layer, data) \
1N/A (void) fprintf(dest, "%s %s %s:%d %s\n", priority, layer, __FILE__, \
1N/A __LINE__, data);
1N/A
1N/A/* Debug logging */
1N/A#ifdef DEBUG
1N/A#define LogDebug(fmt, ...) LogMessage(stdout, "LOG_DEBUG", APPID, \
1N/A fmt, __VA_ARGS__)
1N/A
1N/A#define LogDebug1(data) LogMessage1(stdout, "LOG_DEBUG", APPID, data)
1N/A
1N/A/* Error logging */
1N/A#define LogError(fmt, ...) LogMessage(stderr, "LOG_ERR", APPID,\
1N/A "ERROR: " fmt, __VA_ARGS__)
1N/A
1N/A#define LogError1(data) LogMessage1(stderr, "LOG_ERR", APPID,\
1N/A "ERROR: " data)
1N/A
1N/A/* Warn logging */
1N/A#define LogWarn(fmt, ...) LogMessage(stdout, "LOG_WARNING", APPID,\
1N/A "WARNING: " fmt, __VA_ARGS__)
1N/A
1N/A#define LogWarn1(data) LogMessage1(stdout, "LOG_WARNING", APPID,\
1N/A "WARNING: " data)
1N/A
1N/A/* Info Logging */
1N/A#define LogInfo(fmt, ...) LogMessage(stdout, "LOG_INFO", APPID,\
1N/A fmt, __VA_ARGS__)
1N/A
1N/A#define LogInfo1(data) LogMessage1(stdout, "LOG_INFO", APPID, data)
1N/A
1N/A#define st_err_log(...) LogMessage(stderr, "ST MSG", APPID,\
1N/A "", __VA_ARGS__)
1N/A#else
1N/A#define LogDebug(...)
1N/A#define LogDebug1(...)
1N/A#define LogBlob(...)
1N/A#define LogError(...)
1N/A#define LogError1(...)
1N/A#define LogWarn(...)
1N/A#define LogWarn1(...)
1N/A#define LogInfo(...)
1N/A#define LogInfo1(...)
1N/A#define st_err_log(...)
1N/A#endif
1N/A
1N/A/*
1N/A * CK_FUNCTION_LIST is a structure holding a Cryptoki spec
1N/A * version and pointers of appropriate types to all the
1N/A * Cryptoki functions
1N/A */
1N/A
1N/A/* CK_FUNCTION_LIST is new for v2.0 */
1N/A
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Initialize)
1N/A (void *ppFunctionList, CK_SLOT_ID slotID, CK_CHAR_PTR pCorrelator);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Finalize)
1N/A (CK_VOID_PTR pReserved);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Terminate)();
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetInfo)
1N/A (CK_INFO_PTR pInfo);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetFunctionList)
1N/A (CK_FUNCTION_LIST_PTR_PTR ppFunctionList);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetSlotList)
1N/A (CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
1N/A CK_ULONG_PTR pusCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetSlotInfo)
1N/A (CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetTokenInfo)
1N/A (CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetMechanismList)
1N/A (CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList,
1N/A CK_ULONG_PTR pusCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetMechanismInfo)
1N/A (CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
1N/A CK_MECHANISM_INFO_PTR pInfo);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_InitToken)
1N/A (CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG usPinLen,
1N/A CK_CHAR_PTR pLabel);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_InitPIN)
1N/A (ST_SESSION_T hSession, CK_CHAR_PTR pPin,
1N/A CK_ULONG usPinLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SetPIN)
1N/A (ST_SESSION_T hSession, CK_CHAR_PTR pOldPin,
1N/A CK_ULONG usOldLen, CK_CHAR_PTR pNewPin,
1N/A CK_ULONG usNewLen);
1N/A
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_OpenSession)
1N/A (CK_SLOT_ID slotID, CK_FLAGS flags,
1N/A CK_SESSION_HANDLE_PTR phSession);
1N/A
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_CloseSession)
1N/A (ST_SESSION_T hSession);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_CloseAllSessions)
1N/A (CK_SLOT_ID slotID);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetSessionInfo)
1N/A (ST_SESSION_T hSession, CK_SESSION_INFO_PTR pInfo);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetOperationState)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
1N/A CK_ULONG_PTR pulOperationStateLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SetOperationState)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
1N/A CK_ULONG ulOperationStateLen,
1N/A CK_OBJECT_HANDLE hEncryptionKey,
1N/A CK_OBJECT_HANDLE hAuthenticationKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Login)(ST_SESSION_T hSession,
1N/A CK_USER_TYPE userType, CK_CHAR_PTR pPin,
1N/A CK_ULONG usPinLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Logout)(ST_SESSION_T hSession);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_CreateObject)
1N/A (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
1N/A CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject);
1N/A
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_CopyObject)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
1N/A CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
1N/A CK_OBJECT_HANDLE_PTR phNewObject);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DestroyObject)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetObjectSize)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
1N/A CK_ULONG_PTR pusSize);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetAttributeValue)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
1N/A CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SetAttributeValue)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
1N/A CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_FindObjectsInit)
1N/A (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
1N/A CK_ULONG usCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_FindObjects)
1N/A (ST_SESSION_T hSession,
1N/A CK_OBJECT_HANDLE_PTR phObject, CK_ULONG usMaxObjectCount,
1N/A CK_ULONG_PTR pusObjectCount);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_FindObjectsFinal)
1N/A (ST_SESSION_T hSession);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_EncryptInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Encrypt)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pData,
1N/A CK_ULONG usDataLen, CK_BYTE_PTR pEncryptedData,
1N/A CK_ULONG_PTR pusEncryptedDataLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_EncryptUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG usPartLen, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG_PTR pusEncryptedPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_EncryptFinal)
1N/A (ST_SESSION_T hSession,
1N/A CK_BYTE_PTR pLastEncryptedPart,
1N/A CK_ULONG_PTR pusLastEncryptedPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DecryptInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Decrypt)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedData,
1N/A CK_ULONG usEncryptedDataLen, CK_BYTE_PTR pData,
1N/A CK_ULONG_PTR pusDataLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DecryptUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG usEncryptedPartLen, CK_BYTE_PTR pPart,
1N/A CK_ULONG_PTR pusPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DecryptFinal)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pLastPart,
1N/A CK_ULONG_PTR pusLastPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DigestInit)
1N/A (ST_SESSION_T hSession,
1N/A CK_MECHANISM_PTR pMechanism);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Digest)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pData,
1N/A CK_ULONG usDataLen, CK_BYTE_PTR pDigest,
1N/A CK_ULONG_PTR pusDigestLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DigestUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG usPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DigestKey)
1N/A (ST_SESSION_T hSession, CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DigestFinal)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pDigest,
1N/A CK_ULONG_PTR pusDigestLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Sign)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pData,
1N/A CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
1N/A CK_ULONG_PTR pusSignatureLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG usPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignFinal)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
1N/A CK_ULONG_PTR pusSignatureLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignRecoverInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignRecover)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pData,
1N/A CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
1N/A CK_ULONG_PTR pusSignatureLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_VerifyInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_Verify)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pData,
1N/A CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
1N/A CK_ULONG usSignatureLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_VerifyUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG usPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_VerifyFinal)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
1N/A CK_ULONG usSignatureLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_VerifyRecoverInit)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_VerifyRecover)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
1N/A CK_ULONG usSignatureLen, CK_BYTE_PTR pData,
1N/A CK_ULONG_PTR pusDataLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DigestEncryptUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG_PTR pulEncryptedPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DecryptDigestUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
1N/A CK_ULONG_PTR pulPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SignEncryptUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
1N/A CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG_PTR pulEncryptedPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DecryptVerifyUpdate)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
1N/A CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
1N/A CK_ULONG_PTR pulPartLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GenerateKey)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
1N/A CK_OBJECT_HANDLE_PTR phKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GenerateKeyPair)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_ATTRIBUTE_PTR pPublicKeyTemplate,
1N/A CK_ULONG usPublicKeyAttributeCount,
1N/A CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
1N/A CK_ULONG usPrivateKeyAttributeCount,
1N/A CK_OBJECT_HANDLE_PTR phPrivateKey,
1N/A CK_OBJECT_HANDLE_PTR phPublicKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_WrapKey)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey,
1N/A CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pusWrappedKeyLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_UnwrapKey)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hUnwrappingKey, CK_BYTE_PTR pWrappedKey,
1N/A CK_ULONG usWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate,
1N/A CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_DeriveKey)
1N/A (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
1N/A CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate,
1N/A CK_ULONG usAttributeCount, CK_OBJECT_HANDLE_PTR phKey);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_SeedRandom)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pSeed,
1N/A CK_ULONG usSeedLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GenerateRandom)
1N/A (ST_SESSION_T hSession, CK_BYTE_PTR pRandomData,
1N/A CK_ULONG usRandomLen);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_GetFunctionStatus)
1N/A (ST_SESSION_T hSession);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_CancelFunction)
1N/A (ST_SESSION_T hSession);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_Notify)
1N/A (ST_SESSION_T hSession, CK_NOTIFICATION event,
1N/A CK_VOID_PTR pApplication);
1N/Atypedef CK_RV
1N/A (CK_PTR ST_C_WaitForSlotEvent)
1N/A (CK_FLAGS flags, CK_SLOT_ID_PTR pSlot,
1N/A CK_VOID_PTR pReserved);
1N/A
1N/A
1N/A
1N/Astruct ST_FCN_LIST {
1N/A
1N/A ST_C_Initialize ST_Initialize;
1N/A ST_C_Finalize ST_Finalize;
1N/A
1N/A ST_C_GetTokenInfo ST_GetTokenInfo;
1N/A ST_C_GetMechanismList ST_GetMechanismList;
1N/A ST_C_GetMechanismInfo ST_GetMechanismInfo;
1N/A ST_C_InitToken ST_InitToken;
1N/A ST_C_InitPIN ST_InitPIN;
1N/A ST_C_SetPIN ST_SetPIN;
1N/A
1N/A ST_C_OpenSession ST_OpenSession;
1N/A ST_C_CloseSession ST_CloseSession;
1N/A ST_C_GetSessionInfo ST_GetSessionInfo;
1N/A ST_C_GetOperationState ST_GetOperationState;
1N/A ST_C_SetOperationState ST_SetOperationState;
1N/A ST_C_Login ST_Login;
1N/A ST_C_Logout ST_Logout;
1N/A
1N/A ST_C_CreateObject ST_CreateObject;
1N/A ST_C_CopyObject ST_CopyObject;
1N/A ST_C_DestroyObject ST_DestroyObject;
1N/A ST_C_GetObjectSize ST_GetObjectSize;
1N/A ST_C_GetAttributeValue ST_GetAttributeValue;
1N/A ST_C_SetAttributeValue ST_SetAttributeValue;
1N/A ST_C_FindObjectsInit ST_FindObjectsInit;
1N/A ST_C_FindObjects ST_FindObjects;
1N/A ST_C_FindObjectsFinal ST_FindObjectsFinal;
1N/A
1N/A
1N/A ST_C_EncryptInit ST_EncryptInit;
1N/A ST_C_Encrypt ST_Encrypt;
1N/A ST_C_EncryptUpdate ST_EncryptUpdate;
1N/A ST_C_EncryptFinal ST_EncryptFinal;
1N/A ST_C_DecryptInit ST_DecryptInit;
1N/A ST_C_Decrypt ST_Decrypt;
1N/A ST_C_DecryptUpdate ST_DecryptUpdate;
1N/A ST_C_DecryptFinal ST_DecryptFinal;
1N/A ST_C_DigestInit ST_DigestInit;
1N/A ST_C_Digest ST_Digest;
1N/A ST_C_DigestUpdate ST_DigestUpdate;
1N/A ST_C_DigestKey ST_DigestKey;
1N/A ST_C_DigestFinal ST_DigestFinal;
1N/A ST_C_SignInit ST_SignInit;
1N/A ST_C_Sign ST_Sign;
1N/A ST_C_SignUpdate ST_SignUpdate;
1N/A ST_C_SignFinal ST_SignFinal;
1N/A ST_C_SignRecoverInit ST_SignRecoverInit;
1N/A ST_C_SignRecover ST_SignRecover;
1N/A ST_C_VerifyInit ST_VerifyInit;
1N/A ST_C_Verify ST_Verify;
1N/A ST_C_VerifyUpdate ST_VerifyUpdate;
1N/A ST_C_VerifyFinal ST_VerifyFinal;
1N/A ST_C_VerifyRecoverInit ST_VerifyRecoverInit;
1N/A ST_C_VerifyRecover ST_VerifyRecover;
1N/A ST_C_DigestEncryptUpdate ST_DigestEncryptUpdate;
1N/A ST_C_DecryptDigestUpdate ST_DecryptDigestUpdate;
1N/A ST_C_SignEncryptUpdate ST_SignEncryptUpdate;
1N/A ST_C_DecryptVerifyUpdate ST_DecryptVerifyUpdate;
1N/A ST_C_GenerateKey ST_GenerateKey;
1N/A ST_C_GenerateKeyPair ST_GenerateKeyPair;
1N/A ST_C_WrapKey ST_WrapKey;
1N/A ST_C_UnwrapKey ST_UnwrapKey;
1N/A ST_C_DeriveKey ST_DeriveKey;
1N/A ST_C_SeedRandom ST_SeedRandom;
1N/A ST_C_GenerateRandom ST_GenerateRandom;
1N/A ST_C_GetFunctionStatus ST_GetFunctionStatus;
1N/A ST_C_CancelFunction ST_CancelFunction;
1N/A};
1N/A
1N/Atypedef struct ST_FCN_LIST STDLL_FcnList_t;
1N/A
1N/A#endif /* _TPMTOK_INT_H */