Mercurial > projects > dstep
view dstep/coreservices/osservices/KeychainCore.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.coreservices.osservices.KeychainCore; //import dstep.AvailabilityMacros; import dstep.coreservices.carboncore.Aliases; import dstep.coreservices.carboncore.CodeFragments; import dstep.coreservices.carboncore.Files; import dstep.coreservices.carboncore.MacErrors; import dstep.coreservices.carboncore.MacTypes; import dstep.objc.bridge.TypeEncoding; struct OpaqueSecKeychainRef; struct OpaqueSecKeychainItemRef; struct OpaqueSecKeychainSearchRef; alias OpaqueSecKeychainRef* SecKeychainRef; alias OpaqueSecKeychainItemRef* SecKeychainItemRef; alias OpaqueSecKeychainSearchRef* SecKeychainSearchRef; alias uint SecKeychainAttrType; alias uint SecKeychainStatus; alias SecKeychainAttribute* SecKeychainAttributePtr; alias SecKeychainRef KCRef; alias SecKeychainItemRef KCItemRef; alias SecKeychainSearchRef KCSearchRef; alias SecKeychainAttribute KCAttribute; alias SecKeychainAttributeList KCAttributeList; alias uint KCAttrType; alias uint KCStatus; alias ushort KCEvent; alias ushort KCEventMask; alias uint KCItemClass; alias uint KCItemAttr; alias uint KCAuthType; alias uint KCProtocolType; alias uint KCCertAddOptions; alias ushort KCVerifyStopOn; alias uint KCCertSearchOptions; alias KCCallbackProcPtr KCCallbackUPP; alias ubyte[16] AFPServerSignature; extern (C) { alias int function (ushort, KCCallbackInfo*, void*) KCCallbackProcPtr; } // This is needed otherwise the enums will fail compiling with gdc version (GNU) { private { const __kCertificateKCItemClass = getOSType!("cert"); const __kAppleSharePasswordKCItemClass = getOSType!("ashp"); const __kInternetPasswordKCItemClass = getOSType!("inet"); const __kGenericPasswordKCItemClass = getOSType!("genp"); const __kClassKCItemAttr = getOSType!("clas"); const __kCreationDateKCItemAttr = getOSType!("cdat"); const __kModDateKCItemAttr = getOSType!("mdat"); const __kDescriptionKCItemAttr = getOSType!("desc"); const __kCommentKCItemAttr = getOSType!("icmt"); const __kCreatorKCItemAttr = getOSType!("crtr"); const __kTypeKCItemAttr = getOSType!("type"); const __kScriptCodeKCItemAttr = getOSType!("scrp"); const __kLabelKCItemAttr = getOSType!("labl"); const __kInvisibleKCItemAttr = getOSType!("invi"); const __kNegativeKCItemAttr = getOSType!("nega"); const __kCustomIconKCItemAttr = getOSType!("cusi"); const __kAccountKCItemAttr = getOSType!("acct"); const __kServiceKCItemAttr = getOSType!("svce"); const __kGenericKCItemAttr = getOSType!("gena"); const __kSecurityDomainKCItemAttr = getOSType!("sdmn"); const __kServerKCItemAttr = getOSType!("srvr"); const __kAuthTypeKCItemAttr = getOSType!("atyp"); const __kPortKCItemAttr = getOSType!("port"); const __kPathKCItemAttr = getOSType!("path"); const __kVolumeKCItemAttr = getOSType!("vlme"); const __kAddressKCItemAttr = getOSType!("addr"); const __kSignatureKCItemAttr = getOSType!("ssig"); const __kProtocolKCItemAttr = getOSType!("ptcl"); const __kSubjectKCItemAttr = getOSType!("subj"); const __kCommonNameKCItemAttr = getOSType!("cn "); const __kIssuerKCItemAttr = getOSType!("issu"); const __kSerialNumberKCItemAttr = getOSType!("snbr"); const __kEMailKCItemAttr = getOSType!("mail"); const __kPublicKeyHashKCItemAttr = getOSType!("hpky"); const __kIssuerURLKCItemAttr = getOSType!("iurl"); const __kEncryptKCItemAttr = getOSType!("encr"); const __kDecryptKCItemAttr = getOSType!("decr"); const __kSignKCItemAttr = getOSType!("sign"); const __kVerifyKCItemAttr = getOSType!("veri"); const __kWrapKCItemAttr = getOSType!("wrap"); const __kUnwrapKCItemAttr = getOSType!("unwr"); const __kStartDateKCItemAttr = getOSType!("sdat"); const __kEndDateKCItemAttr = getOSType!("edat"); const __kKCAuthTypeNTLM = getOSType!("ntlm"); const __kKCAuthTypeMSN = getOSType!("msna"); const __kKCAuthTypeDPA = getOSType!("dpaa"); const __kKCAuthTypeRPA = getOSType!("rpaa"); const __kKCAuthTypeHTTPDigest = getOSType!("httd"); const __kKCAuthTypeDefault = getOSType!("dflt"); const __kKCProtocolTypeFTP = getOSType!("ftp "); const __kKCProtocolTypeFTPAccount = getOSType!("ftpa"); const __kKCProtocolTypeHTTP = getOSType!("http"); const __kKCProtocolTypeIRC = getOSType!("irc "); const __kKCProtocolTypeNNTP = getOSType!("nntp"); const __kKCProtocolTypePOP3 = getOSType!("pop3"); const __kKCProtocolTypeSMTP = getOSType!("smtp"); const __kKCProtocolTypeSOCKS = getOSType!("sox "); const __kKCProtocolTypeIMAP = getOSType!("imap"); const __kKCProtocolTypeLDAP = getOSType!("ldap"); const __kKCProtocolTypeAppleTalk = getOSType!("atlk"); const __kKCProtocolTypeAFP = getOSType!("afp "); const __kKCProtocolTypeTelnet = getOSType!("teln"); } } enum { kIdleKCEvent = 0, kLockKCEvent = 1, kUnlockKCEvent = 2, kAddKCEvent = 3, kDeleteKCEvent = 4, kUpdateKCEvent = 5, kPasswordChangedKCEvent = 6, kSystemKCEvent = 8, kDefaultChangedKCEvent = 9, kDataAccessKCEvent = 10, kKeychainListChangedKCEvent = 11 } enum { kIdleKCEventMask = 1 << kIdleKCEvent, kLockKCEventMask = 1 << kLockKCEvent, kUnlockKCEventMask = 1 << kUnlockKCEvent, kAddKCEventMask = 1 << kAddKCEvent, kDeleteKCEventMask = 1 << kDeleteKCEvent, kUpdateKCEventMask = 1 << kUpdateKCEvent, kPasswordChangedKCEventMask = 1 << kPasswordChangedKCEvent, kSystemEventKCEventMask = 1 << kSystemKCEvent, kDefaultChangedKCEventMask = 1 << kDefaultChangedKCEvent, kDataAccessKCEventMask = 1 << kDataAccessKCEvent, kEveryKCEventMask = 0xFFFF } enum { kUnlockStateKCStatus = 1, kRdPermKCStatus = 2, kWrPermKCStatus = 4 } enum { kCertificateKCItemClass = getOSType!("cert"), kAppleSharePasswordKCItemClass = getOSType!("ashp"), kInternetPasswordKCItemClass = getOSType!("inet"), kGenericPasswordKCItemClass = getOSType!("genp") } enum { kClassKCItemAttr = getOSType!("clas"), kCreationDateKCItemAttr = getOSType!("cdat"), kModDateKCItemAttr = getOSType!("mdat"), kDescriptionKCItemAttr = getOSType!("desc"), kCommentKCItemAttr = getOSType!("icmt"), kCreatorKCItemAttr = getOSType!("crtr"), kTypeKCItemAttr = getOSType!("type"), kScriptCodeKCItemAttr = getOSType!("scrp"), kLabelKCItemAttr = getOSType!("labl"), kInvisibleKCItemAttr = getOSType!("invi"), kNegativeKCItemAttr = getOSType!("nega"), kCustomIconKCItemAttr = getOSType!("cusi"), kAccountKCItemAttr = getOSType!("acct"), kServiceKCItemAttr = getOSType!("svce"), kGenericKCItemAttr = getOSType!("gena"), kSecurityDomainKCItemAttr = getOSType!("sdmn"), kServerKCItemAttr = getOSType!("srvr"), kAuthTypeKCItemAttr = getOSType!("atyp"), kPortKCItemAttr = getOSType!("port"), kPathKCItemAttr = getOSType!("path"), kVolumeKCItemAttr = getOSType!("vlme"), kAddressKCItemAttr = getOSType!("addr"), kSignatureKCItemAttr = getOSType!("ssig"), kProtocolKCItemAttr = getOSType!("ptcl"), kSubjectKCItemAttr = getOSType!("subj"), kCommonNameKCItemAttr = getOSType!("cn "), kIssuerKCItemAttr = getOSType!("issu"), kSerialNumberKCItemAttr = getOSType!("snbr"), kEMailKCItemAttr = getOSType!("mail"), kPublicKeyHashKCItemAttr = getOSType!("hpky"), kIssuerURLKCItemAttr = getOSType!("iurl"), kEncryptKCItemAttr = getOSType!("encr"), kDecryptKCItemAttr = getOSType!("decr"), kSignKCItemAttr = getOSType!("sign"), kVerifyKCItemAttr = getOSType!("veri"), kWrapKCItemAttr = getOSType!("wrap"), kUnwrapKCItemAttr = getOSType!("unwr"), kStartDateKCItemAttr = getOSType!("sdat"), kEndDateKCItemAttr = getOSType!("edat") } enum { kKCAuthTypeNTLM = getOSType!("ntlm"), kKCAuthTypeMSN = getOSType!("msna"), kKCAuthTypeDPA = getOSType!("dpaa"), kKCAuthTypeRPA = getOSType!("rpaa"), kKCAuthTypeHTTPDigest = getOSType!("httd"), kKCAuthTypeDefault = getOSType!("dflt") } enum { kKCProtocolTypeFTP = getOSType!("ftp "), kKCProtocolTypeFTPAccount = getOSType!("ftpa"), kKCProtocolTypeHTTP = getOSType!("http"), kKCProtocolTypeIRC = getOSType!("irc "), kKCProtocolTypeNNTP = getOSType!("nntp"), kKCProtocolTypePOP3 = getOSType!("pop3"), kKCProtocolTypeSMTP = getOSType!("smtp"), kKCProtocolTypeSOCKS = getOSType!("sox "), kKCProtocolTypeIMAP = getOSType!("imap"), kKCProtocolTypeLDAP = getOSType!("ldap"), kKCProtocolTypeAppleTalk = getOSType!("atlk"), kKCProtocolTypeAFP = getOSType!("afp "), kKCProtocolTypeTelnet = getOSType!("teln") } enum { kSecOptionReserved = 0x000000FF, kCertUsageShift = 8, kCertUsageSigningAdd = 1 << (kCertUsageShift + 0), kCertUsageSigningAskAndAdd = 1 << (kCertUsageShift + 1), kCertUsageVerifyAdd = 1 << (kCertUsageShift + 2), kCertUsageVerifyAskAndAdd = 1 << (kCertUsageShift + 3), kCertUsageEncryptAdd = 1 << (kCertUsageShift + 4), kCertUsageEncryptAskAndAdd = 1 << (kCertUsageShift + 5), kCertUsageDecryptAdd = 1 << (kCertUsageShift + 6), kCertUsageDecryptAskAndAdd = 1 << (kCertUsageShift + 7), kCertUsageKeyExchAdd = 1 << (kCertUsageShift + 8), kCertUsageKeyExchAskAndAdd = 1 << (kCertUsageShift + 9), kCertUsageRootAdd = 1 << (kCertUsageShift + 10), kCertUsageRootAskAndAdd = 1 << (kCertUsageShift + 11), kCertUsageSSLAdd = 1 << (kCertUsageShift + 12), kCertUsageSSLAskAndAdd = 1 << (kCertUsageShift + 13), kCertUsageAllAdd = 0x7FFFFF00 } enum { kPolicyKCStopOn = 0, kNoneKCStopOn = 1, kFirstPassKCStopOn = 2, kFirstFailKCStopOn = 3 } enum { kCertSearchShift = 0, kCertSearchSigningIgnored = 0, kCertSearchSigningAllowed = 1 << (kCertSearchShift + 0), kCertSearchSigningDisallowed = 1 << (kCertSearchShift + 1), kCertSearchSigningMask = ((kCertSearchSigningAllowed) | (kCertSearchSigningDisallowed)), kCertSearchVerifyIgnored = 0, kCertSearchVerifyAllowed = 1 << (kCertSearchShift + 2), kCertSearchVerifyDisallowed = 1 << (kCertSearchShift + 3), kCertSearchVerifyMask = ((kCertSearchVerifyAllowed) | (kCertSearchVerifyDisallowed)), kCertSearchEncryptIgnored = 0, kCertSearchEncryptAllowed = 1 << (kCertSearchShift + 4), kCertSearchEncryptDisallowed = 1 << (kCertSearchShift + 5), kCertSearchEncryptMask = ((kCertSearchEncryptAllowed) | (kCertSearchEncryptDisallowed)), kCertSearchDecryptIgnored = 0, kCertSearchDecryptAllowed = 1 << (kCertSearchShift + 6), kCertSearchDecryptDisallowed = 1 << (kCertSearchShift + 7), kCertSearchDecryptMask = ((kCertSearchDecryptAllowed) | (kCertSearchDecryptDisallowed)), kCertSearchWrapIgnored = 0, kCertSearchWrapAllowed = 1 << (kCertSearchShift + 8), kCertSearchWrapDisallowed = 1 << (kCertSearchShift + 9), kCertSearchWrapMask = ((kCertSearchWrapAllowed) | (kCertSearchWrapDisallowed)), kCertSearchUnwrapIgnored = 0, kCertSearchUnwrapAllowed = 1 << (kCertSearchShift + 10), kCertSearchUnwrapDisallowed = 1 << (kCertSearchShift + 11), kCertSearchUnwrapMask = ((kCertSearchUnwrapAllowed) | (kCertSearchUnwrapDisallowed)), kCertSearchPrivKeyRequired = 1 << (kCertSearchShift + 12), kCertSearchAny = 0 } enum { kAnyPort = 0 } enum { kAnyProtocol = 0, kAnyAuthType = 0 } struct SecKeychainAttribute { uint tag; uint length; void* data; } struct SecKeychainAttributeList { uint count; SecKeychainAttribute* attr; } struct KCCallbackInfo { uint version_; KCItemRef item; SInt32* processID; SInt32* event; KCRef keychain; } extern (C) { int KCGetKeychainManagerVersion (UInt32* returnVers); int KCSetInteractionAllowed (ubyte state); ubyte KCIsInteractionAllowed (); int KCMakeKCRefFromFSRef (FSRef* keychainFSRef, KCRef* keychain); int KCMakeKCRefFromAlias (AliasHandle keychainAlias, KCRef* keychain); int KCMakeAliasFromKCRef (KCRef keychain, AliasHandle* keychainAlias); int KCReleaseKeychain (KCRef* keychain); int KCGetDefaultKeychain (KCRef* keychain); int KCSetDefaultKeychain (KCRef keychain); int KCGetStatus (KCRef keychain, UInt32* keychainStatus); int KCGetKeychain (KCItemRef item, KCRef* keychain); int KCGetKeychainName (KCRef keychain, char* keychainName); ushort KCCountKeychains (); int KCGetIndKeychain (ushort index, KCRef* keychain); KCCallbackUPP NewKCCallbackUPP (KCCallbackProcPtr userRoutine); void DisposeKCCallbackUPP (KCCallbackUPP userUPP); int InvokeKCCallbackUPP (ushort keychainEvent, KCCallbackInfo* info, void* userContext, KCCallbackUPP userUPP); int KCFindAppleSharePassword (AFPServerSignature* serverSignature, char* serverAddress, char* serverName, char* volumeName, char* accountName, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int KCFindInternetPassword (char* serverName, char* securityDomain, char* accountName, ushort port, uint protocol, uint authType, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int KCFindInternetPasswordWithPath (char* serverName, char* securityDomain, char* accountName, char* path, ushort port, uint protocol, uint authType, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int KCFindGenericPassword (char* serviceName, char* accountName, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int KCAddCallback (KCCallbackUPP callbackProc, ushort eventMask, void* userContext); int KCRemoveCallback (KCCallbackUPP callbackProc); int KCNewItem (uint itemClass, uint itemCreator, uint length, void* data, KCItemRef* item); int KCSetAttribute (KCItemRef item, KCAttribute* attr); int KCGetAttribute (KCItemRef item, KCAttribute* attr, UInt32* actualLength); int KCSetData (KCItemRef item, uint length, void* data); int KCUpdateItem (KCItemRef item); int KCReleaseItem (KCItemRef* item); int KCCopyItem (KCItemRef item, KCRef destKeychain, KCItemRef* copy); int KCFindFirstItem (KCRef keychain, KCAttributeList* attrList, KCSearchRef* search, KCItemRef* item); int KCFindNextItem (KCSearchRef search, KCItemRef* item); int KCReleaseSearch (KCSearchRef* search); int KCDeleteItem (KCItemRef item); int KCGetData (KCItemRef item, uint maxLength, void* data, UInt32* actualLength); int KCLock (KCRef keychain); int kcgetkeychainname (KCRef keychain, char* keychainName); int kcfindapplesharepassword (AFPServerSignature* serverSignature, char* serverAddress, char* serverName, char* volumeName, char* accountName, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int kcfindinternetpassword (char* serverName, char* securityDomain, char* accountName, ushort port, uint protocol, uint authType, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int kcfindinternetpasswordwithpath (char* serverName, char* securityDomain, char* accountName, char* path, ushort port, uint protocol, uint authType, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); int kcfindgenericpassword (char* serviceName, char* accountName, uint maxLength, void* passwordData, UInt32* actualLength, KCItemRef* item); }