view dstep/security/cssmapi.d @ 11:07194b026fa4

Added bindings to a couple of frameworks, new license + some other things
author Jacob Carlborg <doob@me.com>
date Sat, 01 Aug 2009 15:03:28 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Jul 22, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.security.cssmapi;

import dstep.security.cssmconfig;
import dstep.security.cssmtype;

extern (C)
{
	int CSSM_Init (CSSM_VERSION* Version, uint Scope, CSSM_GUID* CallerGuid, uint KeyHierarchy, CSSM_PVC_MODE* PvcPolicy, void* Reserved);
	int CSSM_Terminate ();
	int CSSM_ModuleLoad (CSSM_GUID* ModuleGuid, uint KeyHierarchy, CSSM_API_ModuleEventHandler AppNotifyCallback, void* AppNotifyCallbackCtx);
	int CSSM_ModuleUnload (CSSM_GUID* ModuleGuid, CSSM_API_ModuleEventHandler AppNotifyCallback, void* AppNotifyCallbackCtx);
	int CSSM_Introduce (CSSM_GUID* ModuleID, uint KeyHierarchy);
	int CSSM_Unintroduce (CSSM_GUID* ModuleID);
	int CSSM_ModuleAttach (CSSM_GUID* ModuleGuid, CSSM_VERSION* Version, CSSM_API_MEMORY_FUNCS* MemoryFuncs, uint SubserviceID, uint SubServiceType, uint AttachFlags, uint KeyHierarchy, CSSM_FUNC_NAME_ADDR* FunctionTable, uint NumFunctionTable, void* Reserved, CSSM_MODULE_HANDLE_PTR NewModuleHandle);
	int CSSM_ModuleDetach (int ModuleHandle);
	int CSSM_SetPrivilege (ulong Privilege);
	int CSSM_GetPrivilege (CSSM_PRIVILEGE* Privilege);
	int CSSM_GetModuleGUIDFromHandle (int ModuleHandle, CSSM_GUID_PTR ModuleGUID);
	int CSSM_GetSubserviceUIDFromHandle (int ModuleHandle, CSSM_SUBSERVICE_UID_PTR SubserviceUID);
	int CSSM_ListAttachedModuleManagers (uint* NumberOfModuleManagers, CSSM_GUID_PTR ModuleManagerGuids);
	int CSSM_GetAPIMemoryFunctions (int AddInHandle, CSSM_API_MEMORY_FUNCS_PTR AppMemoryFuncs);
	int CSSM_CSP_CreateSignatureContext (int CSPHandle, uint AlgorithmID, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateSymmetricContext (int CSPHandle, uint AlgorithmID, uint Mode, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, CSSM_DATA* InitVector, uint Padding, void* Reserved, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateDigestContext (int CSPHandle, uint AlgorithmID, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateMacContext (int CSPHandle, uint AlgorithmID, CSSM_KEY* Key, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateRandomGenContext (int CSPHandle, uint AlgorithmID, CSSM_CRYPTO_DATA* Seed, uint Length, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateAsymmetricContext (int CSPHandle, uint AlgorithmID, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, uint Padding, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateDeriveKeyContext (int CSPHandle, uint AlgorithmID, uint DeriveKeyType, uint DeriveKeyLengthInBits, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* BaseKey, uint IterationCount, CSSM_DATA* Salt, CSSM_CRYPTO_DATA* Seed, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreateKeyGenContext (int CSPHandle, uint AlgorithmID, uint KeySizeInBits, CSSM_CRYPTO_DATA* Seed, CSSM_DATA* Salt, CSSM_DATE* StartDate, CSSM_DATE* EndDate, CSSM_DATA* Params, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_CSP_CreatePassThroughContext (int CSPHandle, CSSM_KEY* Key, CSSM_CC_HANDLE* NewContextHandle);
	int CSSM_GetContext (ulong CCHandle, CSSM_CONTEXT_PTR* Context);
	int CSSM_FreeContext (CSSM_CONTEXT_PTR Context);
	int CSSM_SetContext (ulong CCHandle, CSSM_CONTEXT* Context);
	int CSSM_DeleteContext (ulong CCHandle);
	int CSSM_GetContextAttribute (CSSM_CONTEXT* Context, uint AttributeType, CSSM_CONTEXT_ATTRIBUTE_PTR* ContextAttribute);
	int CSSM_UpdateContextAttributes (ulong CCHandle, uint NumberOfAttributes, CSSM_CONTEXT_ATTRIBUTE* ContextAttributes);
	int CSSM_DeleteContextAttributes (ulong CCHandle, uint NumberOfAttributes, CSSM_CONTEXT_ATTRIBUTE* ContextAttributes);
	int CSSM_CSP_Login (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_DATA* LoginName, void* Reserved);
	int CSSM_CSP_Logout (int CSPHandle);
	int CSSM_CSP_GetLoginAcl (int CSPHandle, CSSM_STRING* SelectionTag, uint* NumberOfAclInfos, CSSM_ACL_ENTRY_INFO_PTR* AclInfos);
	int CSSM_CSP_ChangeLoginAcl (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_ACL_EDIT* AclEdit);
	int CSSM_GetKeyAcl (int CSPHandle, CSSM_KEY* Key, CSSM_STRING* SelectionTag, uint* NumberOfAclInfos, CSSM_ACL_ENTRY_INFO_PTR* AclInfos);
	int CSSM_ChangeKeyAcl (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_ACL_EDIT* AclEdit, CSSM_KEY* Key);
	int CSSM_GetKeyOwner (int CSPHandle, CSSM_KEY* Key, CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
	int CSSM_ChangeKeyOwner (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, CSSM_ACL_OWNER_PROTOTYPE* NewOwner);
	int CSSM_CSP_GetLoginOwner (int CSPHandle, CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
	int CSSM_CSP_ChangeLoginOwner (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_ACL_OWNER_PROTOTYPE* NewOwner);
	int CSSM_SignData (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount, uint DigestAlgorithm, CSSM_DATA_PTR Signature);
	int CSSM_SignDataInit (ulong CCHandle);
	int CSSM_SignDataUpdate (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount);
	int CSSM_SignDataFinal (ulong CCHandle, CSSM_DATA_PTR Signature);
	int CSSM_VerifyData (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount, uint DigestAlgorithm, CSSM_DATA* Signature);
	int CSSM_VerifyDataInit (ulong CCHandle);
	int CSSM_VerifyDataUpdate (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount);
	int CSSM_VerifyDataFinal (ulong CCHandle, CSSM_DATA* Signature);
	int CSSM_DigestData (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount, CSSM_DATA_PTR Digest);
	int CSSM_DigestDataInit (ulong CCHandle);
	int CSSM_DigestDataUpdate (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount);
	int CSSM_DigestDataClone (ulong CCHandle, CSSM_CC_HANDLE* ClonednewCCHandle);
	int CSSM_DigestDataFinal (ulong CCHandle, CSSM_DATA_PTR Digest);
	int CSSM_GenerateMac (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount, CSSM_DATA_PTR Mac);
	int CSSM_GenerateMacInit (ulong CCHandle);
	int CSSM_GenerateMacUpdate (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount);
	int CSSM_GenerateMacFinal (ulong CCHandle, CSSM_DATA_PTR Mac);
	int CSSM_VerifyMac (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount, CSSM_DATA* Mac);
	int CSSM_VerifyMacInit (ulong CCHandle);
	int CSSM_VerifyMacUpdate (ulong CCHandle, CSSM_DATA* DataBufs, uint DataBufCount);
	int CSSM_VerifyMacFinal (ulong CCHandle, CSSM_DATA* Mac);
	int CSSM_QuerySize (ulong CCHandle, int Encrypt, uint QuerySizeCount, CSSM_QUERY_SIZE_DATA_PTR DataBlockSizes);
	int CSSM_EncryptData (ulong CCHandle, CSSM_DATA* ClearBufs, uint ClearBufCount, CSSM_DATA_PTR CipherBufs, uint CipherBufCount, CSSM_SIZE* bytesEncrypted, CSSM_DATA_PTR RemData);
	int CSSM_EncryptDataP (ulong CCHandle, CSSM_DATA* ClearBufs, uint ClearBufCount, CSSM_DATA_PTR CipherBufs, uint CipherBufCount, CSSM_SIZE* bytesEncrypted, CSSM_DATA_PTR RemData, ulong Privilege);
	int CSSM_EncryptDataInit (ulong CCHandle);
	int CSSM_EncryptDataInitP (ulong CCHandle, ulong Privilege);
	int CSSM_EncryptDataUpdate (ulong CCHandle, CSSM_DATA* ClearBufs, uint ClearBufCount, CSSM_DATA_PTR CipherBufs, uint CipherBufCount, CSSM_SIZE* bytesEncrypted);
	int CSSM_EncryptDataFinal (ulong CCHandle, CSSM_DATA_PTR RemData);
	int CSSM_DecryptData (ulong CCHandle, CSSM_DATA* CipherBufs, uint CipherBufCount, CSSM_DATA_PTR ClearBufs, uint ClearBufCount, CSSM_SIZE* bytesDecrypted, CSSM_DATA_PTR RemData);
	int CSSM_DecryptDataP (ulong CCHandle, CSSM_DATA* CipherBufs, uint CipherBufCount, CSSM_DATA_PTR ClearBufs, uint ClearBufCount, CSSM_SIZE* bytesDecrypted, CSSM_DATA_PTR RemData, ulong Privilege);
	int CSSM_DecryptDataInit (ulong CCHandle);
	int CSSM_DecryptDataInitP (ulong CCHandle, ulong Privilege);
	int CSSM_DecryptDataUpdate (ulong CCHandle, CSSM_DATA* CipherBufs, uint CipherBufCount, CSSM_DATA_PTR ClearBufs, uint ClearBufCount, CSSM_SIZE* bytesDecrypted);
	int CSSM_DecryptDataFinal (ulong CCHandle, CSSM_DATA_PTR RemData);
	int CSSM_QueryKeySizeInBits (int CSPHandle, ulong CCHandle, CSSM_KEY* Key, CSSM_KEY_SIZE_PTR KeySize);
	int CSSM_GenerateKey (ulong CCHandle, uint KeyUsage, uint KeyAttr, CSSM_DATA* KeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR Key);
	int CSSM_GenerateKeyP (ulong CCHandle, uint KeyUsage, uint KeyAttr, CSSM_DATA* KeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR Key, ulong Privilege);
	int CSSM_GenerateKeyPair (ulong CCHandle, uint PublicKeyUsage, uint PublicKeyAttr, CSSM_DATA* PublicKeyLabel, CSSM_KEY_PTR PublicKey, uint PrivateKeyUsage, uint PrivateKeyAttr, CSSM_DATA* PrivateKeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR PrivateKey);
	int CSSM_GenerateKeyPairP (ulong CCHandle, uint PublicKeyUsage, uint PublicKeyAttr, CSSM_DATA* PublicKeyLabel, CSSM_KEY_PTR PublicKey, uint PrivateKeyUsage, uint PrivateKeyAttr, CSSM_DATA* PrivateKeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR PrivateKey, ulong Privilege);
	int CSSM_GenerateRandom (ulong CCHandle, CSSM_DATA_PTR RandomNumber);
	int CSSM_CSP_ObtainPrivateKeyFromPublicKey (int CSPHandle, CSSM_KEY* PublicKey, CSSM_KEY_PTR PrivateKey);
	int CSSM_WrapKey (ulong CCHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, CSSM_DATA* DescriptiveData, CSSM_WRAP_KEY_PTR WrappedKey);
	int CSSM_UnwrapKey (ulong CCHandle, CSSM_KEY* PublicKey, CSSM_WRAP_KEY* WrappedKey, uint KeyUsage, uint KeyAttr, CSSM_DATA* KeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR UnwrappedKey, CSSM_DATA_PTR DescriptiveData);
	int CSSM_WrapKeyP (ulong CCHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY* Key, CSSM_DATA* DescriptiveData, CSSM_WRAP_KEY_PTR WrappedKey, ulong Privilege);
	int CSSM_UnwrapKeyP (ulong CCHandle, CSSM_KEY* PublicKey, CSSM_WRAP_KEY* WrappedKey, uint KeyUsage, uint KeyAttr, CSSM_DATA* KeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR UnwrappedKey, CSSM_DATA_PTR DescriptiveData, ulong Privilege);
	int CSSM_DeriveKey (ulong CCHandle, CSSM_DATA_PTR Param, uint KeyUsage, uint KeyAttr, CSSM_DATA* KeyLabel, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, CSSM_KEY_PTR DerivedKey);
	int CSSM_FreeKey (int CSPHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_KEY_PTR KeyPtr, int Delete);
	int CSSM_GenerateAlgorithmParams (ulong CCHandle, uint ParamBits, CSSM_DATA_PTR Param);
	int CSSM_CSP_GetOperationalStatistics (int CSPHandle, CSSM_CSP_OPERATIONAL_STATISTICS* Statistics);
	int CSSM_GetTimeValue (int CSPHandle, uint TimeAlgorithm, CSSM_DATA* TimeData);
	int CSSM_RetrieveUniqueId (int CSPHandle, CSSM_DATA_PTR UniqueID);
	int CSSM_RetrieveCounter (int CSPHandle, CSSM_DATA_PTR Counter);
	int CSSM_VerifyDevice (int CSPHandle, CSSM_DATA* DeviceCert);
	int CSSM_CSP_PassThrough (ulong CCHandle, uint PassThroughId, void* InData, void** OutData);
	int CSSM_TP_SubmitCredRequest (int TPHandle, CSSM_TP_AUTHORITY_ID* PreferredAuthority, uint RequestType, CSSM_TP_REQUEST_SET* RequestInput, CSSM_TP_CALLERAUTH_CONTEXT* CallerAuthContext, sint32* EstimatedTime, CSSM_DATA_PTR ReferenceIdentifier);
	int CSSM_TP_RetrieveCredResult (int TPHandle, CSSM_DATA* ReferenceIdentifier, CSSM_TP_CALLERAUTH_CONTEXT* CallerAuthCredentials, sint32* EstimatedTime, CSSM_BOOL* ConfirmationRequired, CSSM_TP_RESULT_SET_PTR* RetrieveOutput);
	int CSSM_TP_ConfirmCredResult (int TPHandle, CSSM_DATA* ReferenceIdentifier, CSSM_TP_CALLERAUTH_CONTEXT* CallerAuthCredentials, CSSM_TP_CONFIRM_RESPONSE* Responses, CSSM_TP_AUTHORITY_ID* PreferredAuthority);
	int CSSM_TP_ReceiveConfirmation (int TPHandle, CSSM_DATA* ReferenceIdentifier, CSSM_TP_CONFIRM_RESPONSE_PTR* Responses, int* ElapsedTime);
	int CSSM_TP_CertReclaimKey (int TPHandle, CSSM_CERTGROUP* CertGroup, uint CertIndex, ulong KeyCacheHandle, int CSPHandle, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry);
	int CSSM_TP_CertReclaimAbort (int TPHandle, ulong KeyCacheHandle);
	int CSSM_TP_FormRequest (int TPHandle, CSSM_TP_AUTHORITY_ID* PreferredAuthority, uint FormType, CSSM_DATA_PTR BlankForm);
	int CSSM_TP_FormSubmit (int TPHandle, uint FormType, CSSM_DATA* Form, CSSM_TP_AUTHORITY_ID* ClearanceAuthority, CSSM_TP_AUTHORITY_ID* RepresentedAuthority, CSSM_ACCESS_CREDENTIALS_PTR Credentials);
	int CSSM_TP_CertGroupVerify (int TPHandle, int CLHandle, int CSPHandle, CSSM_CERTGROUP* CertGroupToBeVerified, CSSM_TP_VERIFY_CONTEXT* VerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR VerifyContextResult);
	int CSSM_TP_CertCreateTemplate (int TPHandle, int CLHandle, uint NumberOfFields, CSSM_FIELD* CertFields, CSSM_DATA_PTR CertTemplate);
	int CSSM_TP_CertGetAllTemplateFields (int TPHandle, int CLHandle, CSSM_DATA* CertTemplate, uint* NumberOfFields, CSSM_FIELD_PTR* CertFields);
	int CSSM_TP_CertSign (int TPHandle, int CLHandle, ulong CCHandle, CSSM_DATA* CertTemplateToBeSigned, CSSM_CERTGROUP* SignerCertGroup, CSSM_TP_VERIFY_CONTEXT* SignerVerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR SignerVerifyResult, CSSM_DATA_PTR SignedCert);
	int CSSM_TP_CrlVerify (int TPHandle, int CLHandle, int CSPHandle, CSSM_ENCODED_CRL* CrlToBeVerified, CSSM_CERTGROUP* SignerCertGroup, CSSM_TP_VERIFY_CONTEXT* VerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR RevokerVerifyResult);
	int CSSM_TP_CrlCreateTemplate (int TPHandle, int CLHandle, uint NumberOfFields, CSSM_FIELD* CrlFields, CSSM_DATA_PTR NewCrlTemplate);
	int CSSM_TP_CertRevoke (int TPHandle, int CLHandle, int CSPHandle, CSSM_DATA* OldCrlTemplate, CSSM_CERTGROUP* CertGroupToBeRevoked, CSSM_CERTGROUP* RevokerCertGroup, CSSM_TP_VERIFY_CONTEXT* RevokerVerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR RevokerVerifyResult, uint Reason, CSSM_DATA_PTR NewCrlTemplate);
	int CSSM_TP_CertRemoveFromCrlTemplate (int TPHandle, int CLHandle, int CSPHandle, CSSM_DATA* OldCrlTemplate, CSSM_CERTGROUP* CertGroupToBeRemoved, CSSM_CERTGROUP* RevokerCertGroup, CSSM_TP_VERIFY_CONTEXT* RevokerVerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR RevokerVerifyResult, CSSM_DATA_PTR NewCrlTemplate);
	int CSSM_TP_CrlSign (int TPHandle, int CLHandle, ulong CCHandle, CSSM_ENCODED_CRL* CrlToBeSigned, CSSM_CERTGROUP* SignerCertGroup, CSSM_TP_VERIFY_CONTEXT* SignerVerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR SignerVerifyResult, CSSM_DATA_PTR SignedCrl);
	int CSSM_TP_ApplyCrlToDb (int TPHandle, int CLHandle, int CSPHandle, CSSM_ENCODED_CRL* CrlToBeApplied, CSSM_CERTGROUP* SignerCertGroup, CSSM_TP_VERIFY_CONTEXT* ApplyCrlVerifyContext, CSSM_TP_VERIFY_CONTEXT_RESULT_PTR ApplyCrlVerifyResult);
	int CSSM_TP_CertGroupConstruct (int TPHandle, int CLHandle, int CSPHandle, CSSM_DL_DB_LIST* DBList, void* ConstructParams, CSSM_CERTGROUP* CertGroupFrag, CSSM_CERTGROUP_PTR* CertGroup);
	int CSSM_TP_CertGroupPrune (int TPHandle, int CLHandle, CSSM_DL_DB_LIST* DBList, CSSM_CERTGROUP* OrderedCertGroup, CSSM_CERTGROUP_PTR* PrunedCertGroup);
	int CSSM_TP_CertGroupToTupleGroup (int TPHandle, int CLHandle, CSSM_CERTGROUP* CertGroup, CSSM_TUPLEGROUP_PTR* TupleGroup);
	int CSSM_TP_TupleGroupToCertGroup (int TPHandle, int CLHandle, CSSM_TUPLEGROUP* TupleGroup, CSSM_CERTGROUP_PTR* CertTemplates);
	int CSSM_TP_PassThrough (int TPHandle, int CLHandle, ulong CCHandle, CSSM_DL_DB_LIST* DBList, uint PassThroughId, void* InputParams, void** OutputParams);
	int CSSM_AC_AuthCompute (int ACHandle, CSSM_TUPLEGROUP* BaseAuthorizations, CSSM_TUPLEGROUP* Credentials, uint NumberOfRequestors, CSSM_LIST* Requestors, CSSM_LIST* RequestedAuthorizationPeriod, CSSM_LIST* RequestedAuthorization, CSSM_TUPLEGROUP_PTR AuthorizationResult);
	int CSSM_AC_PassThrough (int ACHandle, int TPHandle, int CLHandle, ulong CCHandle, CSSM_DL_DB_LIST* DBList, uint PassThroughId, void* InputParams, void** OutputParams);
	int CSSM_CL_CertCreateTemplate (int CLHandle, uint NumberOfFields, CSSM_FIELD* CertFields, CSSM_DATA_PTR CertTemplate);
	int CSSM_CL_CertGetAllTemplateFields (int CLHandle, CSSM_DATA* CertTemplate, uint* NumberOfFields, CSSM_FIELD_PTR* CertFields);
	int CSSM_CL_CertSign (int CLHandle, ulong CCHandle, CSSM_DATA* CertTemplate, CSSM_FIELD* SignScope, uint ScopeSize, CSSM_DATA_PTR SignedCert);
	int CSSM_CL_CertVerify (int CLHandle, ulong CCHandle, CSSM_DATA* CertToBeVerified, CSSM_DATA* SignerCert, CSSM_FIELD* VerifyScope, uint ScopeSize);
	int CSSM_CL_CertVerifyWithKey (int CLHandle, ulong CCHandle, CSSM_DATA* CertToBeVerified);
	int CSSM_CL_CertGetFirstFieldValue (int CLHandle, CSSM_DATA* Cert, CSSM_OID* CertField, CSSM_HANDLE_PTR ResultsHandle, uint* NumberOfMatchedFields, CSSM_DATA_PTR* Value);
	int CSSM_CL_CertGetNextFieldValue (int CLHandle, int ResultsHandle, CSSM_DATA_PTR* Value);
	int CSSM_CL_CertAbortQuery (int CLHandle, int ResultsHandle);
	int CSSM_CL_CertGetKeyInfo (int CLHandle, CSSM_DATA* Cert, CSSM_KEY_PTR* Key);
	int CSSM_CL_CertGetAllFields (int CLHandle, CSSM_DATA* Cert, uint* NumberOfFields, CSSM_FIELD_PTR* CertFields);
	int CSSM_CL_FreeFields (int CLHandle, uint NumberOfFields, CSSM_FIELD_PTR* Fields);
	int CSSM_CL_FreeFieldValue (int CLHandle, CSSM_OID* CertOrCrlOid, CSSM_DATA_PTR Value);
	int CSSM_CL_CertCache (int CLHandle, CSSM_DATA* Cert, CSSM_HANDLE_PTR CertHandle);
	int CSSM_CL_CertGetFirstCachedFieldValue (int CLHandle, int CertHandle, CSSM_OID* CertField, CSSM_HANDLE_PTR ResultsHandle, uint* NumberOfMatchedFields, CSSM_DATA_PTR* Value);
	int CSSM_CL_CertGetNextCachedFieldValue (int CLHandle, int ResultsHandle, CSSM_DATA_PTR* Value);
	int CSSM_CL_CertAbortCache (int CLHandle, int CertHandle);
	int CSSM_CL_CertGroupToSignedBundle (int CLHandle, ulong CCHandle, CSSM_CERTGROUP* CertGroupToBundle, CSSM_CERT_BUNDLE_HEADER* BundleInfo, CSSM_DATA_PTR SignedBundle);
	int CSSM_CL_CertGroupFromVerifiedBundle (int CLHandle, ulong CCHandle, CSSM_CERT_BUNDLE* CertBundle, CSSM_DATA* SignerCert, CSSM_CERTGROUP_PTR* CertGroup);
	int CSSM_CL_CertDescribeFormat (int CLHandle, uint* NumberOfFields, CSSM_OID_PTR* OidList);
	int CSSM_CL_CrlCreateTemplate (int CLHandle, uint NumberOfFields, CSSM_FIELD* CrlTemplate, CSSM_DATA_PTR NewCrl);
	int CSSM_CL_CrlSetFields (int CLHandle, uint NumberOfFields, CSSM_FIELD* CrlTemplate, CSSM_DATA* OldCrl, CSSM_DATA_PTR ModifiedCrl);
	int CSSM_CL_CrlAddCert (int CLHandle, ulong CCHandle, CSSM_DATA* Cert, uint NumberOfFields, CSSM_FIELD* CrlEntryFields, CSSM_DATA* OldCrl, CSSM_DATA_PTR NewCrl);
	int CSSM_CL_CrlRemoveCert (int CLHandle, CSSM_DATA* Cert, CSSM_DATA* OldCrl, CSSM_DATA_PTR NewCrl);
	int CSSM_CL_CrlSign (int CLHandle, ulong CCHandle, CSSM_DATA* UnsignedCrl, CSSM_FIELD* SignScope, uint ScopeSize, CSSM_DATA_PTR SignedCrl);
	int CSSM_CL_CrlVerify (int CLHandle, ulong CCHandle, CSSM_DATA* CrlToBeVerified, CSSM_DATA* SignerCert, CSSM_FIELD* VerifyScope, uint ScopeSize);
	int CSSM_CL_CrlVerifyWithKey (int CLHandle, ulong CCHandle, CSSM_DATA* CrlToBeVerified);
	int CSSM_CL_IsCertInCrl (int CLHandle, CSSM_DATA* Cert, CSSM_DATA* Crl, CSSM_BOOL* CertFound);
	int CSSM_CL_CrlGetFirstFieldValue (int CLHandle, CSSM_DATA* Crl, CSSM_OID* CrlField, CSSM_HANDLE_PTR ResultsHandle, uint* NumberOfMatchedFields, CSSM_DATA_PTR* Value);
	int CSSM_CL_CrlGetNextFieldValue (int CLHandle, int ResultsHandle, CSSM_DATA_PTR* Value);
	int CSSM_CL_CrlAbortQuery (int CLHandle, int ResultsHandle);
	int CSSM_CL_CrlGetAllFields (int CLHandle, CSSM_DATA* Crl, uint* NumberOfCrlFields, CSSM_FIELD_PTR* CrlFields);
	int CSSM_CL_CrlCache (int CLHandle, CSSM_DATA* Crl, CSSM_HANDLE_PTR CrlHandle);
	int CSSM_CL_IsCertInCachedCrl (int CLHandle, CSSM_DATA* Cert, int CrlHandle, CSSM_BOOL* CertFound, CSSM_DATA_PTR CrlRecordIndex);
	int CSSM_CL_CrlGetFirstCachedFieldValue (int CLHandle, int CrlHandle, CSSM_DATA* CrlRecordIndex, CSSM_OID* CrlField, CSSM_HANDLE_PTR ResultsHandle, uint* NumberOfMatchedFields, CSSM_DATA_PTR* Value);
	int CSSM_CL_CrlGetNextCachedFieldValue (int CLHandle, int ResultsHandle, CSSM_DATA_PTR* Value);
	int CSSM_CL_CrlGetAllCachedRecordFields (int CLHandle, int CrlHandle, CSSM_DATA* CrlRecordIndex, uint* NumberOfFields, CSSM_FIELD_PTR* CrlFields);
	int CSSM_CL_CrlAbortCache (int CLHandle, int CrlHandle);
	int CSSM_CL_CrlDescribeFormat (int CLHandle, uint* NumberOfFields, CSSM_OID_PTR* OidList);
	int CSSM_CL_PassThrough (int CLHandle, ulong CCHandle, uint PassThroughId, void* InputParams, void** OutputParams);
	int CSSM_DL_DbOpen (int DLHandle, char* DbName, CSSM_NET_ADDRESS* DbLocation, uint AccessRequest, CSSM_ACCESS_CREDENTIALS* AccessCred, void* OpenParameters, CSSM_DB_HANDLE* DbHandle);
	int CSSM_DL_DbClose (CSSM_DL_DB_HANDLE DLDBHandle);
	int CSSM_DL_DbCreate (int DLHandle, char* DbName, CSSM_NET_ADDRESS* DbLocation, CSSM_DBINFO* DBInfo, uint AccessRequest, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, void* OpenParameters, CSSM_DB_HANDLE* DbHandle);
	int CSSM_DL_DbDelete (int DLHandle, char* DbName, CSSM_NET_ADDRESS* DbLocation, CSSM_ACCESS_CREDENTIALS* AccessCred);
	int CSSM_DL_CreateRelation (CSSM_DL_DB_HANDLE DLDBHandle, uint RelationID, char* RelationName, uint NumberOfAttributes, CSSM_DB_SCHEMA_ATTRIBUTE_INFO* pAttributeInfo, uint NumberOfIndexes, CSSM_DB_SCHEMA_INDEX_INFO* pIndexInfo);
	int CSSM_DL_DestroyRelation (CSSM_DL_DB_HANDLE DLDBHandle, uint RelationID);
	int CSSM_DL_Authenticate (CSSM_DL_DB_HANDLE DLDBHandle, uint AccessRequest, CSSM_ACCESS_CREDENTIALS* AccessCred);
	int CSSM_DL_GetDbAcl (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_STRING* SelectionTag, uint* NumberOfAclInfos, CSSM_ACL_ENTRY_INFO_PTR* AclInfos);
	int CSSM_DL_ChangeDbAcl (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_ACL_EDIT* AclEdit);
	int CSSM_DL_GetDbOwner (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_ACL_OWNER_PROTOTYPE_PTR Owner);
	int CSSM_DL_ChangeDbOwner (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_ACCESS_CREDENTIALS* AccessCred, CSSM_ACL_OWNER_PROTOTYPE* NewOwner);
	int CSSM_DL_GetDbNames (int DLHandle, CSSM_NAME_LIST_PTR* NameList);
	int CSSM_DL_GetDbNameFromHandle (CSSM_DL_DB_HANDLE DLDBHandle, char** DbName);
	int CSSM_DL_FreeNameList (int DLHandle, CSSM_NAME_LIST_PTR NameList);
	int CSSM_DL_DataInsert (CSSM_DL_DB_HANDLE DLDBHandle, uint RecordType, CSSM_DB_RECORD_ATTRIBUTE_DATA* Attributes, CSSM_DATA* Data, CSSM_DB_UNIQUE_RECORD_PTR* UniqueId);
	int CSSM_DL_DataDelete (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_DB_UNIQUE_RECORD* UniqueRecordIdentifier);
	int CSSM_DL_DataModify (CSSM_DL_DB_HANDLE DLDBHandle, uint RecordType, CSSM_DB_UNIQUE_RECORD_PTR UniqueRecordIdentifier, CSSM_DB_RECORD_ATTRIBUTE_DATA* AttributesToBeModified, CSSM_DATA* DataToBeModified, uint ModifyMode);
	int CSSM_DL_DataGetFirst (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_QUERY* Query, CSSM_HANDLE_PTR ResultsHandle, CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes, CSSM_DATA_PTR Data, CSSM_DB_UNIQUE_RECORD_PTR* UniqueId);
	int CSSM_DL_DataGetNext (CSSM_DL_DB_HANDLE DLDBHandle, int ResultsHandle, CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes, CSSM_DATA_PTR Data, CSSM_DB_UNIQUE_RECORD_PTR* UniqueId);
	int CSSM_DL_DataAbortQuery (CSSM_DL_DB_HANDLE DLDBHandle, int ResultsHandle);
	int CSSM_DL_DataGetFromUniqueRecordId (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_DB_UNIQUE_RECORD* UniqueRecord, CSSM_DB_RECORD_ATTRIBUTE_DATA_PTR Attributes, CSSM_DATA_PTR Data);
	int CSSM_DL_FreeUniqueRecord (CSSM_DL_DB_HANDLE DLDBHandle, CSSM_DB_UNIQUE_RECORD_PTR UniqueRecord);
	int CSSM_DL_PassThrough (CSSM_DL_DB_HANDLE DLDBHandle, uint PassThroughId, void* InputParams, void** OutputParams);
}