summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/KeychainCore.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/KeychainCore.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/KeychainCore.h')
-rw-r--r--common/quicktime_win32/KeychainCore.h983
1 files changed, 983 insertions, 0 deletions
diff --git a/common/quicktime_win32/KeychainCore.h b/common/quicktime_win32/KeychainCore.h
new file mode 100644
index 0000000..4969162
--- /dev/null
+++ b/common/quicktime_win32/KeychainCore.h
@@ -0,0 +1,983 @@
+/*
+ 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 <MacTypes.h>
+#endif
+
+#ifndef __FILES__
+#include <Files.h>
+#endif
+
+#ifndef __ALIASES__
+#include <Aliases.h>
+#endif
+
+#ifndef __CODEFRAGMENTS__
+#include <CodeFragments.h>
+#endif
+
+#ifndef __MACERRORS__
+#include <MacErrors.h>
+#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__ */
+