Blame usr/include/stdll.h

Packit 8681c6
/*
Packit 8681c6
 * COPYRIGHT (c) International Business Machines Corp. 2001-2017
Packit 8681c6
 *
Packit 8681c6
 * This program is provided under the terms of the Common Public License,
Packit 8681c6
 * version 1.0 (CPL-1.0). Any use, reproduction or distribution for this
Packit 8681c6
 * software constitutes recipient's acceptance of CPL-1.0 terms which can be
Packit 8681c6
 * found in the file LICENSE file or at
Packit 8681c6
 * https://opensource.org/licenses/cpl1.0.php
Packit 8681c6
 */
Packit 8681c6
Packit 8681c6
//
Packit 8681c6
//  API Local control blocks within the PKCS11 Meta API
Packit 8681c6
//
Packit 8681c6
//
Packit 8681c6
Packit 8681c6
Packit 8681c6
#include <pkcs11types.h>
Packit 8681c6
#include <limits.h>
Packit 8681c6
#include <local_types.h>
Packit 8681c6
#include <slotmgr.h>
Packit 8681c6
Packit 8681c6
#include "local_types.h"
Packit 8681c6
Packit 8681c6
#ifndef _STDLL_H
Packit 8681c6
#define _STDLL_H
Packit 8681c6
Packit 8681c6
Packit 8681c6
typedef struct {
Packit 8681c6
    struct bt_ref_hdr hdr;
Packit 8681c6
    CK_SLOT_ID slotID;
Packit 8681c6
    CK_SESSION_HANDLE sessionh;
Packit 8681c6
} ST_SESSION_T;
Packit 8681c6
Packit 8681c6
typedef struct trace_handle_t trace_handle;
Packit 8681c6
typedef ST_SESSION_T ST_SESSION_HANDLE;
Packit 8681c6
Packit 8681c6
/* CK_FUNCTION_LIST is a structure holding a Cryptoki spec
Packit 8681c6
 * version and pointers of appropriate types to all the
Packit 8681c6
 * Cryptoki functions
Packit 8681c6
 * CK_FUNCTION_LIST is new for v2.0
Packit 8681c6
 */
Packit 8681c6
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Initialize) (API_Slot_t *sltp, CK_SLOT_ID slotID,
Packit 8681c6
                                        SLOT_INFO *sinfp, trace_handle t);
Packit 8681c6
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Finalize) (CK_VOID_PTR pReserved);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Terminate) (void);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetInfo) (CK_INFO_PTR pInfo);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetFunctionList) (CK_FUNCTION_LIST_PTR_PTR
Packit 8681c6
                                             ppFunctionList);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetSlotList) (CK_BBOOL tokenPresent,
Packit 8681c6
                                         CK_SLOT_ID_PTR pSlotList,
Packit 8681c6
                                         CK_ULONG_PTR pusCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetSlotInfo) (CK_SLOT_ID slotID,
Packit 8681c6
                                         CK_SLOT_INFO_PTR pInfo);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetTokenInfo) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          CK_SLOT_ID slotID,
Packit 8681c6
                                          CK_TOKEN_INFO_PTR pInfo);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetMechanismList) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              CK_SLOT_ID slotID,
Packit 8681c6
                                              CK_MECHANISM_TYPE_PTR
Packit 8681c6
                                              pMechanismList,
Packit 8681c6
                                              CK_ULONG_PTR pusCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetMechanismInfo) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              CK_SLOT_ID slotID,
Packit 8681c6
                                              CK_MECHANISM_TYPE type,
Packit 8681c6
                                              CK_MECHANISM_INFO_PTR pInfo);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_InitToken) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                       CK_SLOT_ID slotID, CK_CHAR_PTR pPin,
Packit 8681c6
                                       CK_ULONG usPinLen, CK_CHAR_PTR pLabel);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_InitPIN) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                     ST_SESSION_T *hSession, CK_CHAR_PTR pPin,
Packit 8681c6
                                     CK_ULONG usPinLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SetPIN) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                   ST_SESSION_T *hSession, CK_CHAR_PTR pOldPin,
