CSPabstractsession.h [plain text]
#ifndef _H_CSPABSTRACTSESSION
#define _H_CSPABSTRACTSESSION
#include <security_cdsa_plugin/pluginsession.h>
#include <security_cdsa_utilities/cssmdata.h>
#include <security_cdsa_utilities/context.h>
#include <security_cdsa_utilities/cssmacl.h>
#include <security_cdsa_utilities/cssmdb.h>
namespace Security {
class CSPAbstractPluginSession {
public:
virtual ~CSPAbstractPluginSession();
virtual void VerifyMacFinal(CSSM_CC_HANDLE CCHandle,
const CssmData &Mac) = 0;
virtual void GenerateRandom(CSSM_CC_HANDLE CCHandle,
const Context &Context,
CssmData &RandomNumber) = 0;
virtual void RetrieveUniqueId(CssmData &UniqueID) = 0;
virtual void SignDataFinal(CSSM_CC_HANDLE CCHandle,
CssmData &Signature) = 0;
virtual void VerifyDataUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData DataBufs[],
uint32 DataBufCount) = 0;
virtual void GenerateMac(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData DataBufs[],
uint32 DataBufCount,
CssmData &Mac) = 0;
virtual void VerifyMac(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData DataBufs[],
uint32 DataBufCount,
const CssmData &Mac) = 0;
virtual void ObtainPrivateKeyFromPublicKey(const CssmKey &PublicKey,
CssmKey &PrivateKey) = 0;
virtual void ChangeLoginOwner(const AccessCredentials &AccessCred,
const CSSM_ACL_OWNER_PROTOTYPE &NewOwner) = 0;
virtual void SignDataInit(CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void DecryptDataInit(CSSM_CC_HANDLE CCHandle,
const Context &Context,
CSSM_PRIVILEGE Privilege) = 0;
virtual void EventNotify(CSSM_CONTEXT_EVENT Event,
CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void GetOperationalStatistics(CSPOperationalStatistics &Statistics) = 0;
virtual void DigestData(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData DataBufs[],
uint32 DataBufCount,
CssmData &Digest) = 0;
virtual void GetLoginAcl(const CSSM_STRING *SelectionTag,
uint32 &NumberOfAclInfos,
CSSM_ACL_ENTRY_INFO_PTR &AclInfos) = 0;
virtual void GetKeyOwner(const CssmKey &Key,
CSSM_ACL_OWNER_PROTOTYPE &Owner) = 0;
virtual void ChangeKeyOwner(const AccessCredentials &AccessCred,
const CssmKey &Key,
const CSSM_ACL_OWNER_PROTOTYPE &NewOwner) = 0;
virtual void VerifyMacInit(CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void DigestDataClone(CSSM_CC_HANDLE CCHandle,
CSSM_CC_HANDLE ClonedCCHandle) = 0;
virtual void GenerateMacUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData DataBufs[],
uint32 DataBufCount) = 0;
virtual void EncryptDataFinal(CSSM_CC_HANDLE CCHandle,
CssmData &RemData) = 0;
virtual void EncryptDataInit(CSSM_CC_HANDLE CCHandle,
const Context &Context,
CSSM_PRIVILEGE Privilege) = 0;
virtual void VerifyData(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData DataBufs[],
uint32 DataBufCount,
CSSM_ALGORITHMS DigestAlgorithm,
const CssmData &Signature) = 0;
virtual void UnwrapKey(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmKey *PublicKey,
const CssmKey &WrappedKey,
uint32 KeyUsage,
uint32 KeyAttr,
const CssmData *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CssmKey &UnwrappedKey,
CssmData &DescriptiveData,
CSSM_PRIVILEGE Privilege) = 0;
virtual void GenerateMacFinal(CSSM_CC_HANDLE CCHandle,
CssmData &Mac) = 0;
virtual void WrapKey(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const AccessCredentials &AccessCred,
const CssmKey &Key,
const CssmData *DescriptiveData,
CssmKey &WrappedKey,
CSSM_PRIVILEGE Privilege) = 0;
virtual void DecryptDataFinal(CSSM_CC_HANDLE CCHandle,
CssmData &RemData) = 0;
virtual void SignData(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData DataBufs[],
uint32 DataBufCount,
CSSM_ALGORITHMS DigestAlgorithm,
CssmData &Signature) = 0;
virtual void SignDataUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData DataBufs[],
uint32 DataBufCount) = 0;
virtual void Logout() = 0;
virtual void DecryptData(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData CipherBufs[],
uint32 CipherBufCount,
CssmData ClearBufs[],
uint32 ClearBufCount,
CSSM_SIZE &bytesDecrypted,
CssmData &RemData,
CSSM_PRIVILEGE Privilege) = 0;
virtual void QueryKeySizeInBits(CSSM_CC_HANDLE CCHandle,
const Context *Context,
const CssmKey *Key,
CSSM_KEY_SIZE &KeySize) = 0;
virtual void DigestDataInit(CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void DigestDataFinal(CSSM_CC_HANDLE CCHandle,
CssmData &Digest) = 0;
virtual void Login(const AccessCredentials &AccessCred,
const CssmData *LoginName,
const void *Reserved) = 0;
virtual void ChangeKeyAcl(const AccessCredentials &AccessCred,
const CSSM_ACL_EDIT &AclEdit,
const CssmKey &Key) = 0;
virtual void GetKeyAcl(const CssmKey &Key,
const CSSM_STRING *SelectionTag,
uint32 &NumberOfAclInfos,
CSSM_ACL_ENTRY_INFO_PTR &AclInfos) = 0;
virtual void GenerateAlgorithmParams(CSSM_CC_HANDLE CCHandle,
const Context &Context,
uint32 ParamBits,
CssmData &Param,
uint32 &NumberOfUpdatedAttibutes,
CSSM_CONTEXT_ATTRIBUTE_PTR &UpdatedAttributes) = 0;
virtual void GetLoginOwner(CSSM_ACL_OWNER_PROTOTYPE &Owner) = 0;
virtual void VerifyDevice(const CssmData &DeviceCert) = 0;
virtual void EncryptDataUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData ClearBufs[],
uint32 ClearBufCount,
CssmData CipherBufs[],
uint32 CipherBufCount,
CSSM_SIZE &bytesEncrypted) = 0;
virtual void VerifyDataInit(CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void DecryptDataUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData CipherBufs[],
uint32 CipherBufCount,
CssmData ClearBufs[],
uint32 ClearBufCount,
CSSM_SIZE &bytesDecrypted) = 0;
virtual void ChangeLoginAcl(const AccessCredentials &AccessCred,
const CSSM_ACL_EDIT &AclEdit) = 0;
virtual void DigestDataUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData DataBufs[],
uint32 DataBufCount) = 0;
virtual void GenerateMacInit(CSSM_CC_HANDLE CCHandle,
const Context &Context) = 0;
virtual void QuerySize(CSSM_CC_HANDLE CCHandle,
const Context &Context,
CSSM_BOOL Encrypt,
uint32 QuerySizeCount,
QuerySizeData *DataBlock) = 0;
virtual void RetrieveCounter(CssmData &Counter) = 0;
virtual void DeriveKey(CSSM_CC_HANDLE CCHandle,
const Context &Context,
CssmData &Param,
uint32 KeyUsage,
uint32 KeyAttr,
const CssmData *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CssmKey &DerivedKey) = 0;
virtual void GenerateKey(CSSM_CC_HANDLE CCHandle,
const Context &Context,
uint32 KeyUsage,
uint32 KeyAttr,
const CssmData *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CssmKey &Key,
CSSM_PRIVILEGE Privilege) = 0;
virtual void FreeKey(const AccessCredentials *AccessCred,
CssmKey &KeyPtr,
CSSM_BOOL Delete) = 0;
virtual void PassThrough(CSSM_CC_HANDLE CCHandle,
const Context &Context,
uint32 PassThroughId,
const void *InData,
void **OutData) = 0;
virtual void VerifyMacUpdate(CSSM_CC_HANDLE CCHandle,
const CssmData DataBufs[],
uint32 DataBufCount) = 0;
virtual void VerifyDataFinal(CSSM_CC_HANDLE CCHandle,
const CssmData &Signature) = 0;
virtual void GenerateKeyPair(CSSM_CC_HANDLE CCHandle,
const Context &Context,
uint32 PublicKeyUsage,
uint32 PublicKeyAttr,
const CssmData *PublicKeyLabel,
CssmKey &PublicKey,
uint32 PrivateKeyUsage,
uint32 PrivateKeyAttr,
const CssmData *PrivateKeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CssmKey &PrivateKey,
CSSM_PRIVILEGE Privilege) = 0;
virtual void GetTimeValue(CSSM_ALGORITHMS TimeAlgorithm,
CssmData &TimeData) = 0;
virtual void EncryptData(CSSM_CC_HANDLE CCHandle,
const Context &Context,
const CssmData ClearBufs[],
uint32 ClearBufCount,
CssmData CipherBufs[],
uint32 CipherBufCount,
CSSM_SIZE &bytesEncrypted,
CssmData &RemData,
CSSM_PRIVILEGE Privilege) = 0;
};
}
#endif //_H_CSPABSTRACTSESSION