mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -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__ */
|
||||
|
||||
Reference in New Issue
Block a user