Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/security/nss/lib/ckfw/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 38 kB image not shown  

Quelle  ckfw.h   Sprache: C

 
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef CKFW_H
#define CKFW_H

/*
 * ckfw.h
 *
 * This file prototypes the private calls of the NSS Cryptoki Framework.
 */


#ifndef NSSBASET_H
#include "nssbaset.h"
#endif /* NSSBASET_H */

#ifndef NSSCKT_H
#include "nssckt.h"
#endif /* NSSCKT_H */

#ifndef NSSCKFWT_H
#include "nssckfwt.h"
#endif /* NSSCKFWT_H */

#ifndef NSSCKMDT_H
#include "nssckmdt.h"
#endif /* NSSCKMDT_H */

/*
 * NSSCKFWInstance
 *
 *  -- create/destroy --
 *  nssCKFWInstance_Create
 *  nssCKFWInstance_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWInstance_GetMDInstance
 *  nssCKFWInstance_GetArena
 *  nssCKFWInstance_MayCreatePthreads
 *  nssCKFWInstance_CreateMutex
 *  nssCKFWInstance_GetConfigurationData
 *  nssCKFWInstance_GetInitArgs
 *
 *  -- private accessors --
 *  nssCKFWInstance_CreateSessionHandle
 *  nssCKFWInstance_ResolveSessionHandle
 *  nssCKFWInstance_DestroySessionHandle
 *  nssCKFWInstance_FindSessionHandle
 *  nssCKFWInstance_CreateObjectHandle
 *  nssCKFWInstance_ResolveObjectHandle
 *  nssCKFWInstance_DestroyObjectHandle
 *  nssCKFWInstance_FindObjectHandle
 *
 *  -- module fronts --
 *  nssCKFWInstance_GetNSlots
 *  nssCKFWInstance_GetCryptokiVersion
 *  nssCKFWInstance_GetManufacturerID
 *  nssCKFWInstance_GetFlags
 *  nssCKFWInstance_GetLibraryDescription
 *  nssCKFWInstance_GetLibraryVersion
 *  nssCKFWInstance_GetModuleHandlesSessionObjects
 *  nssCKFWInstance_GetSlots
 *  nssCKFWInstance_WaitForSlotEvent
 *
 *  -- debugging versions only --
 *  nssCKFWInstance_verifyPointer
 */


/*
 * nssCKFWInstance_Create
 *
 */

NSS_EXTERN NSSCKFWInstance *
nssCKFWInstance_Create(
    CK_C_INITIALIZE_ARGS_PTR pInitArgs,
    CryptokiLockingState LockingState,
    NSSCKMDInstance *mdInstance,
    CK_RV *pError);

/*
 * nssCKFWInstance_Destroy
 *
 */

