--- /dev/null
+/*
+ * Copyright (c) 1999-2001,2004 Apple Computer, Inc. All Rights Reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * This file contains Original Code and/or Modifications of Original Code
+ * as defined in and that are subject to the Apple Public Source License
+ * Version 2.0 (the 'License'). You may not use this file except in
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
+ *
+ * The Original Code and all software distributed under the License are
+ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+ * Please see the License for the specific language governing rights and
+ * limitations under the License.
+ *
+ * @APPLE_LICENSE_HEADER_END@
+ *
+ * cssmcspi.h -- Service Provider Interface for
+ * Cryptographic Service Provider Modules
+ */
+
+#ifndef _CSSMCSPI_H_
+#define _CSSMCSPI_H_ 1
+
+#include <Security/cssmspi.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct cssm_spi_csp_funcs {
+ CSSM_RETURN (CSSMCSPI *EventNotify)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CONTEXT_EVENT Event,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *QuerySize)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ CSSM_BOOL Encrypt,
+ uint32 QuerySizeCount,
+ CSSM_QUERY_SIZE_DATA_PTR DataBlock);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *SignDataInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *SignDataUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount);
+ CSSM_RETURN (CSSMCSPI *SignDataFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_DATA_PTR Signature);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *VerifyDataInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *VerifyDataUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount);
+ CSSM_RETURN (CSSMCSPI *VerifyDataFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *Signature);
+ CSSM_RETURN (CSSMCSPI *DigestData)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount,
+ CSSM_DATA_PTR Digest);
+ CSSM_RETURN (CSSMCSPI *DigestDataInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *DigestDataUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount);
+ CSSM_RETURN (CSSMCSPI *DigestDataClone)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_CC_HANDLE ClonedCCHandle);
+ CSSM_RETURN (CSSMCSPI *DigestDataFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_DATA_PTR Digest);
+ CSSM_RETURN (CSSMCSPI *GenerateMac)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount,
+ CSSM_DATA_PTR Mac);
+ CSSM_RETURN (CSSMCSPI *GenerateMacInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *GenerateMacUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount);
+ CSSM_RETURN (CSSMCSPI *GenerateMacFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_DATA_PTR Mac);
+ CSSM_RETURN (CSSMCSPI *VerifyMac)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount,
+ const CSSM_DATA *Mac);
+ CSSM_RETURN (CSSMCSPI *VerifyMacInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context);
+ CSSM_RETURN (CSSMCSPI *VerifyMacUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *DataBufs,
+ uint32 DataBufCount);
+ CSSM_RETURN (CSSMCSPI *VerifyMacFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *Mac);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *EncryptDataInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ CSSM_PRIVILEGE Privilege);
+ CSSM_RETURN (CSSMCSPI *EncryptDataUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *ClearBufs,
+ uint32 ClearBufCount,
+ CSSM_DATA_PTR CipherBufs,
+ uint32 CipherBufCount,
+ CSSM_SIZE *bytesEncrypted);
+ CSSM_RETURN (CSSMCSPI *EncryptDataFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_DATA_PTR RemData);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *DecryptDataInit)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ CSSM_PRIVILEGE Privilege);
+ CSSM_RETURN (CSSMCSPI *DecryptDataUpdate)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_DATA *CipherBufs,
+ uint32 CipherBufCount,
+ CSSM_DATA_PTR ClearBufs,
+ uint32 ClearBufCount,
+ CSSM_SIZE *bytesDecrypted);
+ CSSM_RETURN (CSSMCSPI *DecryptDataFinal)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ CSSM_DATA_PTR RemData);
+ CSSM_RETURN (CSSMCSPI *QueryKeySizeInBits)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ const CSSM_KEY *Key,
+ CSSM_KEY_SIZE_PTR KeySize);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *GenerateRandom)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ CSSM_DATA_PTR RandomNumber);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *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);
+ CSSM_RETURN (CSSMCSPI *FreeKey)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ CSSM_KEY_PTR KeyPtr,
+ CSSM_BOOL Delete);
+ CSSM_RETURN (CSSMCSPI *PassThrough)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CC_HANDLE CCHandle,
+ const CSSM_CONTEXT *Context,
+ uint32 PassThroughId,
+ const void *InData,
+ void **OutData);
+ CSSM_RETURN (CSSMCSPI *Login)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ const CSSM_DATA *LoginName,
+ const void *Reserved);
+ CSSM_RETURN (CSSMCSPI *Logout)
+ (CSSM_CSP_HANDLE CSPHandle);
+ CSSM_RETURN (CSSMCSPI *ChangeLoginAcl)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ const CSSM_ACL_EDIT *AclEdit);
+ CSSM_RETURN (CSSMCSPI *ObtainPrivateKeyFromPublicKey)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_KEY *PublicKey,
+ CSSM_KEY_PTR PrivateKey);
+ CSSM_RETURN (CSSMCSPI *RetrieveUniqueId)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_DATA_PTR UniqueID);
+ CSSM_RETURN (CSSMCSPI *RetrieveCounter)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_DATA_PTR Counter);
+ CSSM_RETURN (CSSMCSPI *VerifyDevice)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_DATA *DeviceCert);
+ CSSM_RETURN (CSSMCSPI *GetTimeValue)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_ALGORITHMS TimeAlgorithm,
+ CSSM_DATA *TimeData);
+ CSSM_RETURN (CSSMCSPI *GetOperationalStatistics)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_CSP_OPERATIONAL_STATISTICS *Statistics);
+ CSSM_RETURN (CSSMCSPI *GetLoginAcl)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_STRING *SelectionTag,
+ uint32 *NumberOfAclInfos,
+ CSSM_ACL_ENTRY_INFO_PTR *AclInfos);
+ CSSM_RETURN (CSSMCSPI *GetKeyAcl)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_KEY *Key,
+ const CSSM_STRING *SelectionTag,
+ uint32 *NumberOfAclInfos,
+ CSSM_ACL_ENTRY_INFO_PTR *AclInfos);
+ CSSM_RETURN (CSSMCSPI *ChangeKeyAcl)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ const CSSM_ACL_EDIT *AclEdit,
+ const CSSM_KEY *Key);
+ CSSM_RETURN (CSSMCSPI *GetKeyOwner)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_KEY *Key,
+ CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
+ CSSM_RETURN (CSSMCSPI *ChangeKeyOwner)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ const CSSM_KEY *Key,
+ const CSSM_ACL_OWNER_PROTOTYPE *NewOwner);
+ CSSM_RETURN (CSSMCSPI *GetLoginOwner)
+ (CSSM_CSP_HANDLE CSPHandle,
+ CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
+ CSSM_RETURN (CSSMCSPI *ChangeLoginOwner)
+ (CSSM_CSP_HANDLE CSPHandle,
+ const CSSM_ACCESS_CREDENTIALS *AccessCred,
+ const CSSM_ACL_OWNER_PROTOTYPE *NewOwner);
+} CSSM_SPI_CSP_FUNCS DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER, *CSSM_SPI_CSP_FUNCS_PTR DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSSMCSPI_H_ */