--- /dev/null
+//
+// CSP plugin transition layer.
+// This file was automatically generated. Do not edit on penalty of futility!
+//
+#include <security_cdsa_plugin/CSPsession.h>
+#include <security_cdsa_plugin/cssmplugin.h>
+#include <security_cdsa_utilities/cssmbridge.h>
+#include <Security/cssmcspi.h>
+
+
+CSPAbstractPluginSession::~CSPAbstractPluginSession()
+{ /* virtual */ }
+
+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, // service type
+ 57, // number of functions
+ (const CSSM_PROC_ADDR *)&CSPFunctionStruct
+};
+
+CSSM_MODULE_FUNCS_PTR CSPPluginSession::construct()
+{
+ return &CSPFunctionTable;
+}