Packit 8681c6
                                   CK_ULONG usOldLen, CK_CHAR_PTR pNewPin,
Packit 8681c6
                                   CK_ULONG usNewLen);
Packit 8681c6
Packit 8681c6
// typedef CK_RV        (CK_PTR  ST_C_OpenSession)
Packit 8681c6
//                      (CK_SLOT_ID slotID, CK_FLAGS flags,
Packit 8681c6
//                       CK_VOID_PTR pApplication,
Packit 8681c6
// CK_RV  (*Notify) (CK_SESSION_HANDLE hSession,
Packit 8681c6
//                   CK_NOTIFICATION event, CK_VOID_PTR pApplication),
Packit 8681c6
//                   CK_SESSION_HANDLE_PTR phSession);
Packit 8681c6
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_OpenSession) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         CK_SLOT_ID slotID, CK_FLAGS flags,
Packit 8681c6
                                         CK_SESSION_HANDLE_PTR phSession);
Packit 8681c6
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_CloseSession) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          ST_SESSION_T *hSession,
Packit 8681c6
                                          CK_BBOOL in_fork_initializer);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_CloseAllSessions) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              CK_SLOT_ID slotID);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetSessionInfo) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                            ST_SESSION_T *hSession,
Packit 8681c6
                                            CK_SESSION_INFO_PTR pInfo);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetOperationState) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession,
Packit 8681c6
                                               CK_BYTE_PTR pOperationState,
Packit 8681c6
                                               CK_ULONG_PTR
Packit 8681c6
                                               pulOperationStateLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SetOperationState) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession,
Packit 8681c6
                                               CK_BYTE_PTR pOperationState,
Packit 8681c6
                                               CK_ULONG ulOperationStateLen,
Packit 8681c6
                                               CK_OBJECT_HANDLE hEncryptionKey,
Packit 8681c6
                                               CK_OBJECT_HANDLE
Packit 8681c6
                                               hAuthenticationKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Login) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                   ST_SESSION_T *hSession,
Packit 8681c6
                                   CK_USER_TYPE userType, CK_CHAR_PTR pPin,
Packit 8681c6
                                   CK_ULONG usPinLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Logout) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                    ST_SESSION_T *hSession);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_CreateObject) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          ST_SESSION_T *hSession,
Packit 8681c6
                                          CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                          CK_ULONG usCount,
Packit 8681c6
                                          CK_OBJECT_HANDLE_PTR phObject);
Packit 8681c6
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_CopyObject) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                        ST_SESSION_T *hSession,
Packit 8681c6
                                        CK_OBJECT_HANDLE hObject,
Packit 8681c6
                                        CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                        CK_ULONG usCount,
Packit 8681c6
                                        CK_OBJECT_HANDLE_PTR phNewObject);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DestroyObject) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                           ST_SESSION_T *hSession,
Packit 8681c6
                                           CK_OBJECT_HANDLE hObject);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetObjectSize) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                           ST_SESSION_T *hSession,
Packit 8681c6
                                           CK_OBJECT_HANDLE hObject,
Packit 8681c6
                                           CK_ULONG_PTR pusSize);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetAttributeValue) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession,
Packit 8681c6
                                               CK_OBJECT_HANDLE hObject,
Packit 8681c6
                                               CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                               CK_ULONG usCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SetAttributeValue) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession,
Packit 8681c6
                                               CK_OBJECT_HANDLE hObject,
Packit 8681c6
                                               CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                               CK_ULONG usCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_FindObjectsInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                             ST_SESSION_T *hSession,
Packit 8681c6
                                             CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                             CK_ULONG usCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_FindObjects) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_OBJECT_HANDLE_PTR phObject,
Packit 8681c6
                                         CK_ULONG usMaxObjectCount,
Packit 8681c6
                                         CK_ULONG_PTR pusObjectCount);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_FindObjectsFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              ST_SESSION_T *hSession);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_EncryptInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                         CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Encrypt) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                     ST_SESSION_T *hSession, CK_BYTE_PTR pData,
