view dstep/security/cssmkrapi.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.cssmkrapi;

import dstep.security.cssmtype;

alias uint CSSM_KRSP_HANDLE;
alias uint CSSM_KR_POLICY_TYPE;
alias uint CSSM_KR_POLICY_FLAGS;
alias CSSM_KR_POLICY_INFO* CSSM_KR_POLICY_INFO_PTR;
alias CSSM_KR_PROFILE* CSSM_KR_PROFILE_PTR;

struct CSSM_KR_NAME
{
	ubyte Type;
	ubyte Length;
	char* Name;
}


struct CSSM_KR_PROFILE
{
	CSSM_KR_NAME UserName;
	CSSM_CERTGROUP_PTR UserCertificate;
	CSSM_CERTGROUP_PTR KRSCertChain;
	ubyte LE_KRANum;
	CSSM_CERTGROUP_PTR LE_KRACertChainList;
	ubyte ENT_KRANum;
	CSSM_CERTGROUP_PTR ENT_KRACertChainList;
	ubyte INDIV_KRANum;
	CSSM_CERTGROUP_PTR INDIV_KRACertChainList;
	CSSM_DATA_PTR INDIV_AuthenticationInfo;
	uint KRSPFlags;
	CSSM_DATA_PTR KRSPExtensions;
}


struct CSSM_KR_WRAPPEDPRODUCT_INFO
{
	CSSM_VERSION StandardVersion;
	byte[68] StandardDescription;
	CSSM_VERSION ProductVersion;
	byte[68] ProductDescription;
	byte[68] ProductVendor;
	uint ProductFlags;
}


struct CSSM_KRSUBSERVICE
{
	uint SubServiceId;
	char* Description;
	CSSM_KR_WRAPPEDPRODUCT_INFO WrappedProduct;
}


struct CSSM_KR_POLICY_LIST_ITEM
{
	CSSM_KR_POLICY_LIST_ITEM* next;
	uint AlgorithmId;
	uint Mode;
	uint MaxKeyLength;
	uint MaxRounds;
	ubyte WorkFactor;
	uint PolicyFlags;
	uint AlgClass;
}


struct CSSM_KR_POLICY_INFO
{
	int krbNotAllowed;
	uint numberOfEntries;
	CSSM_KR_POLICY_LIST_ITEM* policyEntry;
}

extern (C)
{
	int CSSM_KR_SetEnterpriseRecoveryPolicy (CSSM_DATA* RecoveryPolicyFileName, CSSM_ACCESS_CREDENTIALS* OldPassPhrase, CSSM_ACCESS_CREDENTIALS* NewPassPhrase);
	int CSSM_KR_CreateRecoveryRegistrationContext (uint KRSPHandle, CSSM_CC_HANDLE* NewContext);
	int CSSM_KR_CreateRecoveryEnablementContext (uint KRSPHandle, CSSM_KR_PROFILE* LocalProfile, CSSM_KR_PROFILE* RemoteProfile, CSSM_CC_HANDLE* NewContext);
	int CSSM_KR_CreateRecoveryRequestContext (uint KRSPHandle, CSSM_KR_PROFILE* LocalProfile, CSSM_CC_HANDLE* NewContext);
	int CSSM_KR_GetPolicyInfo (ulong CCHandle, CSSM_KR_POLICY_FLAGS* EncryptionProhibited, uint* WorkFactor);
	int CSSM_KR_RegistrationRequest (ulong RecoveryRegistrationContext, CSSM_DATA* KRInData, CSSM_ACCESS_CREDENTIALS* AccessCredentials, uint KRFlags, int* EstimatedTime, CSSM_HANDLE_PTR ReferenceHandle);
	int CSSM_KR_RegistrationRetrieve (uint KRSPHandle, int ReferenceHandle, CSSM_ACCESS_CREDENTIALS* AccessCredentials, int* EstimatedTime, CSSM_KR_PROFILE_PTR KRProfile);
	int CSSM_KR_GenerateRecoveryFields (ulong KeyRecoveryContext, ulong CCHandle, CSSM_DATA* KRSPOptions, uint KRFlags, CSSM_DATA_PTR KRFields, CSSM_CC_HANDLE* NewCCHandle);
	int CSSM_KR_ProcessRecoveryFields (ulong KeyRecoveryContext, ulong CryptoContext, CSSM_DATA* KRSPOptions, uint KRFlags, CSSM_DATA* KRFields, CSSM_CC_HANDLE* NewCryptoContext);
	int CSSM_KR_RecoveryRequest (ulong RecoveryRequestContext, CSSM_DATA* KRInData, CSSM_ACCESS_CREDENTIALS* AccessCredentials, int* EstimatedTime, CSSM_HANDLE_PTR ReferenceHandle);
	int CSSM_KR_RecoveryRetrieve (uint KRSPHandle, int ReferenceHandle, CSSM_ACCESS_CREDENTIALS* AccessCredentials, int* EstimatedTime, CSSM_HANDLE_PTR CacheHandle, uint* NumberOfRecoveredKeys);
	int CSSM_KR_GetRecoveredObject (uint KRSPHandle, int CacheHandle, uint IndexInResults, int CSPHandle, CSSM_RESOURCE_CONTROL_CONTEXT* CredAndAclEntry, uint Flags, CSSM_KEY_PTR RecoveredKey, CSSM_DATA_PTR OtherInfo);
	int CSSM_KR_RecoveryRequestAbort (uint KRSPHandle, int CacheHandle);
	int CSSM_KR_QueryPolicyInfo (uint KRSPHandle, uint AlgorithmID, uint Mode, uint Class, CSSM_KR_POLICY_INFO_PTR* PolicyInfoData);
	int CSSM_KR_PassThrough (uint KRSPHandle, ulong KeyRecoveryContext, ulong CryptoContext, uint PassThroughId, void* InputParams, void** OutputParams);
}