47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
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 *
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 *
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 *
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 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* (C) COPYRIGHT International Business Machines Corp. 2001, 2002, 2005 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Use is subject to license terms.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#ifndef _TPMTOK_INT_H
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define _TPMTOK_INT_H
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <stdio.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <pthread.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <string.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <strings.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <md5.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <sha1.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <limits.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <syslog.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <errno.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <sys/types.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <sys/stat.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <sys/param.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <sys/byteorder.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <security/cryptoki.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <tss/platform.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <tss/tss_defines.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <tss/tss_typedef.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <tss/tss_structs.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#include <tss/tspi.h>
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define VERSION_MAJOR 2
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define VERSION_MINOR 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MAX_SESSION_COUNT 64
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MAX_PIN_LEN 256
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MIN_PIN_LEN 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MAX_SLOT_ID 10
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#ifndef MIN
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MIN(a, b) ((a) < (b) ? (a) : (b))
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_COPY (1 << 0)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_CREATE (1 << 1)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_KEYGEN (1 << 2)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_MODIFY (1 << 3)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_DERIVE (1 << 4)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MODE_UNWRAP (1 << 5)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// RSA block formatting types
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKCS_BT_1 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKCS_BT_2 2
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_ENCRYPT_INIT 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_DECRYPT_INIT 2
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_WRAP 3
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_UNWRAP 4
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_SIGN_INIT 5
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define OP_VERIFY_INIT 6
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollenum {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_INVALID = 0,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_ENCR,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_DECR,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_DIGEST,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_SIGN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll STATE_VERIFY
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define SHA1_BLOCK_SIZE 64
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define SHA1_BLOCK_SIZE_MASK (SHA1_BLOCK_SIZE - 1)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define RSA_BLOCK_SIZE 256
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#ifndef PATH_MAX
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PATH_MAX MAXPATHLEN
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#ifndef PACK_DATA
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PACK_DATA
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MD5_BLOCK_SIZE 64
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define DSA_SIGNATURE_SIZE 40
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define DEFAULT_SO_PIN "87654321"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef enum {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ALL = 1,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRIVATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PUBLIC
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} SESS_OBJ_TYPE;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _DL_NODE
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll struct _DL_NODE *next;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll struct _DL_NODE *prev;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *data;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} DL_NODE;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TOKEN_DATA_FILE "token.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TOKEN_OBJ_DIR "objects"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TOKEN_OBJ_INDEX_FILE "obj.idx"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TPMTOK_UUID_INDEX_FILENAME "uuids.idx"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Filenames used to store migration data.
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define SO_MAKEY_FILENAME "so_makey.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define USER_MAKEY_FILENAME "user_makey.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define SO_KEYBLOB_FILENAME "so_blob.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define USER_KEYBLOB_FILENAME "user_blob.dat"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define __FUNCTION__ __func__
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
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//
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_VERSION_MAJOR 2
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_VERSION_MINOR 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_MANUFACTURER "Sun Microsystems, Inc. "
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_LIBDESC "PKCS#11 Interface for TPM "
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_LIB_VERSION_MAJOR 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_CRYPTOKI_LIB_VERSION_MINOR 0
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define PKW_MAX_DEVICES 10
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define MAX_TOK_OBJS 2048
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define NUMBER_SLOTS_MANAGED 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define TPM_SLOTID 1
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
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 */
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/*
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 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define CKA_ENC_AUTHDATA CKA_VENDOR_DEFINED + 0x03
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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 Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SLOT_ID slotID;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SESSION_HANDLE sessionh;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} ST_SESSION_T;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef ST_SESSION_T ST_SESSION_HANDLE;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *Previous;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *Next;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SLOT_ID SltId;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SESSION_HANDLE RealHandle;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} Session_Struct_t;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef Session_Struct_t *SessStructP;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll pid_t Pid;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll pthread_mutex_t ProcMutex;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll Session_Struct_t *SessListBeg;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll Session_Struct_t *SessListEnd;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll pthread_mutex_t SessListMutex;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} API_Proc_Struct_t;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollenum {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DUMMYFUNCTION = 1,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_FCVFUNCTION,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_INITIALIZE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_FINALIZE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETINFO,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETFUNCTIONLIST,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETSLOTLIST,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETSLOTINFO,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETTOKENINFO,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETMECHLIST,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETMECHINFO,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_INITTOKEN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_INITPIN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SETPIN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_OPENSESSION,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_CLOSESESSION,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_CLOSEALLSESSIONS,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETSESSIONINFO,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETOPERATIONSTATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SETOPERATIONSTATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_LOGIN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_LOGOUT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_CREATEOBJECT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_COPYOBJECT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DESTROYOBJECT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETOBJECTSIZE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GETATTRIBUTEVALUE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SETATTRIBUTEVALUE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_FINDOBJECTSINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_FINDOBJECTS,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_FINDOBJECTSFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_ENCRYPTINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_ENCRYPT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_ENCRYPTUPDATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_ENCRYPTFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DECRYPTINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DECRYPT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DECRYPTUPDATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DECRYPTFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DIGESTINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DIGEST,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DIGESTUPDATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DIGESTKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DIGESTFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGNINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGN,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGNUPDATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGNFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGNRECOVERINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_SIGNRECOVER,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFYINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFYUPDATE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFYFINAL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFYRECOVERINIT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_VERIFYRECOVER,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GENKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GENKEYPAIR,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_WRAPKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_UNWRAPKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_DERIVEKEY,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_GENRND,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll PRF_LASTENTRY
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _ENCR_DECR_CONTEXT
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE key;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM mech;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *context;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG context_len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL multi;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL active;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} ENCR_DECR_CONTEXT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _DIGEST_CONTEXT
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM mech;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll union {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll MD5_CTX *md5ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SHA1_CTX *sha1ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *ref; /* reference ptr for the union */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll } context;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG context_len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL multi;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL active;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} DIGEST_CONTEXT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _SIGN_VERIFY_CONTEXT
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE key;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM mech; // current sign mechanism
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *context; // temporary work area
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG context_len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL multi; // is this a multi - part operation?
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL recover; // are we in recover mode?
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL active;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} SIGN_VERIFY_CONTEXT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _SESSION
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SESSION_HANDLE handle;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SESSION_INFO session_info;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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 CK_ULONG find_idx; // current position
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL find_active;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT encr_ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT decr_ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT digest_ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT sign_ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT verify_ctx;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HCONTEXT hContext;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} SESSION;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _TEMPLATE
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DL_NODE *attribute_list;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} TEMPLATE;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _OBJECT
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_CLASS class;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE name[8]; // for token objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SESSION *session; // creator; only for session objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TEMPLATE *template;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_hi; // only significant for token objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_lo; // only significant for token objects
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG index;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} OBJECT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _OBJECT_MAP
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE handle;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL is_private;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL is_session_obj;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SESSION *session;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT *ptr;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} OBJECT_MAP;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _ATTRIBUTE_PARSE_LIST
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_TYPE type;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll void *ptr;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL found;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} ATTRIBUTE_PARSE_LIST;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _OP_STATE_DATA
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_STATE session_state;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG active_operation;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG data_len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} OP_STATE_DATA;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _TWEAK_VEC
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll int allow_key_mods;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} TWEAK_VEC;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _TOKEN_DATA
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_TOKEN_INFO token_info;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE user_pin_sha[SHA1_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE so_pin_sha[SHA1_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE next_token_object_name[8];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TWEAK_VEC tweak_vector;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} TOKEN_DATA;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _RSA_DIGEST_CONTEXT {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT hash_context;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL flag;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} RSA_DIGEST_CONTEXT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _MECH_LIST_ELEMENT
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM_TYPE mech_type;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM_INFO mech_info;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} MECH_LIST_ELEMENT;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct mech_list_item;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct mech_list_item {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll struct mech_list_item *next;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll MECH_LIST_ELEMENT element;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct mech_list_item *
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollfind_mech_list_item_for_type(CK_MECHANISM_TYPE type,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll struct mech_list_item *head);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _TOK_OBJ_ENTRY
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL deleted;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll char name[8];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_lo;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG count_hi;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} TOK_OBJ_ENTRY;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct _LW_SHM_TYPE
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll{
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll pthread_mutex_t mutex;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TOKEN_DATA nv_token_data;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG num_priv_tok_obj;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG num_publ_tok_obj;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL priv_loaded;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL publ_loaded;
8d26100c1d185652ac4e12e1b6c2337446ad0746Wyllys Ingersoll CK_BBOOL token_available;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TOK_OBJ_ENTRY publ_tok_objs[ MAX_TOK_OBJS ];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TOK_OBJ_ENTRY priv_tok_objs[ MAX_TOK_OBJS ];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} LW_SHM_TYPE;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef unsigned int CK_ULONG_32;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_ULONG_32 CK_OBJECT_CLASS_32;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_ULONG_32 CK_ATTRIBUTE_TYPE_32;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct CK_ATTRIBUTE_32 {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_TYPE_32 type;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_32 pValue;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_32 ulValueLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll} CK_ATTRIBUTE_32;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollchar *get_tpm_keystore_path();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct messages {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll char *msg;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct token_specific_struct {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE token_debug_tag[MAXPATHLEN];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_init)(char *, CK_SLOT_ID, TSS_HCONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll int (*t_slot2local)();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rng)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_session)(CK_SLOT_ID);
ab8176c2544f70ca46c1ce370963d426561222b3Wyllys Ingersoll CK_RV (*t_final)(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_decrypt)(TSS_HCONTEXT, CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG *, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_encrypt)(
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG, CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_sign)(TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_verify)(TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_rsa_generate_keypair)(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_sha_init)(DIGEST_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_sha_update)(
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_sha_final)(
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_login)(TSS_HCONTEXT, CK_USER_TYPE, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_logout)(TSS_HCONTEXT);
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_ULONG, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_RV (*t_verify_so_pin)(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct token_specific_struct token_spec_t;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Global Variables
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern void copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern struct messages err_msg[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern token_spec_t token_specific;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BBOOL initialized;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern char *card_function_names[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern char *total_function_names[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern MECH_LIST_ELEMENT mech_list[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG mech_list_len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern pthread_mutex_t native_mutex;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern void *xproclock;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern pthread_mutex_t pkcs_mutex, obj_list_mutex,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll sess_list_mutex, login_mutex;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern DL_NODE *sess_list;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern DL_NODE *sess_obj_list;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern DL_NODE *publ_token_obj_list;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern DL_NODE *priv_token_obj_list;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern DL_NODE *object_map;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE so_pin_md5[MD5_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE user_pin_md5[MD5_DIGEST_LENGTH];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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 Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern LW_SHM_TYPE *global_shm;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern TOKEN_DATA *nv_token_data;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG next_object_handle;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG next_session_handle;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_STATE global_login_state;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_AlgIdRSAEncryption[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_AlgIdRSAEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_rsaEncryption[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_rsaEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_idDSA[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_idDSALen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_md5WithRSAEncryption[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_md5WithRSAEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_sha1WithRSAEncryption[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_sha1WithRSAEncryptionLen;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_AlgMd5[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_AlgMd5Len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_BYTE ber_AlgSha1[];
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_ULONG ber_AlgSha1Len;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern CK_C_INITIALIZE_ARGS cinit_args;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll * Function Prototypes
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid *attach_shared_memory();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid detach_shared_memory(char *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint API_Initialized();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid Terminate_All_Process_Sessions();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint API_Register();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid API_UnRegister();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid CreateXProcLock(void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint XProcLock(void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint XProcUnLock(void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid loginit();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid logterm();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid logit(int, char *, ...);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid AddToSessionList(Session_Struct_t *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid RemoveFromSessionList(Session_Struct_t *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollint Valid_Session(Session_Struct_t *, ST_SESSION_T *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollextern void init_slot_info(TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV update_migration_data(TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, TSS_HKEY, char *, char *, BYTE *, BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV token_rng(TSS_HCONTEXT, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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 Ingersoll
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 Ingersoll
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 Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV compute_next_token_obj_name(CK_BYTE *, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_public_token_object(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_private_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV load_public_token_objects(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV load_private_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV reload_token_object(TSS_HCONTEXT, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV delete_token_object(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV init_token_data(TSS_HCONTEXT, TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV load_token_data(TSS_HCONTEXT, TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV save_token_data(TOKEN_DATA *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid copy_slot_info(CK_SLOT_ID, CK_SLOT_INFO_PTR);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV compute_sha(CK_BYTE *, CK_ULONG_32, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV parity_is_odd(CK_BYTE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV build_attribute(CK_ATTRIBUTE_TYPE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG, CK_ATTRIBUTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV add_pkcs_padding(CK_BYTE *, UINT32, UINT32, UINT32);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
33c15889ebc635ca950ad611560d0f818cb8706aWyllys IngersollCK_RV strip_pkcs_padding(CK_BYTE *, UINT32, UINT32 *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV remove_leading_zeros(CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_pkcs_encrypt(
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_pkcs_decrypt(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_pkcs_sign(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_pkcs_verify(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_pkcs_verify_recover(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_sign(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_verify(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_sign_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_verify_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_sign_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV rsa_hash_pkcs_verify_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ckm_rsa_key_pair_gen(TSS_HCONTEXT, TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sha1_hash(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sha1_hmac_sign(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sha1_hmac_verify(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV md5_hash(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV md5_hmac_sign(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV md5_hmac_verify(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_add_as_first(DL_NODE *, void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_add_as_last(DL_NODE *, void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_find(DL_NODE *, void *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_get_first(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_get_last(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG dlist_length(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_next(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_prev(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid dlist_purge(DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollDL_NODE *dlist_remove_node(DL_NODE *, DL_NODE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV attach_shm(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV detach_shm(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// encryption manager routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV encr_mgr_init(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV encr_mgr_cleanup(ENCR_DECR_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV encr_mgr_encrypt(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV decr_mgr_init(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV decr_mgr_cleanup(ENCR_DECR_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV decr_mgr_decrypt(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ENCR_DECR_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_cleanup(DIGEST_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_init(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_digest(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_digest_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_digest_key(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV digest_mgr_digest_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DIGEST_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_mgr_generate_key_pair(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_mgr_wrap_key(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV key_mgr_unwrap_key(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_init(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_sign(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_sign_recover(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_sign_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV sign_mgr_sign_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_init(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_cleanup(SIGN_VERIFY_CONTEXT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_verify(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_verify_recover(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_verify_update(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV verify_mgr_verify_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll SIGN_VERIFY_CONTEXT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// session manager routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_close_all_sessions(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_close_session(SESSION *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollSESSION *session_mgr_find(CK_SESSION_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_login_all(CK_USER_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_logout_all(void);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_new(CK_ULONG, SESSION **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL session_mgr_readonly_exists(void);
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 Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_get_op_state(SESSION *, CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV session_mgr_set_op_state(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE, CK_OBJECT_HANDLE, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_add(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_add_to_map(SESSION *, OBJECT *, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_add_to_shm(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_del_from_shm(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_copy(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_create_final(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT *, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_create_skel(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ULONG, OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_destroy_object(SESSION *, CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_destroy_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_in_map1(TSS_HCONTEXT, CK_OBJECT_HANDLE, OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_in_map2(TSS_HCONTEXT, OBJECT *, CK_OBJECT_HANDLE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_init(SESSION *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_build_list(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll DL_NODE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL public_only);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_find_final(SESSION *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_get_attribute_values(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_get_object_size(TSS_HCONTEXT, CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_invalidate_handle1(CK_OBJECT_HANDLE handle);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_invalidate_handle2(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_session_objects(SESSION *, SESS_OBJ_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_private_token_objects(TSS_HCONTEXT);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_remove_from_map(CK_OBJECT_HANDLE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_restore_obj(CK_BYTE *, OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_mgr_set_attribute_values(SESSION *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_mgr_purge_map(SESSION *, SESS_OBJ_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_create(CK_ATTRIBUTE *, CK_ULONG, OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_create_skel(CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_copy(CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_flatten(OBJECT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **,
33c15889ebc635ca950ad611560d0f818cb8706aWyllys Ingersoll CK_ULONG_32 *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_free(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_get_attribute_values(OBJECT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG object_get_size(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_restore(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll OBJECT **,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BBOOL replace);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV object_set_attribute_values(OBJECT *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_modifiable(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_private(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_public(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_token_object(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL object_is_session_object(OBJECT *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL is_attribute_defined(CK_ATTRIBUTE_TYPE);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_add_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_add_default_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_attribute_find(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_TYPE, CK_ATTRIBUTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollvoid template_attribute_find_multiple(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ATTRIBUTE_PARSE_LIST *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_check_exportability(TEMPLATE *, CK_ATTRIBUTE_TYPE type);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_check_required_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ULONG, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_check_required_base_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_compare(CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_copy(TEMPLATE *, TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_flatten(TEMPLATE *, CK_BYTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_free(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_BBOOL template_get_class(TEMPLATE *, CK_ULONG *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG template_get_count(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG template_get_size(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG template_get_compressed_size(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_set_default_common_attributes(TEMPLATE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_merge(TEMPLATE *, TEMPLATE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_update_attribute(TEMPLATE *, CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_unflatten(TEMPLATE **, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_attribute(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG, CK_ULONG, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_attributes(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ULONG, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV template_validate_base_attribute(TEMPLATE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// DATA OBJECT ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
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
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// CERTIFICATE ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV cert_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// KEY ROUTINES
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
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 Ingersoll
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 Ingersoll
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
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 Ingersoll CK_BBOOL fromend);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV secret_key_validate_attribute(TEMPLATE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll// rsa routines
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll//
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
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 Ingersoll CK_BYTE **, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV generic_secret_unwrap(TEMPLATE *, CK_BYTE *, CK_ULONG, CK_BBOOL fromend);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV tpm_encrypt_data(TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV tpm_decrypt_data(TSS_HCONTEXT,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll TSS_HKEY, CK_BYTE *, CK_ULONG, CK_BYTE *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_ULONG ber_encode_INTEGER(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_INTEGER(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_encode_OCTET_STRING(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_OCTET_STRING(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_encode_SEQUENCE(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_SEQUENCE(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ULONG *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_encode_PrivateKeyInfo(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_BYTE *, CK_ULONG);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_PrivateKeyInfo(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_BYTE **, CK_ULONG *, CK_BYTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_encode_RSAPrivateKey(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_RSAPrivateKey(CK_BYTE *,
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
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_encode_DSAPrivateKey(CK_BBOOL,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE **, CK_ULONG *, CK_ATTRIBUTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE *, CK_ATTRIBUTE *, CK_ATTRIBUTE *);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys IngersollCK_RV ber_decode_DSAPrivateKey(CK_BYTE *,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG, CK_ATTRIBUTE **, CK_ATTRIBUTE **,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE **, CK_ATTRIBUTE **);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define APPID "TPM_STDLL"
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
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 (char *)layer, (char *)__FILE__,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (int)__LINE__, __VA_ARGS__);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogMessage1(dest, priority, layer, data) \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (void) fprintf(dest, "%s %s %s:%d %s\n", priority, layer, __FILE__, \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll __LINE__, data);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Debug logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#ifdef DEBUG
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug(fmt, ...) LogMessage(stdout, "LOG_DEBUG", APPID, \
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll fmt, __VA_ARGS__)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug1(data) LogMessage1(stdout, "LOG_DEBUG", APPID, data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Error logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError(fmt, ...) LogMessage(stderr, "LOG_ERR", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll "ERROR: " fmt, __VA_ARGS__)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError1(data) LogMessage1(stderr, "LOG_ERR", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll "ERROR: " data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Warn logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn(fmt, ...) LogMessage(stdout, "LOG_WARNING", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll "WARNING: " fmt, __VA_ARGS__)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn1(data) LogMessage1(stdout, "LOG_WARNING", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll "WARNING: " data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* Info Logging */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo(fmt, ...) LogMessage(stdout, "LOG_INFO", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll fmt, __VA_ARGS__)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo1(data) LogMessage1(stdout, "LOG_INFO", APPID, data)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define st_err_log(...) LogMessage(stderr, "ST MSG", APPID,\
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll "", __VA_ARGS__)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#else
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogDebug1(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogBlob(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogError1(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogWarn1(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define LogInfo1(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#define st_err_log(...)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/*
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 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll/* CK_FUNCTION_LIST is new for v2.0 */
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Initialize)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (void *ppFunctionList, CK_SLOT_ID slotID, CK_CHAR_PTR pCorrelator);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Finalize)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_VOID_PTR pReserved);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Terminate)();
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetInfo)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetFunctionList)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_FUNCTION_LIST_PTR_PTR ppFunctionList);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetSlotList)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetSlotInfo)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetTokenInfo)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetMechanismList)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE_PTR pMechanismList,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetMechanismInfo)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_InitToken)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_CHAR_PTR pPin, CK_ULONG usPinLen,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_CHAR_PTR pLabel);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_InitPIN)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_CHAR_PTR pPin,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPinLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SetPIN)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_CHAR_PTR pOldPin,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usOldLen, CK_CHAR_PTR pNewPin,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usNewLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_OpenSession)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID, CK_FLAGS flags,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_SESSION_HANDLE_PTR phSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_CloseSession)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_CloseAllSessions)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_SLOT_ID slotID);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetSessionInfo)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_SESSION_INFO_PTR pInfo);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetOperationState)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pulOperationStateLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SetOperationState)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pOperationState,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulOperationStateLen,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hEncryptionKey,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hAuthenticationKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Login)(ST_SESSION_T hSession,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_USER_TYPE userType, CK_CHAR_PTR pPin,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPinLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Logout)(ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_CreateObject)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_CopyObject)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phNewObject);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DestroyObject)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetObjectSize)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusSize);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetAttributeValue)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SetAttributeValue)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hObject,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_FindObjectsInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_ATTRIBUTE_PTR pTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_FindObjects)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phObject, CK_ULONG usMaxObjectCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusObjectCount);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_FindObjectsFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_EncryptInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Encrypt)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pEncryptedData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusEncryptedDataLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_EncryptUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusEncryptedPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_EncryptFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_BYTE_PTR pLastEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusLastEncryptedPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DecryptInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Decrypt)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usEncryptedDataLen, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusDataLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DecryptUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DecryptFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pLastPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusLastPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DigestInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_MECHANISM_PTR pMechanism);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Digest)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pDigest,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusDigestLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DigestUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DigestKey)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DigestFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pDigest,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusDigestLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Sign)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusSignatureLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusSignatureLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignRecoverInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignRecover)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusSignatureLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_VerifyInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_Verify)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usSignatureLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_VerifyUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_VerifyFinal)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usSignatureLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_VerifyRecoverInit)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE hKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_VerifyRecover)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSignature,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usSignatureLen, CK_BYTE_PTR pData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pusDataLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DigestEncryptUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pulEncryptedPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DecryptDigestUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pulPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SignEncryptUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pulEncryptedPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DecryptVerifyUpdate)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pEncryptedPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG_PTR pulPartLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GenerateKey)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GenerateKeyPair)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_MECHANISM_PTR pMechanism,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pPublicKeyTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPublicKeyAttributeCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usPrivateKeyAttributeCount,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phPrivateKey,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_OBJECT_HANDLE_PTR phPublicKey);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_WrapKey)
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 Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_UnwrapKey)
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 Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_DeriveKey)
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 Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_SeedRandom)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pSeed,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usSeedLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GenerateRandom)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_BYTE_PTR pRandomData,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_ULONG usRandomLen);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_GetFunctionStatus)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_CancelFunction)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_Notify)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (ST_SESSION_T hSession, CK_NOTIFICATION event,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_VOID_PTR pApplication);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef CK_RV
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_PTR ST_C_WaitForSlotEvent)
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll (CK_FLAGS flags, CK_SLOT_ID_PTR pSlot,
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll CK_VOID_PTR pReserved);
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersollstruct ST_FCN_LIST {
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Initialize ST_Initialize;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Finalize ST_Finalize;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetTokenInfo ST_GetTokenInfo;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetMechanismList ST_GetMechanismList;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetMechanismInfo ST_GetMechanismInfo;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_InitToken ST_InitToken;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_InitPIN ST_InitPIN;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SetPIN ST_SetPIN;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_OpenSession ST_OpenSession;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_CloseSession ST_CloseSession;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetSessionInfo ST_GetSessionInfo;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetOperationState ST_GetOperationState;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SetOperationState ST_SetOperationState;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Login ST_Login;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Logout ST_Logout;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_CreateObject ST_CreateObject;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_CopyObject ST_CopyObject;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DestroyObject ST_DestroyObject;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetObjectSize ST_GetObjectSize;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetAttributeValue ST_GetAttributeValue;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SetAttributeValue ST_SetAttributeValue;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_FindObjectsInit ST_FindObjectsInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_FindObjects ST_FindObjects;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_FindObjectsFinal ST_FindObjectsFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_EncryptInit ST_EncryptInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Encrypt ST_Encrypt;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_EncryptUpdate ST_EncryptUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_EncryptFinal ST_EncryptFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DecryptInit ST_DecryptInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Decrypt ST_Decrypt;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DecryptUpdate ST_DecryptUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DecryptFinal ST_DecryptFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DigestInit ST_DigestInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Digest ST_Digest;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DigestUpdate ST_DigestUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DigestKey ST_DigestKey;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DigestFinal ST_DigestFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignInit ST_SignInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Sign ST_Sign;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignUpdate ST_SignUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignFinal ST_SignFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignRecoverInit ST_SignRecoverInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SignRecover ST_SignRecover;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyInit ST_VerifyInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_Verify ST_Verify;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyUpdate ST_VerifyUpdate;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyFinal ST_VerifyFinal;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyRecoverInit ST_VerifyRecoverInit;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_VerifyRecover ST_VerifyRecover;
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_GenerateKey ST_GenerateKey;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GenerateKeyPair ST_GenerateKeyPair;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_WrapKey ST_WrapKey;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_UnwrapKey ST_UnwrapKey;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_DeriveKey ST_DeriveKey;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_SeedRandom ST_SeedRandom;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GenerateRandom ST_GenerateRandom;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_GetFunctionStatus ST_GetFunctionStatus;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll ST_C_CancelFunction ST_CancelFunction;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll};
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersolltypedef struct ST_FCN_LIST STDLL_FcnList_t;
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll
47e946e784719ae402ace34695f67b0e6e76ae5cWyllys Ingersoll#endif /* _TPMTOK_INT_H */