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

import dstep.objc.bridge.TypeEncoding;
import dstep.security.SecBase;
import dstep.security.cssmapple;
import dstep.security.cssmtype;

alias uint SecItemClass;
alias uint SecItemAttr;

// This is needed otherwise the enums will fail compiling with gdc
version (GNU)
{
	private
	{
		const __kSecInternetPasswordItemClass = getOSType!("inet");
		const __kSecGenericPasswordItemClass = getOSType!("genp");
		const __kSecAppleSharePasswordItemClass = getOSType!("ashp");
		const __kSecCreationDateItemAttr = getOSType!("cdat");
		const __kSecModDateItemAttr = getOSType!("mdat");
		const __kSecDescriptionItemAttr = getOSType!("desc");
		const __kSecCommentItemAttr = getOSType!("icmt");
		const __kSecCreatorItemAttr = getOSType!("crtr");
		const __kSecTypeItemAttr = getOSType!("type");
		const __kSecScriptCodeItemAttr = getOSType!("scrp");
		const __kSecLabelItemAttr = getOSType!("labl");
		const __kSecInvisibleItemAttr = getOSType!("invi");
		const __kSecNegativeItemAttr = getOSType!("nega");
		const __kSecCustomIconItemAttr = getOSType!("cusi");
		const __kSecAccountItemAttr = getOSType!("acct");
		const __kSecServiceItemAttr = getOSType!("svce");
		const __kSecGenericItemAttr = getOSType!("gena");
		const __kSecSecurityDomainItemAttr = getOSType!("sdmn");
		const __kSecServerItemAttr = getOSType!("srvr");
		const __kSecAuthenticationTypeItemAttr = getOSType!("atyp");
		const __kSecPortItemAttr = getOSType!("port");
		const __kSecPathItemAttr = getOSType!("path");
		const __kSecVolumeItemAttr = getOSType!("vlme");
		const __kSecAddressItemAttr = getOSType!("addr");
		const __kSecSignatureItemAttr = getOSType!("ssig");
		const __kSecProtocolItemAttr = getOSType!("ptcl");
		const __kSecCertificateType = getOSType!("ctyp");
		const __kSecCertificateEncoding = getOSType!("cenc");
		const __kSecCrlType = getOSType!("crtp");
		const __kSecCrlEncoding = getOSType!("crnc");
		const __kSecAlias = getOSType!("alis");
	}
}

enum
{
	kSecInternetPasswordItemClass = getOSType!("inet"),
	kSecGenericPasswordItemClass = getOSType!("genp"),
	kSecAppleSharePasswordItemClass = getOSType!("ashp"),
	kSecCertificateItemClass = CSSM_DL_DB_RECORD_X509_CERTIFICATE,
	kSecPublicKeyItemClass = CSSM_DL_DB_RECORD_PUBLIC_KEY,
	kSecPrivateKeyItemClass = CSSM_DL_DB_RECORD_PRIVATE_KEY,
	kSecSymmetricKeyItemClass = CSSM_DL_DB_RECORD_SYMMETRIC_KEY
}

enum
{
	kSecCreationDateItemAttr = getOSType!("cdat"),
	kSecModDateItemAttr = getOSType!("mdat"),
	kSecDescriptionItemAttr = getOSType!("desc"),
	kSecCommentItemAttr = getOSType!("icmt"),
	kSecCreatorItemAttr = getOSType!("crtr"),
	kSecTypeItemAttr = getOSType!("type"),
	kSecScriptCodeItemAttr = getOSType!("scrp"),
	kSecLabelItemAttr = getOSType!("labl"),
	kSecInvisibleItemAttr = getOSType!("invi"),
	kSecNegativeItemAttr = getOSType!("nega"),
	kSecCustomIconItemAttr = getOSType!("cusi"),
	kSecAccountItemAttr = getOSType!("acct"),
	kSecServiceItemAttr = getOSType!("svce"),
	kSecGenericItemAttr = getOSType!("gena"),
	kSecSecurityDomainItemAttr = getOSType!("sdmn"),
	kSecServerItemAttr = getOSType!("srvr"),
	kSecAuthenticationTypeItemAttr = getOSType!("atyp"),
	kSecPortItemAttr = getOSType!("port"),
	kSecPathItemAttr = getOSType!("path"),
	kSecVolumeItemAttr = getOSType!("vlme"),
	kSecAddressItemAttr = getOSType!("addr"),
	kSecSignatureItemAttr = getOSType!("ssig"),
	kSecProtocolItemAttr = getOSType!("ptcl"),
	kSecCertificateType = getOSType!("ctyp"),
	kSecCertificateEncoding = getOSType!("cenc"),
	kSecCrlType = getOSType!("crtp"),
	kSecCrlEncoding = getOSType!("crnc"),
	kSecAlias = getOSType!("alis")
}

extern (C)
{
	uint SecKeychainItemGetTypeID ();
	int SecKeychainItemModifyAttributesAndData (SecKeychainItemRef itemRef, SecKeychainAttributeList* attrList, uint length, void* data);
	int SecKeychainItemCreateFromContent (uint itemClass, SecKeychainAttributeList* attrList, uint length, void* data, SecKeychainRef keychainRef, SecAccessRef initialAccess, SecKeychainItemRef* itemRef);
	int SecKeychainItemModifyContent (SecKeychainItemRef itemRef, SecKeychainAttributeList* attrList, uint length, void* data);
	int SecKeychainItemCopyContent (SecKeychainItemRef itemRef, SecItemClass* itemClass, SecKeychainAttributeList* attrList, uint* length, void** outData);
	int SecKeychainItemFreeContent (SecKeychainAttributeList* attrList, void* data);
	int SecKeychainItemCopyAttributesAndData (SecKeychainItemRef itemRef, SecKeychainAttributeInfo* info, SecItemClass* itemClass, SecKeychainAttributeList** attrList, uint* length, void** outData);
	int SecKeychainItemFreeAttributesAndData (SecKeychainAttributeList* attrList, void* data);
	int SecKeychainItemDelete (SecKeychainItemRef itemRef);
	int SecKeychainItemCopyKeychain (SecKeychainItemRef itemRef, SecKeychainRef* keychainRef);
	int SecKeychainItemCreateCopy (SecKeychainItemRef itemRef, SecKeychainRef destKeychainRef, SecAccessRef initialAccess, SecKeychainItemRef* itemCopy);
	int SecKeychainItemGetDLDBHandle (SecKeychainItemRef keyItemRef, CSSM_DL_DB_HANDLE* dldbHandle);
	int SecKeychainItemGetUniqueRecordID (SecKeychainItemRef itemRef, CSSM_DB_UNIQUE_RECORD** uniqueRecordID);
	int SecKeychainItemCopyAccess (SecKeychainItemRef itemRef, SecAccessRef* access);
	int SecKeychainItemSetAccess (SecKeychainItemRef itemRef, SecAccessRef access);
}