Packit 8681c6
                                     CK_ULONG usDataLen,
Packit 8681c6
                                     CK_BYTE_PTR pEncryptedData,
Packit 8681c6
                                     CK_ULONG_PTR pusEncryptedDataLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_EncryptUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          ST_SESSION_T *hSession,
Packit 8681c6
                                          CK_BYTE_PTR pPart, CK_ULONG usPartLen,
Packit 8681c6
                                          CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                          CK_ULONG_PTR pusEncryptedPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_EncryptFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          ST_SESSION_T *hSession,
Packit 8681c6
                                          CK_BYTE_PTR pLastEncryptedPart,
Packit 8681c6
                                          CK_ULONG_PTR pusLastEncryptedPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DecryptInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                         CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Decrypt) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                    ST_SESSION_T *hSession,
Packit 8681c6
                                    CK_BYTE_PTR pEncryptedData,
Packit 8681c6
                                    CK_ULONG usEncryptedDataLen,
Packit 8681c6
                                    CK_BYTE_PTR pData, CK_ULONG_PTR pusDataLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DecryptUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                           ST_SESSION_T *hSession,
Packit 8681c6
                                           CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                           CK_ULONG usEncryptedPartLen,
Packit 8681c6
                                           CK_BYTE_PTR pPart,
Packit 8681c6
                                           CK_ULONG_PTR pusPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DecryptFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                          ST_SESSION_T *hSession,
Packit 8681c6
                                          CK_BYTE_PTR pLastPart,
Packit 8681c6
                                          CK_ULONG_PTR pusLastPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DigestInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                        ST_SESSION_T *hSession,
Packit 8681c6
                                        CK_MECHANISM_PTR pMechanism);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Digest) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                    ST_SESSION_T *hSession, CK_BYTE_PTR pData,
Packit 8681c6
                                    CK_ULONG usDataLen, CK_BYTE_PTR pDigest,
Packit 8681c6
                                    CK_ULONG_PTR pusDigestLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DigestUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_BYTE_PTR pPart, CK_ULONG usPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DigestKey) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                       ST_SESSION_T *hSession,
Packit 8681c6
                                       CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DigestFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_BYTE_PTR pDigest,
Packit 8681c6
                                         CK_ULONG_PTR pusDigestLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                      ST_SESSION_T *hSession,
Packit 8681c6
                                      CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                      CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Sign) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                  ST_SESSION_T *hSession, CK_BYTE_PTR pData,
Packit 8681c6
                                  CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
Packit 8681c6
                                  CK_ULONG_PTR pusSignatureLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                        ST_SESSION_T *hSession,
Packit 8681c6
                                        CK_BYTE_PTR pPart, CK_ULONG usPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                       ST_SESSION_T *hSession,
Packit 8681c6
                                       CK_BYTE_PTR pSignature,
Packit 8681c6
                                       CK_ULONG_PTR pusSignatureLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignRecoverInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                             ST_SESSION_T *hSession,
Packit 8681c6
                                             CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                             CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignRecover) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_BYTE_PTR pData, CK_ULONG usDataLen,
Packit 8681c6
                                         CK_BYTE_PTR pSignature,
Packit 8681c6
                                         CK_ULONG_PTR pusSignatureLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_VerifyInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                        ST_SESSION_T *hSession,
Packit 8681c6
                                        CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                        CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_Verify) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                    ST_SESSION_T *hSession, CK_BYTE_PTR pData,
Packit 8681c6
                                    CK_ULONG usDataLen, CK_BYTE_PTR pSignature,
Packit 8681c6
                                    CK_ULONG usSignatureLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_VerifyUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_BYTE_PTR pPart, CK_ULONG usPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_VerifyFinal) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_BYTE_PTR pSignature,
Packit 8681c6
                                         CK_ULONG usSignatureLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_VerifyRecoverInit) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession,
Packit 8681c6
                                               CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                               CK_OBJECT_HANDLE hKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_VerifyRecover) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                           ST_SESSION_T *hSession,