NSS_EXTERN CK_RV
nssCKFWInstance_Destroy(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetMDInstance
 *
 */

NSS_EXTERN NSSCKMDInstance *
nssCKFWInstance_GetMDInstance(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetArena
 *
 */

NSS_EXTERN NSSArena *
nssCKFWInstance_GetArena(
    NSSCKFWInstance *fwInstance,
    CK_RV *pError);

/*
 * nssCKFWInstance_MayCreatePthreads
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWInstance_MayCreatePthreads(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_CreateMutex
 *
 */

NSS_EXTERN NSSCKFWMutex *
nssCKFWInstance_CreateMutex(
    NSSCKFWInstance *fwInstance,
    NSSArena *arena,
    CK_RV *pError);

/*
 * nssCKFWInstance_GetConfigurationData
 *
 */

NSS_EXTERN NSSUTF8 *
nssCKFWInstance_GetConfigurationData(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetInitArgs
 *
 */

NSS_EXTERN CK_C_INITIALIZE_ARGS_PTR
nssCKFWInstance_GetInitArgs(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_CreateSessionHandle
 *
 */

NSS_EXTERN CK_SESSION_HANDLE
nssCKFWInstance_CreateSessionHandle(
    NSSCKFWInstance *fwInstance,
    NSSCKFWSession *fwSession,
    CK_RV *pError);

/*
 * nssCKFWInstance_ResolveSessionHandle
 *
 */

NSS_EXTERN NSSCKFWSession *
nssCKFWInstance_ResolveSessionHandle(
    NSSCKFWInstance *fwInstance,
    CK_SESSION_HANDLE hSession);

/*
 * nssCKFWInstance_DestroySessionHandle
 *
 */

NSS_EXTERN void
nssCKFWInstance_DestroySessionHandle(
    NSSCKFWInstance *fwInstance,
    CK_SESSION_HANDLE hSession);

/*
 * nssCKFWInstance_FindSessionHandle
 *
 */

NSS_EXTERN CK_SESSION_HANDLE
nssCKFWInstance_FindSessionHandle(
    NSSCKFWInstance *fwInstance,
    NSSCKFWSession *fwSession);

/*
 * nssCKFWInstance_CreateObjectHandle
 *
 */

NSS_EXTERN CK_OBJECT_HANDLE
nssCKFWInstance_CreateObjectHandle(
    NSSCKFWInstance *fwInstance,
    NSSCKFWObject *fwObject,
    CK_RV *pError);

/*
 * nssCKFWInstance_ResolveObjectHandle
 *
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWInstance_ResolveObjectHandle(
    NSSCKFWInstance *fwInstance,
    CK_OBJECT_HANDLE hObject);

/*
 * nssCKFWInstance_ReassignObjectHandle
 *
 */

NSS_EXTERN CK_RV
nssCKFWInstance_ReassignObjectHandle(
    NSSCKFWInstance *fwInstance,
    CK_OBJECT_HANDLE hObject,
    NSSCKFWObject *fwObject);

/*
 * nssCKFWInstance_DestroyObjectHandle
 *
 */

NSS_EXTERN void
nssCKFWInstance_DestroyObjectHandle(
    NSSCKFWInstance *fwInstance,
    CK_OBJECT_HANDLE hObject);

/*
 * nssCKFWInstance_FindObjectHandle
 *
 */

NSS_EXTERN CK_OBJECT_HANDLE
nssCKFWInstance_FindObjectHandle(
    NSSCKFWInstance *fwInstance,
    NSSCKFWObject *fwObject);

/*
 * nssCKFWInstance_GetNSlots
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWInstance_GetNSlots(
    NSSCKFWInstance *fwInstance,
    CK_RV *pError);

/*
 * nssCKFWInstance_GetCryptokiVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWInstance_GetCryptokiVersion(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetManufacturerID
 *
 */

NSS_EXTERN CK_RV
nssCKFWInstance_GetManufacturerID(
    NSSCKFWInstance *fwInstance,
    CK_CHAR manufacturerID[32]);

/*
 * nssCKFWInstance_GetFlags
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWInstance_GetFlags(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetLibraryDescription
 *
 */

NSS_EXTERN CK_RV
nssCKFWInstance_GetLibraryDescription(
    NSSCKFWInstance *fwInstance,
    CK_CHAR libraryDescription[32]);

/*
 * nssCKFWInstance_GetLibraryVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWInstance_GetLibraryVersion(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetModuleHandlesSessionObjects
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWInstance_GetModuleHandlesSessionObjects(
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWInstance_GetSlots
 *
 */

NSS_EXTERN NSSCKFWSlot **
nssCKFWInstance_GetSlots(
    NSSCKFWInstance *fwInstance,
    CK_RV *pError);

/*
 * nssCKFWInstance_WaitForSlotEvent
 *
 */

NSS_EXTERN NSSCKFWSlot *
nssCKFWInstance_WaitForSlotEvent(
    NSSCKFWInstance *fwInstance,
    CK_BBOOL block,
    CK_RV *pError);

/*
 * nssCKFWInstance_verifyPointer
 *
 */

NSS_EXTERN CK_RV
nssCKFWInstance_verifyPointer(
    const NSSCKFWInstance *fwInstance);

/*
 * NSSCKFWSlot
 *
 *  -- create/destroy --
 *  nssCKFWSlot_Create
 *  nssCKFWSlot_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWSlot_GetMDSlot
 *  nssCKFWSlot_GetFWInstance
 *  nssCKFWSlot_GetMDInstance
 *
 *  -- private accessors --
 *  nssCKFWSlot_GetSlotID
 *
 *  -- module fronts --
 *  nssCKFWSlot_GetSlotDescription
 *  nssCKFWSlot_GetManufacturerID
 *  nssCKFWSlot_GetTokenPresent
 *  nssCKFWSlot_GetRemovableDevice
 *  nssCKFWSlot_GetHardwareSlot
 *  nssCKFWSlot_GetHardwareVersion
 *  nssCKFWSlot_GetFirmwareVersion
 *  nssCKFWSlot_GetToken
 */


/*
 * nssCKFWSlot_Create
 *
 */

NSS_EXTERN NSSCKFWSlot *
nssCKFWSlot_Create(
    NSSCKFWInstance *fwInstance,
    NSSCKMDSlot *mdSlot,
    CK_SLOT_ID slotID,
    CK_RV *pError);

/*
 * nssCKFWSlot_Destroy
 *
 */

NSS_EXTERN CK_RV
nssCKFWSlot_Destroy(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetMDSlot
 *
 */

NSS_EXTERN NSSCKMDSlot *
nssCKFWSlot_GetMDSlot(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetFWInstance
 *
 */


NSS_EXTERN NSSCKFWInstance *
nssCKFWSlot_GetFWInstance(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetMDInstance
 *
 */


NSS_EXTERN NSSCKMDInstance *
nssCKFWSlot_GetMDInstance(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetSlotID
 *
 */

NSS_EXTERN CK_SLOT_ID
nssCKFWSlot_GetSlotID(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetSlotDescription
 *
 */

NSS_EXTERN CK_RV
nssCKFWSlot_GetSlotDescription(
    NSSCKFWSlot *fwSlot,
    CK_CHAR slotDescription[64]);

/*
 * nssCKFWSlot_GetManufacturerID
 *
 */

NSS_EXTERN CK_RV
nssCKFWSlot_GetManufacturerID(
    NSSCKFWSlot *fwSlot,
    CK_CHAR manufacturerID[32]);

/*
 * nssCKFWSlot_GetTokenPresent
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWSlot_GetTokenPresent(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetRemovableDevice
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWSlot_GetRemovableDevice(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetHardwareSlot
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWSlot_GetHardwareSlot(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetHardwareVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWSlot_GetHardwareVersion(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetFirmwareVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWSlot_GetFirmwareVersion(
    NSSCKFWSlot *fwSlot);

/*
 * nssCKFWSlot_GetToken
 *
 */

NSS_EXTERN NSSCKFWToken *
nssCKFWSlot_GetToken(
    NSSCKFWSlot *fwSlot,
    CK_RV *pError);

/*
 * nssCKFWSlot_ClearToken
 *
 */

NSS_EXTERN void
nssCKFWSlot_ClearToken(
    NSSCKFWSlot *fwSlot);

/*
 * NSSCKFWToken
 *
 *  -- create/destroy --
 *  nssCKFWToken_Create
 *  nssCKFWToken_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWToken_GetMDToken
 *  nssCKFWToken_GetFWSlot
 *  nssCKFWToken_GetMDSlot
 *  nssCKFWToken_GetSessionState
 *
 *  -- private accessors --
 *  nssCKFWToken_SetSessionState
 *  nssCKFWToken_RemoveSession
 *  nssCKFWToken_CloseAllSessions
 *  nssCKFWToken_GetSessionCount
 *  nssCKFWToken_GetRwSessionCount
 *  nssCKFWToken_GetRoSessionCount
 *  nssCKFWToken_GetSessionObjectHash
 *  nssCKFWToken_GetMDObjectHash
 *  nssCKFWToken_GetObjectHandleHash
 *
 *  -- module fronts --
 *  nssCKFWToken_InitToken
 *  nssCKFWToken_GetLabel
 *  nssCKFWToken_GetManufacturerID
 *  nssCKFWToken_GetModel
 *  nssCKFWToken_GetSerialNumber
 *  nssCKFWToken_GetHasRNG
 *  nssCKFWToken_GetIsWriteProtected
 *  nssCKFWToken_GetLoginRequired
 *  nssCKFWToken_GetUserPinInitialized
 *  nssCKFWToken_GetRestoreKeyNotNeeded
 *  nssCKFWToken_GetHasClockOnToken
 *  nssCKFWToken_GetHasProtectedAuthenticationPath
 *  nssCKFWToken_GetSupportsDualCryptoOperations
 *  nssCKFWToken_GetMaxSessionCount
 *  nssCKFWToken_GetMaxRwSessionCount
 *  nssCKFWToken_GetMaxPinLen
 *  nssCKFWToken_GetMinPinLen
 *  nssCKFWToken_GetTotalPublicMemory
 *  nssCKFWToken_GetFreePublicMemory
 *  nssCKFWToken_GetTotalPrivateMemory
 *  nssCKFWToken_GetFreePrivateMemory
 *  nssCKFWToken_GetHardwareVersion
 *  nssCKFWToken_GetFirmwareVersion
 *  nssCKFWToken_GetUTCTime
 *  nssCKFWToken_OpenSession
 *  nssCKFWToken_GetMechanismCount
 *  nssCKFWToken_GetMechanismTypes
 *  nssCKFWToken_GetMechanism
 */


/*
 * nssCKFWToken_Create
 *
 */

NSS_EXTERN NSSCKFWToken *
nssCKFWToken_Create(
    NSSCKFWSlot *fwSlot,
    NSSCKMDToken *mdToken,
    CK_RV *pError);

/*
 * nssCKFWToken_Destroy
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_Destroy(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMDToken
 *
 */

NSS_EXTERN NSSCKMDToken *
nssCKFWToken_GetMDToken(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetArena
 *
 */

NSS_EXTERN NSSArena *
nssCKFWToken_GetArena(
    NSSCKFWToken *fwToken,
    CK_RV *pError);

/*
 * nssCKFWToken_GetFWSlot
 *
 */

NSS_EXTERN NSSCKFWSlot *
nssCKFWToken_GetFWSlot(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMDSlot
 *
 */

NSS_EXTERN NSSCKMDSlot *
nssCKFWToken_GetMDSlot(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetSessionState
 *
 */

NSS_EXTERN CK_STATE
nssCKFWToken_GetSessionState(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_InitToken
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_InitToken(
    NSSCKFWToken *fwToken,
    NSSItem *pin,
    NSSUTF8 *label);

/*
 * nssCKFWToken_GetLabel
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetLabel(
    NSSCKFWToken *fwToken,
    CK_CHAR label[32]);

/*
 * nssCKFWToken_GetManufacturerID
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetManufacturerID(
    NSSCKFWToken *fwToken,
    CK_CHAR manufacturerID[32]);

/*
 * nssCKFWToken_GetModel
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetModel(
    NSSCKFWToken *fwToken,
    CK_CHAR model[16]);

/*
 * nssCKFWToken_GetSerialNumber
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetSerialNumber(
    NSSCKFWToken *fwToken,
    CK_CHAR serialNumber[16]);

/*
 * nssCKFWToken_GetHasRNG
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetHasRNG(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetIsWriteProtected
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetIsWriteProtected(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetLoginRequired
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetLoginRequired(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetUserPinInitialized
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetUserPinInitialized(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetRestoreKeyNotNeeded
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetRestoreKeyNotNeeded(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetHasClockOnToken
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetHasClockOnToken(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetHasProtectedAuthenticationPath
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetHasProtectedAuthenticationPath(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetSupportsDualCryptoOperations
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWToken_GetSupportsDualCryptoOperations(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMaxSessionCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetMaxSessionCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMaxRwSessionCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetMaxRwSessionCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMaxPinLen
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetMaxPinLen(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMinPinLen
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetMinPinLen(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetTotalPublicMemory
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetTotalPublicMemory(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetFreePublicMemory
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetFreePublicMemory(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetTotalPrivateMemory
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetTotalPrivateMemory(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetFreePrivateMemory
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetFreePrivateMemory(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetHardwareVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWToken_GetHardwareVersion(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetFirmwareVersion
 *
 */

NSS_EXTERN CK_VERSION
nssCKFWToken_GetFirmwareVersion(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetUTCTime
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetUTCTime(
    NSSCKFWToken *fwToken,
    CK_CHAR utcTime[16]);

/*
 * nssCKFWToken_OpenSession
 *
 */

NSS_EXTERN NSSCKFWSession *
nssCKFWToken_OpenSession(
    NSSCKFWToken *fwToken,
    CK_BBOOL rw,
    CK_VOID_PTR pApplication,
    CK_NOTIFY Notify,
    CK_RV *pError);

/*
 * nssCKFWToken_GetMechanismCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetMechanismCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMechanismTypes
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_GetMechanismTypes(
    NSSCKFWToken *fwToken,
    CK_MECHANISM_TYPE types[]);

/*
 * nssCKFWToken_GetMechanism
 *
 */

NSS_EXTERN NSSCKFWMechanism *
nssCKFWToken_GetMechanism(
    NSSCKFWToken *fwToken,
    CK_MECHANISM_TYPE which,
    CK_RV *pError);

/*
 * nssCKFWToken_SetSessionState
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_SetSessionState(
    NSSCKFWToken *fwToken,
    CK_STATE newState);

/*
 * nssCKFWToken_RemoveSession
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_RemoveSession(
    NSSCKFWToken *fwToken,
    NSSCKFWSession *fwSession);

/*
 * nssCKFWToken_CloseAllSessions
 *
 */

NSS_EXTERN CK_RV
nssCKFWToken_CloseAllSessions(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetSessionCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetSessionCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetRwSessionCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetRwSessionCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetRoSessionCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWToken_GetRoSessionCount(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetSessionObjectHash
 *
 */

NSS_EXTERN nssCKFWHash *
nssCKFWToken_GetSessionObjectHash(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetMDObjectHash
 *
 */

NSS_EXTERN nssCKFWHash *
nssCKFWToken_GetMDObjectHash(
    NSSCKFWToken *fwToken);

/*
 * nssCKFWToken_GetObjectHandleHash
 *
 */

NSS_EXTERN nssCKFWHash *
nssCKFWToken_GetObjectHandleHash(
    NSSCKFWToken *fwToken);

/*
 * NSSCKFWMechanism
 *
 *  -- create/destroy --
 *  nssCKFWMechanism_Create
 *  nssCKFWMechanism_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWMechanism_GetMDMechanism
 *
 *  -- private accessors --
 *
 *  -- module fronts --
 *  nssCKFWMechanism_GetMinKeySize
 *  nssCKFWMechanism_GetMaxKeySize
 *  nssCKFWMechanism_GetInHardware
 *  nssCKFWMechanism_GetCanEncrypt
 *  nssCKFWMechanism_GetCanDecrypt
 *  nssCKFWMechanism_GetCanDigest
 *  nssCKFWMechanism_GetCanSignRecover
 *  nssCKFWMechanism_GetCanVerify
 *  nssCKFWMechanism_GetCanVerifyRecover
 *  nssCKFWMechanism_GetCanGenerate
 *  nssCKFWMechanism_GetCanGenerateKeyPair
 *  nssCKFWMechanism_GetCanWrap
 *  nssCKFWMechanism_GetCanUnwrap
 *  nssCKFWMechanism_GetCanDerive
 *  nssCKFWMechanism_EncryptInit
 *  nssCKFWMechanism_DecryptInit
 *  nssCKFWMechanism_DigestInit
 *  nssCKFWMechanism_SignInit
 *  nssCKFWMechanism_SignRecoverInit
 *  nssCKFWMechanism_VerifyInit
 *  nssCKFWMechanism_VerifyRecoverInit
 *  nssCKFWMechanism_GenerateKey
 *  nssCKFWMechanism_GenerateKeyPair
 *  nssCKFWMechanism_GetWrapKeyLength
 *  nssCKFWMechanism_WrapKey
 *  nssCKFWMechanism_UnwrapKey
 *  nssCKFWMechanism_DeriveKey
 */


/*
 * nssCKFWMechanism_Create
 *
 */

NSS_EXTERN NSSCKFWMechanism *
nssCKFWMechanism_Create(
    NSSCKMDMechanism *mdMechanism,
    NSSCKMDToken *mdToken,
    NSSCKFWToken *fwToken,
    NSSCKMDInstance *mdInstance,
    NSSCKFWInstance *fwInstance);

/*
 * nssCKFWMechanism_Destroy
 *
 */

NSS_EXTERN void
nssCKFWMechanism_Destroy(
    NSSCKFWMechanism *fwMechanism);

/*
 * nssCKFWMechanism_GetMDMechanism
 *
 */


NSS_EXTERN NSSCKMDMechanism *
nssCKFWMechanism_GetMDMechanism(
    NSSCKFWMechanism *fwMechanism);

/*
 * nssCKFWMechanism_GetMinKeySize
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWMechanism_GetMinKeySize(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetMaxKeySize
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWMechanism_GetMaxKeySize(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetInHardware
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetInHardware(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * the following are determined automatically by which of the cryptographic
 * functions are defined for this mechanism.
 */

/*
 * nssCKFWMechanism_GetCanEncrypt
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanEncrypt(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanDecrypt
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanDecrypt(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanDigest
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanDigest(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanSign
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanSign(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanSignRecover
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanSignRecover(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanVerify
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanVerify(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanVerifyRecover
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanVerifyRecover(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanGenerate
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanGenerate(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanGenerateKeyPair
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanGenerateKeyPair(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanWrap
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanWrap(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanUnwrap
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanUnwrap(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GetCanDerive
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWMechanism_GetCanDerive(
    NSSCKFWMechanism *fwMechanism,
    CK_RV *pError);

/*
 *  nssCKFWMechanism_EncryptInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_EncryptInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 *  nssCKFWMechanism_DecryptInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_DecryptInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 *  nssCKFWMechanism_DigestInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_DigestInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession);

/*
 *  nssCKFWMechanism_SignInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_SignInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 *  nssCKFWMechanism_SignRecoverInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_SignRecoverInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 *  nssCKFWMechanism_VerifyInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_VerifyInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 *  nssCKFWMechanism_VerifyRecoverInit
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_VerifyRecoverInit(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM *pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 * nssCKFWMechanism_GenerateKey
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWMechanism_GenerateKey(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * nssCKFWMechanism_GenerateKeyPair
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_GenerateKeyPair(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    CK_ATTRIBUTE_PTR pPublicKeyTemplate,
    CK_ULONG ulPublicKeyAttributeCount,
    CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
    CK_ULONG ulPrivateKeyAttributeCount,
    NSSCKFWObject **fwPublicKeyObject,
    NSSCKFWObject **fwPrivateKeyObject);

/*
 * nssCKFWMechanism_GetWrapKeyLength
 */

NSS_EXTERN CK_ULONG
nssCKFWMechanism_GetWrapKeyLength(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwWrappingKeyObject,
    NSSCKFWObject *fwObject,
    CK_RV *pError);

/*
 * nssCKFWMechanism_WrapKey
 */

NSS_EXTERN CK_RV
nssCKFWMechanism_WrapKey(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwWrappingKeyObject,
    NSSCKFWObject *fwObject,
    NSSItem *wrappedKey);

/*
 * nssCKFWMechanism_UnwrapKey
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWMechanism_UnwrapKey(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwWrappingKeyObject,
    NSSItem *wrappedKey,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * nssCKFWMechanism_DeriveKey
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWMechanism_DeriveKey(
    NSSCKFWMechanism *fwMechanism,
    CK_MECHANISM_PTR pMechanism,
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwBaseKeyObject,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * NSSCKFWCryptoOperation
 *
 *  -- create/destroy --
 *  nssCKFWCryptoOperation_Create
 *  nssCKFWCryptoOperation_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWCryptoOperation_GetMDCryptoOperation
 *  nssCKFWCryptoOperation_GetType
 *
 *  -- private accessors --
 *
 *  -- module fronts --
 * nssCKFWCryptoOperation_GetFinalLength
 * nssCKFWCryptoOperation_GetOperationLength
 * nssCKFWCryptoOperation_Final
 * nssCKFWCryptoOperation_Update
 * nssCKFWCryptoOperation_DigestUpdate
 * nssCKFWCryptoOperation_DigestKey
 * nssCKFWCryptoOperation_UpdateFinal
 */


/*
 *  nssCKFWCrytoOperation_Create
 */

NSS_EXTERN NSSCKFWCryptoOperation *
nssCKFWCryptoOperation_Create(
    NSSCKMDCryptoOperation *mdOperation,
    NSSCKMDSession *mdSession,
    NSSCKFWSession *fwSession,
    NSSCKMDToken *mdToken,
    NSSCKFWToken *fwToken,
    NSSCKMDInstance *mdInstance,
    NSSCKFWInstance *fwInstance,
    NSSCKFWCryptoOperationType type,
    CK_RV *pError);

/*
 *  nssCKFWCryptoOperation_Destroy
 */

NSS_EXTERN void
nssCKFWCryptoOperation_Destroy(
    NSSCKFWCryptoOperation *fwOperation);

/*
 *  nssCKFWCryptoOperation_GetMDCryptoOperation
 */

NSS_EXTERN NSSCKMDCryptoOperation *
nssCKFWCryptoOperation_GetMDCryptoOperation(
    NSSCKFWCryptoOperation *fwOperation);

/*
 *  nssCKFWCryptoOperation_GetType
 */

NSS_EXTERN NSSCKFWCryptoOperationType
nssCKFWCryptoOperation_GetType(
    NSSCKFWCryptoOperation *fwOperation);

/*
 * nssCKFWCryptoOperation_GetFinalLength
 */

NSS_EXTERN CK_ULONG
nssCKFWCryptoOperation_GetFinalLength(
    NSSCKFWCryptoOperation *fwOperation,
    CK_RV *pError);

/*
 * nssCKFWCryptoOperation_GetOperationLength
 */

NSS_EXTERN CK_ULONG
nssCKFWCryptoOperation_GetOperationLength(
    NSSCKFWCryptoOperation *fwOperation,
    NSSItem *inputBuffer,
    CK_RV *pError);

/*
 * nssCKFWCryptoOperation_Final
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_Final(
    NSSCKFWCryptoOperation *fwOperation,
    NSSItem *outputBuffer);

/*
 * nssCKFWCryptoOperation_Update
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_Update(
    NSSCKFWCryptoOperation *fwOperation,
    NSSItem *inputBuffer,
    NSSItem *outputBuffer);

/*
 * nssCKFWCryptoOperation_DigestUpdate
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_DigestUpdate(
    NSSCKFWCryptoOperation *fwOperation,
    NSSItem *inputBuffer);

/*
 * nssCKFWCryptoOperation_DigestKey
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_DigestKey(
    NSSCKFWCryptoOperation *fwOperation,
    NSSCKFWObject *fwKey);

/*
 * nssCKFWCryptoOperation_UpdateFinal
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_UpdateFinal(
    NSSCKFWCryptoOperation *fwOperation,
    NSSItem *inputBuffer,
    NSSItem *outputBuffer);

/*
 * nssCKFWCryptoOperation_UpdateCombo
 */

NSS_EXTERN CK_RV
nssCKFWCryptoOperation_UpdateCombo(
    NSSCKFWCryptoOperation *fwOperation,
    NSSCKFWCryptoOperation *fwPeerOperation,
    NSSItem *inputBuffer,
    NSSItem *outputBuffer);

/*
 * NSSCKFWSession
 *
 *  -- create/destroy --
 *  nssCKFWSession_Create
 *  nssCKFWSession_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWSession_GetMDSession
 *  nssCKFWSession_GetArena
 *  nssCKFWSession_CallNotification
 *  nssCKFWSession_IsRWSession
 *  nssCKFWSession_IsSO
 *  nssCKFWSession_GetCurrentCryptoOperation
 *
 *  -- private accessors --
 *  nssCKFWSession_GetFWSlot
 *  nssCKFWSession_GetSessionState
 *  nssCKFWSession_SetFWFindObjects
 *  nssCKFWSession_GetFWFindObjects
 *  nssCKFWSession_SetMDSession
 *  nssCKFWSession_SetHandle
 *  nssCKFWSession_GetHandle
 *  nssCKFWSession_RegisterSessionObject
 *  nssCKFWSession_DeregisterSessionObject
 *  nssCKFWSession_SetCurrentCryptoOperation
 *
 *  -- module fronts --
 *  nssCKFWSession_GetDeviceError
 *  nssCKFWSession_Login
 *  nssCKFWSession_Logout
 *  nssCKFWSession_InitPIN
 *  nssCKFWSession_SetPIN
 *  nssCKFWSession_GetOperationStateLen
 *  nssCKFWSession_GetOperationState
 *  nssCKFWSession_SetOperationState
 *  nssCKFWSession_CreateObject
 *  nssCKFWSession_CopyObject
 *  nssCKFWSession_FindObjectsInit
 *  nssCKFWSession_SeedRandom
 *  nssCKFWSession_GetRandom
 *  nssCKFWSession_Final
 *  nssCKFWSession_Update
 *  nssCKFWSession_DigestUpdate
 *  nssCKFWSession_DigestKey
 *  nssCKFWSession_UpdateFinal
 *  nssCKFWSession_UpdateCombo
 */


/*
 * nssCKFWSession_Create
 *
 */

NSS_EXTERN NSSCKFWSession *
nssCKFWSession_Create(
    NSSCKFWToken *fwToken,
    CK_BBOOL rw,
    CK_VOID_PTR pApplication,
    CK_NOTIFY Notify,
    CK_RV *pError);

/*
 * nssCKFWSession_Destroy
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_Destroy(
    NSSCKFWSession *fwSession,
    CK_BBOOL removeFromTokenHash);

/*
 * nssCKFWSession_GetMDSession
 *
 */

NSS_EXTERN NSSCKMDSession *
nssCKFWSession_GetMDSession(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_GetArena
 *
 */

NSS_EXTERN NSSArena *
nssCKFWSession_GetArena(
    NSSCKFWSession *fwSession,
    CK_RV *pError);

/*
 * nssCKFWSession_CallNotification
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_CallNotification(
    NSSCKFWSession *fwSession,
    CK_NOTIFICATION event);

/*
 * nssCKFWSession_IsRWSession
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWSession_IsRWSession(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_IsSO
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWSession_IsSO(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_GetFWSlot
 *
 */

NSS_EXTERN NSSCKFWSlot *
nssCKFWSession_GetFWSlot(
    NSSCKFWSession *fwSession);

/*
 * nssCFKWSession_GetSessionState
 *
 */

NSS_EXTERN CK_STATE
nssCKFWSession_GetSessionState(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_SetFWFindObjects
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SetFWFindObjects(
    NSSCKFWSession *fwSession,
    NSSCKFWFindObjects *fwFindObjects);

/*
 * nssCKFWSession_GetFWFindObjects
 *
 */

NSS_EXTERN NSSCKFWFindObjects *
nssCKFWSession_GetFWFindObjects(
    NSSCKFWSession *fwSesssion,
    CK_RV *pError);

/*
 * nssCKFWSession_SetMDSession
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SetMDSession(
    NSSCKFWSession *fwSession,
    NSSCKMDSession *mdSession);

/*
 * nssCKFWSession_SetHandle
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SetHandle(
    NSSCKFWSession *fwSession,
    CK_SESSION_HANDLE hSession);

/*
 * nssCKFWSession_GetHandle
 *
 */

NSS_EXTERN CK_SESSION_HANDLE
nssCKFWSession_GetHandle(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_RegisterSessionObject
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_RegisterSessionObject(
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 * nssCKFWSession_DeregisterSessionObject
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_DeregisterSessionObject(
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwObject);

/*
 * nssCKFWSession_GetDeviceError
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWSession_GetDeviceError(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_Login
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_Login(
    NSSCKFWSession *fwSession,
    CK_USER_TYPE userType,
    NSSItem *pin);

/*
 * nssCKFWSession_Logout
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_Logout(
    NSSCKFWSession *fwSession);

/*
 * nssCKFWSession_InitPIN
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_InitPIN(
    NSSCKFWSession *fwSession,
    NSSItem *pin);

/*
 * nssCKFWSession_SetPIN
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SetPIN(
    NSSCKFWSession *fwSession,
    const NSSItem *oldPin,
    NSSItem *newPin);

/*
 * nssCKFWSession_GetOperationStateLen
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWSession_GetOperationStateLen(
    NSSCKFWSession *fwSession,
    CK_RV *pError);

/*
 * nssCKFWSession_GetOperationState
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_GetOperationState(
    NSSCKFWSession *fwSession,
    NSSItem *buffer);

/*
 * nssCKFWSession_SetOperationState
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SetOperationState(
    NSSCKFWSession *fwSession,
    NSSItem *state,
    NSSCKFWObject *encryptionKey,
    NSSCKFWObject *authenticationKey);

/*
 * nssCKFWSession_CreateObject
 *
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWSession_CreateObject(
    NSSCKFWSession *fwSession,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * nssCKFWSession_CopyObject
 *
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWSession_CopyObject(
    NSSCKFWSession *fwSession,
    NSSCKFWObject *object,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * nssCKFWSession_FindObjectsInit
 *
 */

NSS_EXTERN NSSCKFWFindObjects *
nssCKFWSession_FindObjectsInit(
    NSSCKFWSession *fwSession,
    CK_ATTRIBUTE_PTR pTemplate,
    CK_ULONG ulAttributeCount,
    CK_RV *pError);

/*
 * nssCKFWSession_SetCurrentCryptoOperation
 */

NSS_IMPLEMENT void
nssCKFWSession_SetCurrentCryptoOperation(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperation *fwOperation,
    NSSCKFWCryptoOperationState state);

/*
 * nssCKFWSession_GetCurrentCryptoOperation
 */

NSS_IMPLEMENT NSSCKFWCryptoOperation *
nssCKFWSession_GetCurrentCryptoOperation(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationState state);

/*
 * nssCKFWSession_Final
 * (terminate a cryptographic operation and get the result)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_Final(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationType type,
    NSSCKFWCryptoOperationState state,
    CK_BYTE_PTR outBuf,
    CK_ULONG_PTR outBufLen);

/*
 * nssCKFWSession_Update
 * (get the next step of an encrypt/decrypt operation)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_Update(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationType type,
    NSSCKFWCryptoOperationState state,
    CK_BYTE_PTR inBuf,
    CK_ULONG inBufLen,
    CK_BYTE_PTR outBuf,
    CK_ULONG_PTR outBufLen);

/*
 * nssCKFWSession_DigestUpdate
 * (do the next step of an digest/sign/verify operation)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_DigestUpdate(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationType type,
    NSSCKFWCryptoOperationState state,
    CK_BYTE_PTR inBuf,
    CK_ULONG inBufLen);

/*
 * nssCKFWSession_DigestKey
 * (do the next step of an digest/sign/verify operation)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_DigestKey(
    NSSCKFWSession *fwSession,
    NSSCKFWObject *fwKey);

/*
 * nssCKFWSession_UpdateFinal
 * (do a single-step of a cryptographic operation and get the result)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_UpdateFinal(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationType type,
    NSSCKFWCryptoOperationState state,
    CK_BYTE_PTR inBuf,
    CK_ULONG inBufLen,
    CK_BYTE_PTR outBuf,
    CK_ULONG_PTR outBufLen);

/*
 * nssCKFWSession_UpdateCombo
 * (do a combination encrypt/decrypt and sign/digest/verify operation)
 */

NSS_IMPLEMENT CK_RV
nssCKFWSession_UpdateCombo(
    NSSCKFWSession *fwSession,
    NSSCKFWCryptoOperationType encryptType,
    NSSCKFWCryptoOperationType digestType,
    NSSCKFWCryptoOperationState digestState,
    CK_BYTE_PTR inBuf,
    CK_ULONG inBufLen,
    CK_BYTE_PTR outBuf,
    CK_ULONG_PTR outBufLen);

/*
 * nssCKFWSession_SeedRandom
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_SeedRandom(
    NSSCKFWSession *fwSession,
    NSSItem *seed);

/*
 * nssCKFWSession_GetRandom
 *
 */

NSS_EXTERN CK_RV
nssCKFWSession_GetRandom(
    NSSCKFWSession *fwSession,
    NSSItem *buffer);

/*
 * NSSCKFWObject
 *
 * -- create/destroy --
 *  nssCKFWObject_Create
 *  nssCKFWObject_Finalize
 *  nssCKFWObject_Destroy
 *
 * -- implement public accessors --
 *  nssCKFWObject_GetMDObject
 *  nssCKFWObject_GetArena
 *
 * -- private accessors --
 *  nssCKFWObject_SetHandle
 *  nssCKFWObject_GetHandle
 *
 * -- module fronts --
 *  nssCKFWObject_IsTokenObject
 *  nssCKFWObject_GetAttributeCount
 *  nssCKFWObject_GetAttributeTypes
 *  nssCKFWObject_GetAttributeSize
 *  nssCKFWObject_GetAttribute
 *  nssCKFWObject_SetAttribute
 *  nssCKFWObject_GetObjectSize
 */


/*
 * nssCKFWObject_Create
 *
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWObject_Create(
    NSSArena *arena,
    NSSCKMDObject *mdObject,
    NSSCKFWSession *fwSession,
    NSSCKFWToken *fwToken,
    NSSCKFWInstance *fwInstance,
    CK_RV *pError);

/*
 * nssCKFWObject_Finalize
 *
 */

NSS_EXTERN void
nssCKFWObject_Finalize(
    NSSCKFWObject *fwObject,
    PRBool removeFromHash);

/*
 * nssCKFWObject_Destroy
 *
 */

NSS_EXTERN void
nssCKFWObject_Destroy(
    NSSCKFWObject *fwObject);

/*
 * nssCKFWObject_GetMDObject
 *
 */

NSS_EXTERN NSSCKMDObject *
nssCKFWObject_GetMDObject(
    NSSCKFWObject *fwObject);

/*
 * nssCKFWObject_GetArena
 *
 */

NSS_EXTERN NSSArena *
nssCKFWObject_GetArena(
    NSSCKFWObject *fwObject,
    CK_RV *pError);

/*
 * nssCKFWObject_SetHandle
 *
 */

NSS_EXTERN CK_RV
nssCKFWObject_SetHandle(
    NSSCKFWObject *fwObject,
    CK_OBJECT_HANDLE hObject);

/*
 * nssCKFWObject_GetHandle
 *
 */

NSS_EXTERN CK_OBJECT_HANDLE
nssCKFWObject_GetHandle(
    NSSCKFWObject *fwObject);

/*
 * nssCKFWObject_IsTokenObject
 *
 */

NSS_EXTERN CK_BBOOL
nssCKFWObject_IsTokenObject(
    NSSCKFWObject *fwObject);

/*
 * nssCKFWObject_GetAttributeCount
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWObject_GetAttributeCount(
    NSSCKFWObject *fwObject,
    CK_RV *pError);

/*
 * nssCKFWObject_GetAttributeTypes
 *
 */

NSS_EXTERN CK_RV
nssCKFWObject_GetAttributeTypes(
    NSSCKFWObject *fwObject,
    CK_ATTRIBUTE_TYPE_PTR typeArray,
    CK_ULONG ulCount);

/*
 * nssCKFWObject_GetAttributeSize
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWObject_GetAttributeSize(
    NSSCKFWObject *fwObject,
    CK_ATTRIBUTE_TYPE attribute,
    CK_RV *pError);

/*
 * nssCKFWObject_GetAttribute
 *
 * Usual NSS allocation rules:
 * If itemOpt is not NULL, it will be returned; otherwise an NSSItem
 * will be allocated.  If itemOpt is not NULL but itemOpt->data is,
 * the buffer will be allocated; otherwise, the buffer will be used.
 * Any allocations will come from the optional arena, if one is
 * specified.
 */

NSS_EXTERN NSSItem *
nssCKFWObject_GetAttribute(
    NSSCKFWObject *fwObject,
    CK_ATTRIBUTE_TYPE attribute,
    NSSItem *itemOpt,
    NSSArena *arenaOpt,
    CK_RV *pError);

/*
 * nssCKFWObject_SetAttribute
 *
 */

NSS_EXTERN CK_RV
nssCKFWObject_SetAttribute(
    NSSCKFWObject *fwObject,
    NSSCKFWSession *fwSession,
    CK_ATTRIBUTE_TYPE attribute,
    NSSItem *value);

/*
 * nssCKFWObject_GetObjectSize
 *
 */

NSS_EXTERN CK_ULONG
nssCKFWObject_GetObjectSize(
    NSSCKFWObject *fwObject,
    CK_RV *pError);

/*
 * NSSCKFWFindObjects
 *
 *  -- create/destroy --
 *  nssCKFWFindObjects_Create
 *  nssCKFWFindObjects_Destroy
 *
 *  -- implement public accessors --
 *  nssCKFWFindObjects_GetMDFindObjects
 *
 *  -- private accessors --
 *
 *  -- module fronts --
 *  nssCKFWFindObjects_Next
 */


/*
 * nssCKFWFindObjects_Create
 *
 */

NSS_EXTERN NSSCKFWFindObjects *
nssCKFWFindObjects_Create(
    NSSCKFWSession *fwSession,
    NSSCKFWToken *fwToken,
    NSSCKFWInstance *fwInstance,
    NSSCKMDFindObjects *mdFindObjects1,
    NSSCKMDFindObjects *mdFindObjects2,
    CK_RV *pError);

/*
 * nssCKFWFindObjects_Destroy
 *
 */

NSS_EXTERN void
nssCKFWFindObjects_Destroy(
    NSSCKFWFindObjects *fwFindObjects);

/*
 * nssCKFWFindObjects_GetMDFindObjects
 *
 */

NSS_EXTERN NSSCKMDFindObjects *
nssCKFWFindObjects_GetMDFindObjects(
    NSSCKFWFindObjects *fwFindObjects);

/*
 * nssCKFWFindObjects_Next
 *
 */

NSS_EXTERN NSSCKFWObject *
nssCKFWFindObjects_Next(
    NSSCKFWFindObjects *fwFindObjects,
    NSSArena *arenaOpt,
    CK_RV *pError);

/*
 * NSSCKFWMutex
 *
 *  nssCKFWMutex_Create
 *  nssCKFWMutex_Destroy
 *  nssCKFWMutex_Lock
 *  nssCKFWMutex_Unlock
 *
 */


/*
 * nssCKFWMutex_Create
 *
 */

NSS_EXTERN NSSCKFWMutex *
nssCKFWMutex_Create(
    CK_C_INITIALIZE_ARGS_PTR pInitArgs,
    CryptokiLockingState LockingState,
    NSSArena *arena,
    CK_RV *pError);

/*
 * nssCKFWMutex_Destroy
 *
 */

NSS_EXTERN CK_RV
nssCKFWMutex_Destroy(
    NSSCKFWMutex *mutex);

/*
 * nssCKFWMutex_Lock
 *
 */

NSS_EXTERN CK_RV
nssCKFWMutex_Lock(
    NSSCKFWMutex *mutex);

/*
 * nssCKFWMutex_Unlock
 *
 */

NSS_EXTERN CK_RV
nssCKFWMutex_Unlock(
    NSSCKFWMutex *mutex);

#endif /* CKFW_H */

Messung V0.5
C=91 H=100 G=95

¤ Dauer der Verarbeitung: 0.17 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.