CSPabstractsession.cpp [plain text]
#include <security_cdsa_plugin/CSPsession.h>
#include <security_cdsa_plugin/cssmplugin.h>
#include <security_cdsa_utilities/cssmbridge.h>
#include <Security/cssmcspi.h>
CSPAbstractPluginSession::~CSPAbstractPluginSession()
{ }
static CSSM_RETURN CSSMCSPI cssm_ObtainPrivateKeyFromPublicKey(CSSM_CSP_HANDLE CSPHandle,
const CSSM_KEY *PublicKey,
CSSM_KEY_PTR PrivateKey)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).ObtainPrivateKeyFromPublicKey(CssmKey::required(PublicKey),
CssmKey::required(PrivateKey));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetOperationalStatistics(CSSM_CSP_HANDLE CSPHandle,
CSSM_CSP_OPERATIONAL_STATISTICS *Statistics)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetOperationalStatistics(CSPOperationalStatistics::required(Statistics));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_ChangeLoginOwner(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_ACL_OWNER_PROTOTYPE *NewOwner)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).ChangeLoginOwner(AccessCredentials::required(AccessCred),
Required(NewOwner));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_EventNotify(CSSM_CSP_HANDLE CSPHandle,
CSSM_CONTEXT_EVENT Event,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).EventNotify(Event,
CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DecryptDataInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DecryptDataInit(CCHandle,
Context::required(Context),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_SignDataInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).SignDataInit(CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DigestData(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *DataBufs,
uint32 DataBufCount,
CSSM_DATA_PTR Digest)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DigestData(CCHandle,
Context::required(Context),
&CssmData::required(DataBufs),
DataBufCount,
CssmData::required(Digest));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetKeyOwner(CSSM_CSP_HANDLE CSPHandle,
const CSSM_KEY *Key,
CSSM_ACL_OWNER_PROTOTYPE_PTR Owner)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetKeyOwner(CssmKey::required(Key),
Required(Owner));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetLoginAcl(CSSM_CSP_HANDLE CSPHandle,
const CSSM_STRING *SelectionTag,
uint32 *NumberOfAclInfos,
CSSM_ACL_ENTRY_INFO_PTR *AclInfos)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetLoginAcl(SelectionTag,
Required(NumberOfAclInfos),
Required(AclInfos));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyMac(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *DataBufs,
uint32 DataBufCount,
const CSSM_DATA *Mac)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyMac(CCHandle,
Context::required(Context),
&CssmData::required(DataBufs),
DataBufCount,
CssmData::required(Mac));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_SignDataFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_DATA_PTR Signature)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).SignDataFinal(CCHandle,
CssmData::required(Signature));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyDataUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *DataBufs,
uint32 DataBufCount)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyDataUpdate(CCHandle,
&CssmData::required(DataBufs),
DataBufCount);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateMac(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *DataBufs,
uint32 DataBufCount,
CSSM_DATA_PTR Mac)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateMac(CCHandle,
Context::required(Context),
&CssmData::required(DataBufs),
DataBufCount,
CssmData::required(Mac));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyMacFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *Mac)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyMacFinal(CCHandle,
CssmData::required(Mac));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateRandom(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
CSSM_DATA_PTR RandomNumber)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateRandom(CCHandle,
Context::required(Context),
CssmData::required(RandomNumber));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_RetrieveUniqueId(CSSM_CSP_HANDLE CSPHandle,
CSSM_DATA_PTR UniqueID)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).RetrieveUniqueId(CssmData::required(UniqueID));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_UnwrapKey(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_KEY *PublicKey,
const CSSM_WRAP_KEY *WrappedKey,
uint32 KeyUsage,
uint32 KeyAttr,
const CSSM_DATA *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CSSM_KEY_PTR UnwrappedKey,
CSSM_DATA_PTR DescriptiveData,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).UnwrapKey(CCHandle,
Context::required(Context),
CssmKey::optional(PublicKey),
CssmKey::required(WrappedKey),
KeyUsage,
KeyAttr,
CssmData::optional(KeyLabel),
CredAndAclEntry,
CssmKey::required(UnwrappedKey),
CssmData::required(DescriptiveData),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateMacFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_DATA_PTR Mac)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateMacFinal(CCHandle,
CssmData::required(Mac));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_WrapKey(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_KEY *Key,
const CSSM_DATA *DescriptiveData,
CSSM_WRAP_KEY_PTR WrappedKey,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).WrapKey(CCHandle,
Context::required(Context),
AccessCredentials::required(AccessCred),
CssmKey::required(Key),
CssmData::optional(DescriptiveData),
CssmKey::required(WrappedKey),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DecryptDataFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_DATA_PTR RemData)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DecryptDataFinal(CCHandle,
CssmData::required(RemData));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_SignData(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *DataBufs,
uint32 DataBufCount,
CSSM_ALGORITHMS DigestAlgorithm,
CSSM_DATA_PTR Signature)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).SignData(CCHandle,
Context::required(Context),
&CssmData::required(DataBufs),
DataBufCount,
DigestAlgorithm,
CssmData::required(Signature));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_EncryptDataInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).EncryptDataInit(CCHandle,
Context::required(Context),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyData(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *DataBufs,
uint32 DataBufCount,
CSSM_ALGORITHMS DigestAlgorithm,
const CSSM_DATA *Signature)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyData(CCHandle,
Context::required(Context),
&CssmData::required(DataBufs),
DataBufCount,
DigestAlgorithm,
CssmData::required(Signature));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateMacUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *DataBufs,
uint32 DataBufCount)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateMacUpdate(CCHandle,
&CssmData::required(DataBufs),
DataBufCount);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_EncryptDataFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_DATA_PTR RemData)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).EncryptDataFinal(CCHandle,
CssmData::required(RemData));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_ChangeKeyOwner(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_KEY *Key,
const CSSM_ACL_OWNER_PROTOTYPE *NewOwner)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).ChangeKeyOwner(AccessCredentials::required(AccessCred),
CssmKey::required(Key),
Required(NewOwner));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyMacInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyMacInit(CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DigestDataClone(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_CC_HANDLE ClonedCCHandle)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DigestDataClone(CCHandle,
ClonedCCHandle);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyDataInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyDataInit(CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DecryptDataUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *CipherBufs,
uint32 CipherBufCount,
CSSM_DATA_PTR ClearBufs,
uint32 ClearBufCount,
CSSM_SIZE *bytesDecrypted)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DecryptDataUpdate(CCHandle,
&CssmData::required(CipherBufs),
CipherBufCount,
&CssmData::required(ClearBufs),
ClearBufCount,
Required(bytesDecrypted));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateAlgorithmParams(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
uint32 ParamBits,
CSSM_DATA_PTR Param,
uint32 *NumberOfUpdatedAttibutes,
CSSM_CONTEXT_ATTRIBUTE_PTR *UpdatedAttributes)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateAlgorithmParams(CCHandle,
Context::required(Context),
ParamBits,
CssmData::required(Param),
Required(NumberOfUpdatedAttibutes),
Required(UpdatedAttributes));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetLoginOwner(CSSM_CSP_HANDLE CSPHandle,
CSSM_ACL_OWNER_PROTOTYPE_PTR Owner)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetLoginOwner(Required(Owner));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetKeyAcl(CSSM_CSP_HANDLE CSPHandle,
const CSSM_KEY *Key,
const CSSM_STRING *SelectionTag,
uint32 *NumberOfAclInfos,
CSSM_ACL_ENTRY_INFO_PTR *AclInfos)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetKeyAcl(CssmKey::required(Key),
SelectionTag,
Required(NumberOfAclInfos),
Required(AclInfos));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyDevice(CSSM_CSP_HANDLE CSPHandle,
const CSSM_DATA *DeviceCert)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyDevice(CssmData::required(DeviceCert));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_EncryptDataUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *ClearBufs,
uint32 ClearBufCount,
CSSM_DATA_PTR CipherBufs,
uint32 CipherBufCount,
CSSM_SIZE *bytesEncrypted)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).EncryptDataUpdate(CCHandle,
&CssmData::required(ClearBufs),
ClearBufCount,
&CssmData::required(CipherBufs),
CipherBufCount,
Required(bytesEncrypted));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DigestDataFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
CSSM_DATA_PTR Digest)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DigestDataFinal(CCHandle,
CssmData::required(Digest));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_Login(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_DATA *LoginName,
const void *Reserved)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).Login(AccessCredentials::required(AccessCred),
CssmData::optional(LoginName),
Reserved);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_ChangeKeyAcl(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_ACL_EDIT *AclEdit,
const CSSM_KEY *Key)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).ChangeKeyAcl(AccessCredentials::required(AccessCred),
Required(AclEdit),
CssmKey::required(Key));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_SignDataUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *DataBufs,
uint32 DataBufCount)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).SignDataUpdate(CCHandle,
&CssmData::required(DataBufs),
DataBufCount);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_QueryKeySizeInBits(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_KEY *Key,
CSSM_KEY_SIZE_PTR KeySize)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).QueryKeySizeInBits(CCHandle,
Context::optional(Context),
CssmKey::optional(Key),
Required(KeySize));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_Logout(CSSM_CSP_HANDLE CSPHandle)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).Logout();
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DecryptData(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *CipherBufs,
uint32 CipherBufCount,
CSSM_DATA_PTR ClearBufs,
uint32 ClearBufCount,
CSSM_SIZE *bytesDecrypted,
CSSM_DATA_PTR RemData,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DecryptData(CCHandle,
Context::required(Context),
&CssmData::required(CipherBufs),
CipherBufCount,
&CssmData::required(ClearBufs),
ClearBufCount,
Required(bytesDecrypted),
CssmData::required(RemData),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DigestDataInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DigestDataInit(CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyDataFinal(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *Signature)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyDataFinal(CCHandle,
CssmData::required(Signature));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateKeyPair(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
uint32 PublicKeyUsage,
uint32 PublicKeyAttr,
const CSSM_DATA *PublicKeyLabel,
CSSM_KEY_PTR PublicKey,
uint32 PrivateKeyUsage,
uint32 PrivateKeyAttr,
const CSSM_DATA *PrivateKeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CSSM_KEY_PTR PrivateKey,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateKeyPair(CCHandle,
Context::required(Context),
PublicKeyUsage,
PublicKeyAttr,
CssmData::optional(PublicKeyLabel),
CssmKey::required(PublicKey),
PrivateKeyUsage,
PrivateKeyAttr,
CssmData::optional(PrivateKeyLabel),
CredAndAclEntry,
CssmKey::required(PrivateKey),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_EncryptData(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
const CSSM_DATA *ClearBufs,
uint32 ClearBufCount,
CSSM_DATA_PTR CipherBufs,
uint32 CipherBufCount,
CSSM_SIZE *bytesEncrypted,
CSSM_DATA_PTR RemData,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).EncryptData(CCHandle,
Context::required(Context),
&CssmData::required(ClearBufs),
ClearBufCount,
&CssmData::required(CipherBufs),
CipherBufCount,
Required(bytesEncrypted),
CssmData::required(RemData),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GetTimeValue(CSSM_CSP_HANDLE CSPHandle,
CSSM_ALGORITHMS TimeAlgorithm,
CSSM_DATA *TimeData)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GetTimeValue(TimeAlgorithm,
CssmData::required(TimeData));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DeriveKey(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
CSSM_DATA_PTR Param,
uint32 KeyUsage,
uint32 KeyAttr,
const CSSM_DATA *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CSSM_KEY_PTR DerivedKey)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DeriveKey(CCHandle,
Context::required(Context),
CssmData::required(Param),
KeyUsage,
KeyAttr,
CssmData::optional(KeyLabel),
CredAndAclEntry,
CssmKey::required(DerivedKey));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateKey(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
uint32 KeyUsage,
uint32 KeyAttr,
const CSSM_DATA *KeyLabel,
const CSSM_RESOURCE_CONTROL_CONTEXT *CredAndAclEntry,
CSSM_KEY_PTR Key,
CSSM_PRIVILEGE Privilege)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateKey(CCHandle,
Context::required(Context),
KeyUsage,
KeyAttr,
CssmData::optional(KeyLabel),
CredAndAclEntry,
CssmKey::required(Key),
Privilege);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_PassThrough(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
uint32 PassThroughId,
const void *InData,
void **OutData)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).PassThrough(CCHandle,
Context::required(Context),
PassThroughId,
InData,
OutData);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_VerifyMacUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *DataBufs,
uint32 DataBufCount)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).VerifyMacUpdate(CCHandle,
&CssmData::required(DataBufs),
DataBufCount);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_FreeKey(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
CSSM_KEY_PTR KeyPtr,
CSSM_BOOL Delete)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).FreeKey(AccessCredentials::optional(AccessCred),
CssmKey::required(KeyPtr),
Delete);
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_GenerateMacInit(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).GenerateMacInit(CCHandle,
Context::required(Context));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_RetrieveCounter(CSSM_CSP_HANDLE CSPHandle,
CSSM_DATA_PTR Counter)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).RetrieveCounter(CssmData::required(Counter));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_QuerySize(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_CONTEXT *Context,
CSSM_BOOL Encrypt,
uint32 QuerySizeCount,
CSSM_QUERY_SIZE_DATA_PTR DataBlock)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).QuerySize(CCHandle,
Context::required(Context),
Encrypt,
QuerySizeCount,
QuerySizeData::optional(DataBlock));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_ChangeLoginAcl(CSSM_CSP_HANDLE CSPHandle,
const CSSM_ACCESS_CREDENTIALS *AccessCred,
const CSSM_ACL_EDIT *AclEdit)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).ChangeLoginAcl(AccessCredentials::required(AccessCred),
Required(AclEdit));
END_API(CSP)
}
static CSSM_RETURN CSSMCSPI cssm_DigestDataUpdate(CSSM_CSP_HANDLE CSPHandle,
CSSM_CC_HANDLE CCHandle,
const CSSM_DATA *DataBufs,
uint32 DataBufCount)
{
BEGIN_API
findSession<CSPPluginSession>(CSPHandle).DigestDataUpdate(CCHandle,
&CssmData::required(DataBufs),
DataBufCount);
END_API(CSP)
}
static const CSSM_SPI_CSP_FUNCS CSPFunctionStruct = {
cssm_EventNotify,
cssm_QuerySize,
cssm_SignData,
cssm_SignDataInit,
cssm_SignDataUpdate,
cssm_SignDataFinal,
cssm_VerifyData,
cssm_VerifyDataInit,
cssm_VerifyDataUpdate,
cssm_VerifyDataFinal,
cssm_DigestData,
cssm_DigestDataInit,
cssm_DigestDataUpdate,
cssm_DigestDataClone,
cssm_DigestDataFinal,
cssm_GenerateMac,
cssm_GenerateMacInit,
cssm_GenerateMacUpdate,
cssm_GenerateMacFinal,
cssm_VerifyMac,
cssm_VerifyMacInit,
cssm_VerifyMacUpdate,
cssm_VerifyMacFinal,
cssm_EncryptData,
cssm_EncryptDataInit,
cssm_EncryptDataUpdate,
cssm_EncryptDataFinal,
cssm_DecryptData,
cssm_DecryptDataInit,
cssm_DecryptDataUpdate,
cssm_DecryptDataFinal,
cssm_QueryKeySizeInBits,
cssm_GenerateKey,
cssm_GenerateKeyPair,
cssm_GenerateRandom,
cssm_GenerateAlgorithmParams,
cssm_WrapKey,
cssm_UnwrapKey,
cssm_DeriveKey,
cssm_FreeKey,
cssm_PassThrough,
cssm_Login,
cssm_Logout,
cssm_ChangeLoginAcl,
cssm_ObtainPrivateKeyFromPublicKey,
cssm_RetrieveUniqueId,
cssm_RetrieveCounter,
cssm_VerifyDevice,
cssm_GetTimeValue,
cssm_GetOperationalStatistics,
cssm_GetLoginAcl,
cssm_GetKeyAcl,
cssm_ChangeKeyAcl,
cssm_GetKeyOwner,
cssm_ChangeKeyOwner,
cssm_GetLoginOwner,
cssm_ChangeLoginOwner,
};
static CSSM_MODULE_FUNCS CSPFunctionTable = {
CSSM_SERVICE_CSP, 57, (const CSSM_PROC_ADDR *)&CSPFunctionStruct
};
CSSM_MODULE_FUNCS_PTR CSPPluginSession::construct()
{
return &CSPFunctionTable;
}