Packit 8681c6
                                           CK_BYTE_PTR pSignature,
Packit 8681c6
                                           CK_ULONG usSignatureLen,
Packit 8681c6
                                           CK_BYTE_PTR pData,
Packit 8681c6
                                           CK_ULONG_PTR pusDataLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DigestEncryptUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                                 ST_SESSION_T *hSession,
Packit 8681c6
                                                 CK_BYTE_PTR pPart,
Packit 8681c6
                                                 CK_ULONG ulPartLen,
Packit 8681c6
                                                 CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                                 CK_ULONG_PTR
Packit 8681c6
                                                 pulEncryptedPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DecryptDigestUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                                 ST_SESSION_T *hSession,
Packit 8681c6
                                                 CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                                 CK_ULONG ulEncryptedPartLen,
Packit 8681c6
                                                 CK_BYTE_PTR pPart,
Packit 8681c6
                                                 CK_ULONG_PTR pulPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SignEncryptUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              ST_SESSION_T *hSession,
Packit 8681c6
                                              CK_BYTE_PTR pPart,
Packit 8681c6
                                              CK_ULONG ulPartLen,
Packit 8681c6
                                              CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                              CK_ULONG_PTR pulEncryptedPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DecryptVerifyUpdate) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                                 ST_SESSION_T *hSession,
Packit 8681c6
                                                 CK_BYTE_PTR pEncryptedPart,
Packit 8681c6
                                                 CK_ULONG ulEncryptedPartLen,
Packit 8681c6
                                                 CK_BYTE_PTR pPart,
Packit 8681c6
                                                 CK_ULONG_PTR pulPartLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GenerateKey) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                         ST_SESSION_T *hSession,
Packit 8681c6
                                         CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                         CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                         CK_ULONG usCount,
Packit 8681c6
                                         CK_OBJECT_HANDLE_PTR phKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GenerateKeyPair) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                             ST_SESSION_T *hSession,
Packit 8681c6
                                             CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                             CK_ATTRIBUTE_PTR pPublicKeyTemplate,
Packit 8681c6
                                             CK_ULONG usPublicKeyAttributeCount,
Packit 8681c6
                                             CK_ATTRIBUTE_PTR
Packit 8681c6
                                             pPrivateKeyTemplate,
Packit 8681c6
                                             CK_ULONG usPrivateKeyAttributeCount,
Packit 8681c6
                                             CK_OBJECT_HANDLE_PTR phPrivateKey,
Packit 8681c6
                                             CK_OBJECT_HANDLE_PTR phPublicKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_WrapKey) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                     ST_SESSION_T *hSession,
Packit 8681c6
                                     CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                     CK_OBJECT_HANDLE hWrappingKey,
Packit 8681c6
                                     CK_OBJECT_HANDLE hKey,
Packit 8681c6
                                     CK_BYTE_PTR pWrappedKey,
Packit 8681c6
                                     CK_ULONG_PTR pusWrappedKeyLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_UnwrapKey) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                       ST_SESSION_T *hSession,
Packit 8681c6
                                       CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                       CK_OBJECT_HANDLE hUnwrappingKey,
Packit 8681c6
                                       CK_BYTE_PTR pWrappedKey,
Packit 8681c6
                                       CK_ULONG usWrappedKeyLen,
Packit 8681c6
                                       CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                       CK_ULONG usAttributeCount,
Packit 8681c6
                                       CK_OBJECT_HANDLE_PTR phKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_DeriveKey) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                       ST_SESSION_T *hSession,
Packit 8681c6
                                       CK_MECHANISM_PTR pMechanism,
Packit 8681c6
                                       CK_OBJECT_HANDLE hBaseKey,
Packit 8681c6
                                       CK_ATTRIBUTE_PTR pTemplate,
Packit 8681c6
                                       CK_ULONG usAttributeCount,
Packit 8681c6
                                       CK_OBJECT_HANDLE_PTR phKey);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_SeedRandom) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                        ST_SESSION_T *hSession,
