You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
368 lines
13 KiB
368 lines
13 KiB
9 years ago
|
/*
|
||
|
* Copyright (c) 1999-2001,2004,2011,2014 Apple 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_ */
|