Mercurial > projects > dstep
view dstep/security/SecKeychain.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.SecKeychain; import dstep.corefoundation.CFArray; import dstep.corefoundation.CFBase; import dstep.objc.bridge.TypeEncoding; import dstep.security.SecBase; import dstep.security.cssmapple; import dstep.security.cssmtype; alias uint SecAuthenticationType; alias uint SecProtocolType; alias uint SecKeychainEvent; alias uint SecKeychainEventMask; extern (C) { alias int function (uint, SecKeychainCallbackInfo*, void*) SecKeychainCallback; } // This is needed otherwise the enums will fail compiling with gdc version (GNU) { private { const __kSecProtocolTypeFTP = getOSType!("ftp "); const __kSecProtocolTypeFTPAccount = getOSType!("ftpa"); const __kSecProtocolTypeHTTP = getOSType!("http"); const __kSecProtocolTypeIRC = getOSType!("irc "); const __kSecProtocolTypeNNTP = getOSType!("nntp"); const __kSecProtocolTypePOP3 = getOSType!("pop3"); const __kSecProtocolTypeSMTP = getOSType!("smtp"); const __kSecProtocolTypeSOCKS = getOSType!("sox "); const __kSecProtocolTypeIMAP = getOSType!("imap"); const __kSecProtocolTypeLDAP = getOSType!("ldap"); const __kSecProtocolTypeAppleTalk = getOSType!("atlk"); const __kSecProtocolTypeAFP = getOSType!("afp "); const __kSecProtocolTypeTelnet = getOSType!("teln"); const __kSecProtocolTypeSSH = getOSType!("ssh "); const __kSecProtocolTypeFTPS = getOSType!("ftps"); const __kSecProtocolTypeHTTPS = getOSType!("htps"); const __kSecProtocolTypeHTTPProxy = getOSType!("htpx"); const __kSecProtocolTypeHTTPSProxy = getOSType!("htsx"); const __kSecProtocolTypeFTPProxy = getOSType!("ftpx"); const __kSecProtocolTypeCIFS = getOSType!("cifs"); const __kSecProtocolTypeSMB = getOSType!("smb "); const __kSecProtocolTypeRTSP = getOSType!("rtsp"); const __kSecProtocolTypeRTSPProxy = getOSType!("rtsx"); const __kSecProtocolTypeDAAP = getOSType!("daap"); const __kSecProtocolTypeEPPC = getOSType!("eppc"); const __kSecProtocolTypeIPP = getOSType!("ipp "); const __kSecProtocolTypeNNTPS = getOSType!("ntps"); const __kSecProtocolTypeLDAPS = getOSType!("ldps"); const __kSecProtocolTypeTelnetS = getOSType!("tels"); const __kSecProtocolTypeIMAPS = getOSType!("imps"); const __kSecProtocolTypeIRCS = getOSType!("ircs"); const __kSecProtocolTypePOP3S = getOSType!("pops"); const __kSecProtocolTypeCVSpserver = getOSType!("cvsp"); const __kSecProtocolTypeSVN = getOSType!("svn "); const __kSecAuthenticationTypeNTLM = ((getOSType!("ntlm") >> 24) | ((getOSType!("ntlm") >> 8) & 0xff00) | ((getOSType!("ntlm") << 8) & 0xff0000) | (getOSType!("ntlm") & 0xff) << 24); const __kSecAuthenticationTypeMSN = ((getOSType!("msna") >> 24) | ((getOSType!("msna") >> 8) & 0xff00) | ((getOSType!("msna") << 8) & 0xff0000) | (getOSType!("msna") & 0xff) << 24); const __kSecAuthenticationTypeDPA = ((getOSType!("dpaa") >> 24) | ((getOSType!("dpaa") >> 8) & 0xff00) | ((getOSType!("dpaa") << 8) & 0xff0000) | (getOSType!("dpaa") & 0xff) << 24); const __kSecAuthenticationTypeRPA = ((getOSType!("rpaa") >> 24) | ((getOSType!("rpaa") >> 8) & 0xff00) | ((getOSType!("rpaa") << 8) & 0xff0000) | (getOSType!("rpaa") & 0xff) << 24); const __kSecAuthenticationTypeHTTPBasic = ((getOSType!("http") >> 24) | ((getOSType!("http") >> 8) & 0xff00) | ((getOSType!("http") << 8) & 0xff0000) | (getOSType!("http") & 0xff) << 24); const __kSecAuthenticationTypeHTTPDigest = ((getOSType!("httd") >> 24) | ((getOSType!("httd") >> 8) & 0xff00) | ((getOSType!("httd") << 8) & 0xff0000) | (getOSType!("httd") & 0xff) << 24); const __kSecAuthenticationTypeHTMLForm = ((getOSType!("form") >> 24) | ((getOSType!("form") >> 8) & 0xff00) | ((getOSType!("form") << 8) & 0xff0000) | (getOSType!("form") & 0xff) << 24); const __kSecAuthenticationTypeDefault = ((getOSType!("dflt") >> 24) | ((getOSType!("dflt") >> 8) & 0xff00) | ((getOSType!("dflt") << 8) & 0xff0000) | (getOSType!("dflt") & 0xff) << 24); const __kSecAuthenticationTypeAny = ((0 >> 24) | ((0 >> 8) & 0xff00) | ((0 << 8) & 0xff0000) | (0 & 0xff) << 24); } } enum { kSecUnlockStateStatus = 1, kSecReadPermStatus = 2, kSecWritePermStatus = 4 } enum { kSecAuthenticationTypeNTLM = ((getOSType!("ntlm") >> 24) | ((getOSType!("ntlm") >> 8) & 0xff00) | ((getOSType!("ntlm") << 8) & 0xff0000) | (getOSType!("ntlm") & 0xff) << 24), kSecAuthenticationTypeMSN = ((getOSType!("msna") >> 24) | ((getOSType!("msna") >> 8) & 0xff00) | ((getOSType!("msna") << 8) & 0xff0000) | (getOSType!("msna") & 0xff) << 24), kSecAuthenticationTypeDPA = ((getOSType!("dpaa") >> 24) | ((getOSType!("dpaa") >> 8) & 0xff00) | ((getOSType!("dpaa") << 8) & 0xff0000) | (getOSType!("dpaa") & 0xff) << 24), kSecAuthenticationTypeRPA = ((getOSType!("rpaa") >> 24) | ((getOSType!("rpaa") >> 8) & 0xff00) | ((getOSType!("rpaa") << 8) & 0xff0000) | (getOSType!("rpaa") & 0xff) << 24), kSecAuthenticationTypeHTTPBasic = ((getOSType!("http") >> 24) | ((getOSType!("http") >> 8) & 0xff00) | ((getOSType!("http") << 8) & 0xff0000) | (getOSType!("http") & 0xff) << 24), kSecAuthenticationTypeHTTPDigest = ((getOSType!("httd") >> 24) | ((getOSType!("httd") >> 8) & 0xff00) | ((getOSType!("httd") << 8) & 0xff0000) | (getOSType!("httd") & 0xff) << 24), kSecAuthenticationTypeHTMLForm = ((getOSType!("form") >> 24) | ((getOSType!("form") >> 8) & 0xff00) | ((getOSType!("form") << 8) & 0xff0000) | (getOSType!("form") & 0xff) << 24), kSecAuthenticationTypeDefault = ((getOSType!("dflt") >> 24) | ((getOSType!("dflt") >> 8) & 0xff00) | ((getOSType!("dflt") << 8) & 0xff0000) | (getOSType!("dflt") & 0xff) << 24), kSecAuthenticationTypeAny = ((0 >> 24) | ((0 >> 8) & 0xff00) | ((0 << 8) & 0xff0000) | (0 & 0xff) << 24) } enum { kSecProtocolTypeFTP = getOSType!("ftp "), kSecProtocolTypeFTPAccount = getOSType!("ftpa"), kSecProtocolTypeHTTP = getOSType!("http"), kSecProtocolTypeIRC = getOSType!("irc "), kSecProtocolTypeNNTP = getOSType!("nntp"), kSecProtocolTypePOP3 = getOSType!("pop3"), kSecProtocolTypeSMTP = getOSType!("smtp"), kSecProtocolTypeSOCKS = getOSType!("sox "), kSecProtocolTypeIMAP = getOSType!("imap"), kSecProtocolTypeLDAP = getOSType!("ldap"), kSecProtocolTypeAppleTalk = getOSType!("atlk"), kSecProtocolTypeAFP = getOSType!("afp "), kSecProtocolTypeTelnet = getOSType!("teln"), kSecProtocolTypeSSH = getOSType!("ssh "), kSecProtocolTypeFTPS = getOSType!("ftps"), kSecProtocolTypeHTTPS = getOSType!("htps"), kSecProtocolTypeHTTPProxy = getOSType!("htpx"), kSecProtocolTypeHTTPSProxy = getOSType!("htsx"), kSecProtocolTypeFTPProxy = getOSType!("ftpx"), kSecProtocolTypeCIFS = getOSType!("cifs"), kSecProtocolTypeSMB = getOSType!("smb "), kSecProtocolTypeRTSP = getOSType!("rtsp"), kSecProtocolTypeRTSPProxy = getOSType!("rtsx"), kSecProtocolTypeDAAP = getOSType!("daap"), kSecProtocolTypeEPPC = getOSType!("eppc"), kSecProtocolTypeIPP = getOSType!("ipp "), kSecProtocolTypeNNTPS = getOSType!("ntps"), kSecProtocolTypeLDAPS = getOSType!("ldps"), kSecProtocolTypeTelnetS = getOSType!("tels"), kSecProtocolTypeIMAPS = getOSType!("imps"), kSecProtocolTypeIRCS = getOSType!("ircs"), kSecProtocolTypePOP3S = getOSType!("pops"), kSecProtocolTypeCVSpserver = getOSType!("cvsp"), kSecProtocolTypeSVN = getOSType!("svn "), kSecProtocolTypeAny = 0 } enum { kSecLockEvent = 1, kSecUnlockEvent = 2, kSecAddEvent = 3, kSecDeleteEvent = 4, kSecUpdateEvent = 5, kSecPasswordChangedEvent = 6, kSecDefaultChangedEvent = 9, kSecDataAccessEvent = 10, kSecKeychainListChangedEvent = 11, kSecTrustSettingsChangedEvent = 12 } enum { kSecLockEventMask = 1 << kSecLockEvent, kSecUnlockEventMask = 1 << kSecUnlockEvent, kSecAddEventMask = 1 << kSecAddEvent, kSecDeleteEventMask = 1 << kSecDeleteEvent, kSecUpdateEventMask = 1 << kSecUpdateEvent, kSecPasswordChangedEventMask = 1 << kSecPasswordChangedEvent, kSecDefaultChangedEventMask = 1 << kSecDefaultChangedEvent, kSecDataAccessEventMask = 1 << kSecDataAccessEvent, kSecKeychainListChangedMask = 1 << kSecKeychainListChangedEvent, kSecTrustSettingsChangedEventMask = 1 << kSecTrustSettingsChangedEvent, kSecEveryEventMask = 0xffffffff } enum SecPreferencesDomain { kSecPreferencesDomainUser, kSecPreferencesDomainSystem, kSecPreferencesDomainCommon, kSecPreferencesDomainDynamic } struct SecKeychainSettings { uint version_; ubyte lockOnSleep; ubyte useLockInterval; uint lockInterval; } struct SecKeychainCallbackInfo { uint version_; SecKeychainItemRef item; SecKeychainRef keychain; int pid; } extern (C) { uint SecKeychainGetTypeID (); int SecKeychainGetVersion (uint* returnVers); int SecKeychainOpen (char* pathName, SecKeychainRef* keychain); int SecKeychainCreate (char* pathName, uint passwordLength, void* password, ubyte promptUser, SecAccessRef initialAccess, SecKeychainRef* keychain); int SecKeychainDelete (SecKeychainRef keychainOrArray); int SecKeychainSetSettings (SecKeychainRef keychain, SecKeychainSettings* newSettings); int SecKeychainCopySettings (SecKeychainRef keychain, SecKeychainSettings* outSettings); int SecKeychainUnlock (SecKeychainRef keychain, uint passwordLength, void* password, ubyte usePassword); int SecKeychainLock (SecKeychainRef keychain); int SecKeychainLockAll (); int SecKeychainCopyDefault (SecKeychainRef* keychain); int SecKeychainSetDefault (SecKeychainRef keychain); int SecKeychainCopySearchList (CFArrayRef* searchList); int SecKeychainSetSearchList (CFArrayRef searchList); int SecKeychainCopyDomainDefault (int domain, SecKeychainRef* keychain); int SecKeychainSetDomainDefault (int domain, SecKeychainRef keychain); int SecKeychainCopyDomainSearchList (int domain, CFArrayRef* searchList); int SecKeychainSetDomainSearchList (int domain, CFArrayRef searchList); int SecKeychainSetPreferenceDomain (int domain); int SecKeychainGetPreferenceDomain (SecPreferencesDomain* domain); int SecKeychainGetStatus (SecKeychainRef keychain, SecKeychainStatus* keychainStatus); int SecKeychainGetPath (SecKeychainRef keychain, uint* ioPathLength, char* pathName); int SecKeychainAttributeInfoForItemID (SecKeychainRef keychain, uint itemID, SecKeychainAttributeInfo** info); int SecKeychainFreeAttributeInfo (SecKeychainAttributeInfo* info); int SecKeychainAddCallback (SecKeychainCallback callbackFunction, uint eventMask, void* userContext); int SecKeychainRemoveCallback (SecKeychainCallback callbackFunction); int SecKeychainAddInternetPassword (SecKeychainRef keychain, uint serverNameLength, char* serverName, uint securityDomainLength, char* securityDomain, uint accountNameLength, char* accountName, uint pathLength, char* path, ushort port, uint protocol, uint authenticationType, uint passwordLength, void* passwordData, SecKeychainItemRef* itemRef); int SecKeychainFindInternetPassword (CFTypeRef keychainOrArray, uint serverNameLength, char* serverName, uint securityDomainLength, char* securityDomain, uint accountNameLength, char* accountName, uint pathLength, char* path, ushort port, uint protocol, uint authenticationType, uint* passwordLength, void** passwordData, SecKeychainItemRef* itemRef); int SecKeychainAddGenericPassword (SecKeychainRef keychain, uint serviceNameLength, char* serviceName, uint accountNameLength, char* accountName, uint passwordLength, void* passwordData, SecKeychainItemRef* itemRef); int SecKeychainFindGenericPassword (CFTypeRef keychainOrArray, uint serviceNameLength, char* serviceName, uint accountNameLength, char* accountName, uint* passwordLength, void** passwordData, SecKeychainItemRef* itemRef); int SecKeychainSetUserInteractionAllowed (ubyte state); int SecKeychainGetUserInteractionAllowed (char* state); int SecKeychainGetCSPHandle (SecKeychainRef keychain, CSSM_CSP_HANDLE* cspHandle); int SecKeychainGetDLDBHandle (SecKeychainRef keychain, CSSM_DL_DB_HANDLE* dldbHandle); int SecKeychainCopyAccess (SecKeychainRef keychain, SecAccessRef* access); int SecKeychainSetAccess (SecKeychainRef keychain, SecAccessRef access); }