Packit 8681c6
                                        CK_BYTE_PTR pSeed, CK_ULONG usSeedLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GenerateRandom) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                            ST_SESSION_T *hSession,
Packit 8681c6
                                            CK_BYTE_PTR pRandomData,
Packit 8681c6
                                            CK_ULONG usRandomLen);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_GetFunctionStatus) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                               ST_SESSION_T *hSession);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_CancelFunction) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                            ST_SESSION_T *hSession);
Packit 8681c6
typedef CK_RV (CK_PTR ST_Notify) (ST_SESSION_T *hSession,
Packit 8681c6
                                  CK_NOTIFICATION event,
Packit 8681c6
                                  CK_VOID_PTR pApplication);
Packit 8681c6
typedef CK_RV (CK_PTR ST_C_WaitForSlotEvent) (STDLL_TokData_t *tokdata,
Packit 8681c6
                                              CK_FLAGS flags,
Packit 8681c6
                                              CK_SLOT_ID_PTR pSlot,
Packit 8681c6
                                              CK_VOID_PTR pReserved);
Packit 8681c6
Packit Service 8aa27d
typedef CK_RV (CK_PTR ST_C_IBM_ReencryptSingle)(STDLL_TokData_t *tokdata,
Packit Service 8aa27d
                                                ST_SESSION_T *hSession,
Packit Service 8aa27d
                                                CK_MECHANISM_PTR pDecrMech,
Packit Service 8aa27d
                                                CK_OBJECT_HANDLE hDecrKey,
Packit Service 8aa27d
                                                CK_MECHANISM_PTR pEncrMech,
Packit Service 8aa27d
                                                CK_OBJECT_HANDLE hEncrKey,
Packit Service 8aa27d
                                                CK_BYTE_PTR pEncryptedData,
Packit Service 8aa27d
                                                CK_ULONG ulEncryptedDataLen,
Packit Service 8aa27d
                                                CK_BYTE_PTR pReencryptedData,
Packit Service 8aa27d
                                            CK_ULONG_PTR pulReencryptedDataLen);
