/* File: KeychainCore.h Contains: Keychain low-level Interfaces Version: QuickTime 7.3 Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved Bugs?: For bug reports, consult the following page on the World Wide Web: http://developer.apple.com/bugreporter/ */ #ifndef __KEYCHAINCORE__ #define __KEYCHAINCORE__ #ifndef __MACTYPES__ #include #endif #ifndef __FILES__ #include #endif #ifndef __ALIASES__ #include #endif #ifndef __CODEFRAGMENTS__ #include #endif #ifndef __MACERRORS__ #include #endif #if PRAGMA_ONCE #pragma once #endif #ifdef __cplusplus extern "C" { #endif #if PRAGMA_IMPORT #pragma import on #endif #if PRAGMA_STRUCT_ALIGN #pragma options align=mac68k #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(push, 2) #elif PRAGMA_STRUCT_PACK #pragma pack(2) #endif /* Data structures and types */ #ifndef __SEC_TYPES__ #define __SEC_TYPES__ typedef struct OpaqueSecKeychainRef* SecKeychainRef; typedef struct OpaqueSecKeychainItemRef* SecKeychainItemRef; typedef struct OpaqueSecKeychainSearchRef* SecKeychainSearchRef; typedef OSType SecKeychainAttrType; typedef UInt32 SecKeychainStatus; struct SecKeychainAttribute { SecKeychainAttrType tag; /* 4-byte attribute tag */ UInt32 length; /* Length of attribute data */ void * data; /* Pointer to attribute data */ }; typedef struct SecKeychainAttribute SecKeychainAttribute; typedef SecKeychainAttribute * SecKeychainAttributePtr; struct SecKeychainAttributeList { UInt32 count; /* How many attributes in the array */ SecKeychainAttribute * attr; /* Pointer to first attribute in array */ }; typedef struct SecKeychainAttributeList SecKeychainAttributeList; #endif typedef SecKeychainRef KCRef; typedef SecKeychainItemRef KCItemRef; typedef SecKeychainSearchRef KCSearchRef; typedef SecKeychainAttribute KCAttribute; typedef SecKeychainAttributeList KCAttributeList; typedef SecKeychainAttrType KCAttrType; typedef SecKeychainStatus KCStatus; typedef UInt16 KCEvent; enum { kIdleKCEvent = 0, /* null event */ kLockKCEvent = 1, /* a keychain was locked */ kUnlockKCEvent = 2, /* a keychain was unlocked */ kAddKCEvent = 3, /* an item was added to a keychain */ kDeleteKCEvent = 4, /* an item was deleted from a keychain */ kUpdateKCEvent = 5, /* an item was updated */ kPasswordChangedKCEvent = 6, /* the keychain identity was changed */ kSystemKCEvent = 8, /* the keychain client can process events */ kDefaultChangedKCEvent = 9, /* the default keychain was changed */ kDataAccessKCEvent = 10, /* a process has accessed a keychain item's data */ kKeychainListChangedKCEvent = 11 /* the list of keychains has changed */ }; typedef UInt16 KCEventMask; 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 /* all of the above*/ }; typedef UInt8 AFPServerSignature[16]; typedef UInt8 KCPublicKeyHash[20]; struct KCCallbackInfo { UInt32 version; KCItemRef item; long processID[2]; /* unavailable on Mac OS X*/ long event[4]; /* unavailable on Mac OS X*/ KCRef keychain; }; typedef struct KCCallbackInfo KCCallbackInfo; enum { kUnlockStateKCStatus = 1, kRdPermKCStatus = 2, kWrPermKCStatus = 4 }; enum { kCertificateKCItemClass = FOUR_CHAR_CODE('cert'), /* Certificate */ kAppleSharePasswordKCItemClass = FOUR_CHAR_CODE('ashp'), /* Appleshare password */ kInternetPasswordKCItemClass = FOUR_CHAR_CODE('inet'), /* Internet password */ kGenericPasswordKCItemClass = FOUR_CHAR_CODE('genp') /* Generic password */ }; typedef FourCharCode KCItemClass; enum { /* Common attributes */ kClassKCItemAttr = FOUR_CHAR_CODE('clas'), /* Item class (KCItemClass) */ kCreationDateKCItemAttr = FOUR_CHAR_CODE('cdat'), /* Date the item was created (UInt32) */ kModDateKCItemAttr = FOUR_CHAR_CODE('mdat'), /* Last time the item was updated (UInt32) */ kDescriptionKCItemAttr = FOUR_CHAR_CODE('desc'), /* User-visible description string (string) */ kCommentKCItemAttr = FOUR_CHAR_CODE('icmt'), /* User's comment about the item (string) */ kCreatorKCItemAttr = FOUR_CHAR_CODE('crtr'), /* Item's creator (OSType) */ kTypeKCItemAttr = FOUR_CHAR_CODE('type'), /* Item's type (OSType) */ kScriptCodeKCItemAttr = FOUR_CHAR_CODE('scrp'), /* Script code for all strings (ScriptCode) */ kLabelKCItemAttr = FOUR_CHAR_CODE('labl'), /* Item label (string) */ kInvisibleKCItemAttr = FOUR_CHAR_CODE('invi'), /* Invisible (boolean) */ kNegativeKCItemAttr = FOUR_CHAR_CODE('nega'), /* Negative (boolean) */ kCustomIconKCItemAttr = FOUR_CHAR_CODE('cusi'), /* Custom icon (boolean) */ kAccountKCItemAttr = FOUR_CHAR_CODE('acct'), /* User account (string) */ /* Unique Generic password attributes */ kServiceKCItemAttr = FOUR_CHAR_CODE('svce'), /* Service (string) */ kGenericKCItemAttr = FOUR_CHAR_CODE('gena'), /* User-defined attribute (untyped bytes) */ /* Unique Internet password attributes */ kSecurityDomainKCItemAttr = FOUR_CHAR_CODE('sdmn'), /* Security domain (string) */ kServerKCItemAttr = FOUR_CHAR_CODE('srvr'), /* Server's domain name or IP address (string) */ kAuthTypeKCItemAttr = FOUR_CHAR_CODE('atyp'), /* Authentication Type (KCAuthType) */ kPortKCItemAttr = FOUR_CHAR_CODE('port'), /* Port (UInt16) */ kPathKCItemAttr = FOUR_CHAR_CODE('path'), /* Path (string) */ /* Unique Appleshare password attributes */ kVolumeKCItemAttr = FOUR_CHAR_CODE('vlme'), /* Volume (string) */ kAddressKCItemAttr = FOUR_CHAR_CODE('addr'), /* Server address (IP or domain name) or zone name (string) */ kSignatureKCItemAttr = FOUR_CHAR_CODE('ssig'), /* Server signature block (AFPServerSignature) */ /* Unique AppleShare and Internet attributes */ kProtocolKCItemAttr = FOUR_CHAR_CODE('ptcl'), /* Protocol (KCProtocolType) */ /* Certificate attributes */ kSubjectKCItemAttr = FOUR_CHAR_CODE('subj'), /* Subject distinguished name (DER-encoded data) */ kCommonNameKCItemAttr = FOUR_CHAR_CODE('cn '), /* Common Name (UTF8-encoded string) */ kIssuerKCItemAttr = FOUR_CHAR_CODE('issu'), /* Issuer distinguished name (DER-encoded data) */ kSerialNumberKCItemAttr = FOUR_CHAR_CODE('snbr'), /* Certificate serial number (DER-encoded data) */ kEMailKCItemAttr = FOUR_CHAR_CODE('mail'), /* E-mail address (ASCII-encoded string) */ kPublicKeyHashKCItemAttr = FOUR_CHAR_CODE('hpky'), /* Hash of public key (KCPublicKeyHash), 20 bytes max. */ kIssuerURLKCItemAttr = FOUR_CHAR_CODE('iurl'), /* URL of the certificate issuer (ASCII-encoded string) */ /* Shared by keys and certificates */ kEncryptKCItemAttr = FOUR_CHAR_CODE('encr'), /* Encrypt (Boolean) */ kDecryptKCItemAttr = FOUR_CHAR_CODE('decr'), /* Decrypt (Boolean) */ kSignKCItemAttr = FOUR_CHAR_CODE('sign'), /* Sign (Boolean) */ kVerifyKCItemAttr = FOUR_CHAR_CODE('veri'), /* Verify (Boolean) */ kWrapKCItemAttr = FOUR_CHAR_CODE('wrap'), /* Wrap (Boolean) */ kUnwrapKCItemAttr = FOUR_CHAR_CODE('unwr'), /* Unwrap (Boolean) */ kStartDateKCItemAttr = FOUR_CHAR_CODE('sdat'), /* Start Date (UInt32) */ kEndDateKCItemAttr = FOUR_CHAR_CODE('edat') /* End Date (UInt32) */ }; typedef FourCharCode KCItemAttr; enum { kKCAuthTypeNTLM = FOUR_CHAR_CODE('ntlm'), kKCAuthTypeMSN = FOUR_CHAR_CODE('msna'), kKCAuthTypeDPA = FOUR_CHAR_CODE('dpaa'), kKCAuthTypeRPA = FOUR_CHAR_CODE('rpaa'), kKCAuthTypeHTTPDigest = FOUR_CHAR_CODE('httd'), kKCAuthTypeDefault = FOUR_CHAR_CODE('dflt') }; typedef FourCharCode KCAuthType; enum { kKCProtocolTypeFTP = FOUR_CHAR_CODE('ftp '), kKCProtocolTypeFTPAccount = FOUR_CHAR_CODE('ftpa'), kKCProtocolTypeHTTP = FOUR_CHAR_CODE('http'), kKCProtocolTypeIRC = FOUR_CHAR_CODE('irc '), kKCProtocolTypeNNTP = FOUR_CHAR_CODE('nntp'), kKCProtocolTypePOP3 = FOUR_CHAR_CODE('pop3'), kKCProtocolTypeSMTP = FOUR_CHAR_CODE('smtp'), kKCProtocolTypeSOCKS = FOUR_CHAR_CODE('sox '), kKCProtocolTypeIMAP = FOUR_CHAR_CODE('imap'), kKCProtocolTypeLDAP = FOUR_CHAR_CODE('ldap'), kKCProtocolTypeAppleTalk = FOUR_CHAR_CODE('atlk'), kKCProtocolTypeAFP = FOUR_CHAR_CODE('afp '), kKCProtocolTypeTelnet = FOUR_CHAR_CODE('teln') }; typedef FourCharCode KCProtocolType; typedef UInt32 KCCertAddOptions; enum { kSecOptionReserved = 0x000000FF, /* First byte reserved for SecOptions flags */ kCertUsageShift = 8, /* start at bit 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 }; typedef UInt16 KCVerifyStopOn; enum { kPolicyKCStopOn = 0, kNoneKCStopOn = 1, kFirstPassKCStopOn = 2, kFirstFailKCStopOn = 3 }; typedef UInt32 KCCertSearchOptions; enum { kCertSearchShift = 0, /* start at bit 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 }; /* Other constants */ enum { kAnyPort = 0 }; enum { kAnyProtocol = 0, kAnyAuthType = 0 }; /* Opening and getting information about the Keychain Manager */ /* * KCGetKeychainManagerVersion() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: not available */ EXTERN_API( OSStatus ) KCGetKeychainManagerVersion(UInt32 * returnVers); #if TARGET_RT_MAC_CFM #ifdef __cplusplus inline pascal Boolean KeychainManagerAvailable() { return ((KCGetKeychainManagerVersion != (void*)kUnresolvedCFragSymbolAddress) && (KCGetKeychainManagerVersion(nil) != cfragNoSymbolErr)); } #else #define KeychainManagerAvailable() ((KCGetKeychainManagerVersion != (void*)kUnresolvedCFragSymbolAddress) && (KCGetKeychainManagerVersion(nil) != cfragNoSymbolErr)) #endif #elif TARGET_RT_MAC_MACHO /* Keychain is always available on OS X */ #ifdef __cplusplus inline pascal Boolean KeychainManagerAvailable() { return true; } #else #define KeychainManagerAvailable() (true) #endif #endif /* */ /* Managing the Human Interface */ /* * KCSetInteractionAllowed() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCSetInteractionAllowed(Boolean state); /* * KCIsInteractionAllowed() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( Boolean ) KCIsInteractionAllowed(void); /* Creating references to keychains */ /* * KCMakeKCRefFromFSSpec() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCMakeKCRefFromFSSpec( FSSpec * keychainFSSpec, KCRef * keychain); /* * KCMakeKCRefFromAlias() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCMakeKCRefFromAlias( AliasHandle keychainAlias, KCRef * keychain); /* * KCMakeAliasFromKCRef() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCMakeAliasFromKCRef( KCRef keychain, AliasHandle * keychainAlias); /* * KCReleaseKeychain() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCReleaseKeychain(KCRef * keychain); /* Specifying the default keychain */ /* * KCGetDefaultKeychain() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetDefaultKeychain(KCRef * keychain); /* * KCSetDefaultKeychain() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCSetDefaultKeychain(KCRef keychain); /* Getting information about a keychain */ /* * KCGetStatus() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetStatus( KCRef keychain, /* can be NULL */ UInt32 * keychainStatus); /* * KCGetKeychain() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetKeychain( KCItemRef item, KCRef * keychain); /* * KCGetKeychainName() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetKeychainName( KCRef keychain, StringPtr keychainName); /* Enumerating available keychains */ /* * KCCountKeychains() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( UInt16 ) KCCountKeychains(void); /* * KCGetIndKeychain() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetIndKeychain( UInt16 index, KCRef * keychain); typedef CALLBACK_API( OSStatus , KCCallbackProcPtr )(KCEvent keychainEvent, KCCallbackInfo *info, void *userContext); typedef STACK_UPP_TYPE(KCCallbackProcPtr) KCCallbackUPP; /* * NewKCCallbackUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( KCCallbackUPP ) NewKCCallbackUPP(KCCallbackProcPtr userRoutine); #if !OPAQUE_UPP_TYPES enum { uppKCCallbackProcInfo = 0x00000FB0 }; /* pascal 4_bytes Func(2_bytes, 4_bytes, 4_bytes) */ #ifdef __cplusplus inline DEFINE_API_C(KCCallbackUPP) NewKCCallbackUPP(KCCallbackProcPtr userRoutine) { return (KCCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppKCCallbackProcInfo, GetCurrentArchitecture()); } #else #define NewKCCallbackUPP(userRoutine) (KCCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppKCCallbackProcInfo, GetCurrentArchitecture()) #endif #endif /* * DisposeKCCallbackUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( void ) DisposeKCCallbackUPP(KCCallbackUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(void) DisposeKCCallbackUPP(KCCallbackUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } #else #define DisposeKCCallbackUPP(userUPP) DisposeRoutineDescriptor(userUPP) #endif #endif /* * InvokeKCCallbackUPP() * * Availability: * Non-Carbon CFM: available as macro/inline * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) InvokeKCCallbackUPP( KCEvent keychainEvent, KCCallbackInfo * info, void * userContext, KCCallbackUPP userUPP); #if !OPAQUE_UPP_TYPES #ifdef __cplusplus inline DEFINE_API_C(OSStatus) InvokeKCCallbackUPP(KCEvent keychainEvent, KCCallbackInfo * info, void * userContext, KCCallbackUPP userUPP) { return (OSStatus)CALL_THREE_PARAMETER_UPP(userUPP, uppKCCallbackProcInfo, keychainEvent, info, userContext); } #else #define InvokeKCCallbackUPP(keychainEvent, info, userContext, userUPP) (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppKCCallbackProcInfo, (keychainEvent), (info), (userContext)) #endif #endif #if CALL_NOT_IN_CARBON || OLDROUTINENAMES /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ #define NewKCCallbackProc(userRoutine) NewKCCallbackUPP(userRoutine) #define CallKCCallbackProc(userRoutine, keychainEvent, info, userContext) InvokeKCCallbackUPP(keychainEvent, info, userContext, userRoutine) #endif /* CALL_NOT_IN_CARBON */ /* High-level interface for retrieving passwords */ /* * KCFindAppleSharePassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindAppleSharePassword( AFPServerSignature * serverSignature, /* can be NULL */ StringPtr serverAddress, /* can be NULL */ StringPtr serverName, /* can be NULL */ StringPtr volumeName, /* can be NULL */ StringPtr accountName, /* can be NULL */ UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * KCFindInternetPassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindInternetPassword( StringPtr serverName, /* can be NULL */ StringPtr securityDomain, /* can be NULL */ StringPtr accountName, /* can be NULL */ UInt16 port, OSType protocol, OSType authType, UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * KCFindInternetPasswordWithPath() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindInternetPasswordWithPath( StringPtr serverName, /* can be NULL */ StringPtr securityDomain, /* can be NULL */ StringPtr accountName, /* can be NULL */ StringPtr path, /* can be NULL */ UInt16 port, OSType protocol, OSType authType, UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * KCFindGenericPassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindGenericPassword( StringPtr serviceName, /* can be NULL */ StringPtr accountName, /* can be NULL */ UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* Keychain Manager callbacks */ /* * KCAddCallback() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCAddCallback( KCCallbackUPP callbackProc, KCEventMask eventMask, void * userContext); /* * KCRemoveCallback() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCRemoveCallback(KCCallbackUPP callbackProc); /* Creating and editing a keychain item */ /* * KCNewItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCNewItem( KCItemClass itemClass, OSType itemCreator, UInt32 length, const void * data, KCItemRef * item); /* * KCSetAttribute() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCSetAttribute( KCItemRef item, KCAttribute * attr); /* * KCGetAttribute() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetAttribute( KCItemRef item, KCAttribute * attr, UInt32 * actualLength); /* * KCSetData() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCSetData( KCItemRef item, UInt32 length, const void * data); /* Managing keychain items */ /* * KCUpdateItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCUpdateItem(KCItemRef item); /* * KCReleaseItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCReleaseItem(KCItemRef * item); /* * KCCopyItem() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCCopyItem( KCItemRef item, KCRef destKeychain, KCItemRef * copy); /* Searching and enumerating keychain items */ /* * KCFindFirstItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindFirstItem( KCRef keychain, /* can be NULL */ const KCAttributeList * attrList, /* can be NULL */ KCSearchRef * search, KCItemRef * item); /* * KCFindNextItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCFindNextItem( KCSearchRef search, KCItemRef * item); /* * KCReleaseSearch() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCReleaseSearch(KCSearchRef * search); /* Managing keychain items */ /* * KCDeleteItem() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCDeleteItem(KCItemRef item); /* * KCGetData() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCGetData( KCItemRef item, UInt32 maxLength, void * data, UInt32 * actualLength); /* Locking a keychain */ /* * KCLock() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API( OSStatus ) KCLock(KCRef keychain); /* Routines that use "C" strings */ /* * kcgetkeychainname() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) kcgetkeychainname( KCRef keychain, char * keychainName); /* * kcfindapplesharepassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) kcfindapplesharepassword( AFPServerSignature * serverSignature, /* can be NULL */ const char * serverAddress, /* can be NULL */ const char * serverName, /* can be NULL */ const char * volumeName, /* can be NULL */ const char * accountName, /* can be NULL */ UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * kcfindinternetpassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) kcfindinternetpassword( const char * serverName, /* can be NULL */ const char * securityDomain, /* can be NULL */ const char * accountName, /* can be NULL */ UInt16 port, OSType protocol, OSType authType, UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * kcfindinternetpasswordwithpath() * * Availability: * Non-Carbon CFM: in KeychainLib 2.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) kcfindinternetpasswordwithpath( const char * serverName, /* can be NULL */ const char * securityDomain, /* can be NULL */ const char * accountName, /* can be NULL */ const char * path, /* can be NULL */ UInt16 port, OSType protocol, OSType authType, UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ /* * kcfindgenericpassword() * * Availability: * Non-Carbon CFM: in KeychainLib 1.0 and later * CarbonLib: in CarbonLib 1.1 and later * Mac OS X: in version 10.0 and later */ EXTERN_API_C( OSStatus ) kcfindgenericpassword( const char * serviceName, /* can be NULL */ const char * accountName, /* can be NULL */ UInt32 maxLength, void * passwordData, UInt32 * actualLength, KCItemRef * item); /* can be NULL */ #if PRAGMA_STRUCT_ALIGN #pragma options align=reset #elif PRAGMA_STRUCT_PACKPUSH #pragma pack(pop) #elif PRAGMA_STRUCT_PACK #pragma pack() #endif #ifdef PRAGMA_IMPORT_OFF #pragma import off #elif PRAGMA_IMPORT #pragma import reset #endif #ifdef __cplusplus } #endif #endif /* __KEYCHAINCORE__ */