]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_cssm/lib/cssmcspi.h
Security-55163.44.tar.gz
[apple/security.git] / libsecurity_cssm / lib / cssmcspi.h
diff --git a/libsecurity_cssm/lib/cssmcspi.h b/libsecurity_cssm/lib/cssmcspi.h
new file mode 100644 (file)
index 0000000..ac98994
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ * 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_ */