Packit 8681c6
Packit 8681c6
Packit 8681c6
struct ST_FCN_LIST {
Packit 8681c6
Packit 8681c6
    // Need initialization function But it is different than
Packit 8681c6
    // the C_Initialize
Packit 8681c6
    ST_C_Initialize ST_Initialize;
Packit 8681c6
Packit 8681c6
    ST_C_GetTokenInfo ST_GetTokenInfo;
Packit 8681c6
    ST_C_GetMechanismList ST_GetMechanismList;
Packit 8681c6
    ST_C_GetMechanismInfo ST_GetMechanismInfo;
Packit 8681c6
    ST_C_InitToken ST_InitToken;
Packit 8681c6
    ST_C_InitPIN ST_InitPIN;
Packit 8681c6
    ST_C_SetPIN ST_SetPIN;
Packit 8681c6
Packit 8681c6
    ST_C_OpenSession ST_OpenSession;
Packit 8681c6
    ST_C_CloseSession ST_CloseSession;
Packit 8681c6
    ST_C_GetSessionInfo ST_GetSessionInfo;
Packit 8681c6
    ST_C_GetOperationState ST_GetOperationState;        // Not used by Netscape
Packit 8681c6
    ST_C_SetOperationState ST_SetOperationState;        // Not used by Netscape
Packit 8681c6
    ST_C_Login ST_Login;
Packit 8681c6
    ST_C_Logout ST_Logout;
Packit 8681c6
Packit 8681c6
    ST_C_CreateObject ST_CreateObject;
Packit 8681c6
    ST_C_CopyObject ST_CopyObject;
Packit 8681c6
    ST_C_DestroyObject ST_DestroyObject;
Packit 8681c6
    ST_C_GetObjectSize ST_GetObjectSize;
Packit 8681c6
    ST_C_GetAttributeValue ST_GetAttributeValue;
Packit 8681c6
    ST_C_SetAttributeValue ST_SetAttributeValue;
Packit 8681c6
    ST_C_FindObjectsInit ST_FindObjectsInit;
Packit 8681c6
    ST_C_FindObjects ST_FindObjects;
Packit 8681c6
    ST_C_FindObjectsFinal ST_FindObjectsFinal;
Packit 8681c6
Packit 8681c6
Packit 8681c6
    ST_C_EncryptInit ST_EncryptInit;
Packit 8681c6
    ST_C_Encrypt ST_Encrypt;
Packit 8681c6
    ST_C_EncryptUpdate ST_EncryptUpdate;        // Not used by Netscape
Packit 8681c6
    ST_C_EncryptFinal ST_EncryptFinal;  // Not used by Netscape
Packit 8681c6
    ST_C_DecryptInit ST_DecryptInit;
Packit 8681c6
    ST_C_Decrypt ST_Decrypt;
Packit 8681c6
    ST_C_DecryptUpdate ST_DecryptUpdate;        // Not used by Netscape
Packit 8681c6
    ST_C_DecryptFinal ST_DecryptFinal;  // Not used by Netscape
Packit 8681c6
    ST_C_DigestInit ST_DigestInit;
Packit 8681c6
    ST_C_Digest ST_Digest;
Packit 8681c6
    ST_C_DigestUpdate ST_DigestUpdate;
Packit 8681c6
    ST_C_DigestKey ST_DigestKey;
Packit 8681c6
    ST_C_DigestFinal ST_DigestFinal;
Packit 8681c6
    ST_C_SignInit ST_SignInit;
Packit 8681c6
    ST_C_Sign ST_Sign;
Packit 8681c6
    ST_C_SignUpdate ST_SignUpdate;
Packit 8681c6
    ST_C_SignFinal ST_SignFinal;
Packit 8681c6
    ST_C_SignRecoverInit ST_SignRecoverInit;
Packit 8681c6
    ST_C_SignRecover ST_SignRecover;
Packit 8681c6
    ST_C_VerifyInit ST_VerifyInit;
Packit 8681c6
    ST_C_Verify ST_Verify;
Packit 8681c6
    ST_C_VerifyUpdate ST_VerifyUpdate;
Packit 8681c6
    ST_C_VerifyFinal ST_VerifyFinal;
Packit 8681c6
    ST_C_VerifyRecoverInit ST_VerifyRecoverInit;
Packit 8681c6
    ST_C_VerifyRecover ST_VerifyRecover;
Packit 8681c6
    ST_C_DigestEncryptUpdate ST_DigestEncryptUpdate;
Packit 8681c6
    ST_C_DecryptDigestUpdate ST_DecryptDigestUpdate;
Packit 8681c6
    ST_C_SignEncryptUpdate ST_SignEncryptUpdate;
Packit 8681c6
    ST_C_DecryptVerifyUpdate ST_DecryptVerifyUpdate;
Packit 8681c6
    ST_C_GenerateKey ST_GenerateKey;
Packit 8681c6
    ST_C_GenerateKeyPair ST_GenerateKeyPair;
Packit 8681c6
    ST_C_WrapKey ST_WrapKey;    // Netscape optionsl will use En/Decrypt
Packit 8681c6
    ST_C_UnwrapKey ST_UnwrapKey;
Packit 8681c6
    ST_C_DeriveKey ST_DeriveKey;
Packit 8681c6
    ST_C_SeedRandom ST_SeedRandom;
Packit 8681c6
    ST_C_GenerateRandom ST_GenerateRandom;
Packit 8681c6
    // Question if these have to be implemented for Netscape support
Packit 8681c6
    ST_C_GetFunctionStatus ST_GetFunctionStatus;
Packit 8681c6
    ST_C_CancelFunction ST_CancelFunction;
Packit 8681c6
Packit Service 8aa27d
    ST_C_IBM_ReencryptSingle ST_IBM_ReencryptSingle;
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
typedef struct ST_FCN_LIST STDLL_FcnList_t;
Packit 8681c6
Packit 8681c6
#endif