4
Contains: Keychain low-level Interfaces
6
Version: Technology: Keychain 3.0
7
Release: Universal Interfaces 3.4.2
9
Copyright: � 2000-2002 by Apple Computer, Inc., all rights reserved
11
Bugs?: For bug reports, consult the following page on
14
http://www.freepascal.org/bugs.html
20
Modified for use with Free Pascal
22
Please report any bugs to <gpc@microbizz.nl>
33
{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
34
{$setc GAP_INTERFACES_VERSION := $0200}
36
{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
37
{$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
40
{$ifc defined CPUPOWERPC and defined CPUI386}
41
{$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
43
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
44
{$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
47
{$ifc not defined __ppc__ and defined CPUPOWERPC}
52
{$ifc not defined __i386__ and defined CPUI386}
58
{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
59
{$error Conflicting definitions for __ppc__ and __i386__}
62
{$ifc defined __ppc__ and __ppc__}
63
{$setc TARGET_CPU_PPC := TRUE}
64
{$setc TARGET_CPU_X86 := FALSE}
65
{$elifc defined __i386__ and __i386__}
66
{$setc TARGET_CPU_PPC := FALSE}
67
{$setc TARGET_CPU_X86 := TRUE}
69
{$error Neither __ppc__ nor __i386__ is defined.}
71
{$setc TARGET_CPU_PPC_64 := FALSE}
73
{$ifc defined FPC_BIG_ENDIAN}
74
{$setc TARGET_RT_BIG_ENDIAN := TRUE}
75
{$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
76
{$elifc defined FPC_LITTLE_ENDIAN}
77
{$setc TARGET_RT_BIG_ENDIAN := FALSE}
78
{$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
80
{$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
82
{$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
83
{$setc CALL_NOT_IN_CARBON := FALSE}
84
{$setc OLDROUTINENAMES := FALSE}
85
{$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
86
{$setc OPAQUE_UPP_TYPES := TRUE}
87
{$setc OTCARBONAPPLICATION := TRUE}
88
{$setc OTKERNEL := FALSE}
89
{$setc PM_USE_SESSION_APIS := TRUE}
90
{$setc TARGET_API_MAC_CARBON := TRUE}
91
{$setc TARGET_API_MAC_OS8 := FALSE}
92
{$setc TARGET_API_MAC_OSX := TRUE}
93
{$setc TARGET_CARBON := TRUE}
94
{$setc TARGET_CPU_68K := FALSE}
95
{$setc TARGET_CPU_MIPS := FALSE}
96
{$setc TARGET_CPU_SPARC := FALSE}
97
{$setc TARGET_OS_MAC := TRUE}
98
{$setc TARGET_OS_UNIX := FALSE}
99
{$setc TARGET_OS_WIN32 := FALSE}
100
{$setc TARGET_RT_MAC_68881 := FALSE}
101
{$setc TARGET_RT_MAC_CFM := FALSE}
102
{$setc TARGET_RT_MAC_MACHO := TRUE}
103
{$setc TYPED_FUNCTION_POINTERS := TRUE}
104
{$setc TYPE_BOOL := FALSE}
105
{$setc TYPE_EXTENDED := FALSE}
106
{$setc TYPE_LONGLONG := TRUE}
107
uses MacTypes,Files,Aliases,CodeFragments,MacErrors,Processes,Events;
111
{ Data structures and types }
114
SecKeychainRef = ^SInt32; { an opaque 32-bit type }
115
SecKeychainRefPtr = ^SecKeychainRef; { when a var xx:SecKeychainRef parameter can be nil, it is changed to xx: SecKeychainRefPtr }
116
SecKeychainItemRef = ^SInt32; { an opaque 32-bit type }
117
SecKeychainItemRefPtr = ^SecKeychainItemRef; { when a var xx:SecKeychainItemRef parameter can be nil, it is changed to xx: SecKeychainItemRefPtr }
118
SecKeychainSearchRef = ^SInt32; { an opaque 32-bit type }
119
SecKeychainSearchRefPtr = ^SecKeychainSearchRef; { when a var xx:SecKeychainSearchRef parameter can be nil, it is changed to xx: SecKeychainSearchRefPtr }
120
SecKeychainAttrType = OSType;
121
SecKeychainStatus = UInt32;
122
SecKeychainAttributePtr = ^SecKeychainAttribute;
123
SecKeychainAttribute = record
124
tag: SecKeychainAttrType; { 4-byte attribute tag }
125
length: UInt32; { Length of attribute data }
126
data: Ptr; { Pointer to attribute data }
129
SecKeychainAttributeListPtr = ^SecKeychainAttributeList;
130
SecKeychainAttributeList = record
131
count: UInt32; { How many attributes in the array }
132
attr: SecKeychainAttributePtr; { Pointer to first attribute in array }
135
KCRef = SecKeychainRef;
136
KCItemRef = SecKeychainItemRef;
137
KCSearchRef = SecKeychainSearchRef;
139
KCItemRefPtr = ^KCItemRef;
140
KCSearchRefPtr = ^KCSearchRef;
141
KCAttribute = SecKeychainAttribute;
142
KCAttributePtr = ^KCAttribute;
143
KCAttributeList = SecKeychainAttributeList;
144
KCAttributeListPtr = ^KCAttributeList;
145
KCAttrType = SecKeychainAttrType;
146
KCStatus = SecKeychainStatus;
149
kIdleKCEvent = 0; { null event }
150
kLockKCEvent = 1; { a keychain was locked }
151
kUnlockKCEvent = 2; { a keychain was unlocked }
152
kAddKCEvent = 3; { an item was added to a keychain }
153
kDeleteKCEvent = 4; { an item was deleted from a keychain }
154
kUpdateKCEvent = 5; { an item was updated }
155
kPasswordChangedKCEvent = 6; { the keychain identity was changed }
156
kSystemKCEvent = 8; { the keychain client can process events }
157
kDefaultChangedKCEvent = 9; { the default keychain was changed }
158
kDataAccessKCEvent = 10; { a process has accessed a keychain item's data }
159
kKeychainListChangedKCEvent = 11; { the list of keychains has changed }
163
KCEventMask = UInt16;
165
kIdleKCEventMask = $01;
166
kLockKCEventMask = $02;
167
kUnlockKCEventMask = $04;
168
kAddKCEventMask = $08;
169
kDeleteKCEventMask = $10;
170
kUpdateKCEventMask = $20;
171
kPasswordChangedKCEventMask = $40;
172
kSystemEventKCEventMask = $0100;
173
kDefaultChangedKCEventMask = $0200;
174
kDataAccessKCEventMask = $0400;
175
kEveryKCEventMask = $FFFF; { all of the above }
179
AFPServerSignature = packed array [0..15] of UInt8;
180
AFPServerSignaturePtr = ^AFPServerSignature; { when a VAR xx: AFPServerSignature parameter can be nil, it is changed to xx: AFPServerSignaturePtr }
181
KCPublicKeyHash = packed array [0..19] of UInt8;
182
KCCallbackInfoPtr = ^KCCallbackInfo;
183
KCCallbackInfo = record
186
processID: ProcessSerialNumber;
193
kUnlockStateKCStatus = 1;
198
kCertificateKCItemClass = $63657274 (* 'cert' *); { Certificate }
199
kAppleSharePasswordKCItemClass = $61736870 (* 'ashp' *); { Appleshare password }
200
kInternetPasswordKCItemClass = $696E6574 (* 'inet' *); { Internet password }
201
kGenericPasswordKCItemClass = $67656E70 (* 'genp' *); { Generic password }
205
KCItemClass = FourCharCode;
208
{ Common attributes }
209
kClassKCItemAttr = $636C6173 (* 'clas' *); { Item class (KCItemClass) }
210
kCreationDateKCItemAttr = $63646174 (* 'cdat' *); { Date the item was created (UInt32) }
211
kModDateKCItemAttr = $6D646174 (* 'mdat' *); { Last time the item was updated (UInt32) }
212
kDescriptionKCItemAttr = $64657363 (* 'desc' *); { User-visible description string (string) }
213
kCommentKCItemAttr = $69636D74 (* 'icmt' *); { User's comment about the item (string) }
214
kCreatorKCItemAttr = $63727472 (* 'crtr' *); { Item's creator (OSType) }
215
kTypeKCItemAttr = $74797065 (* 'type' *); { Item's type (OSType) }
216
kScriptCodeKCItemAttr = $73637270 (* 'scrp' *); { Script code for all strings (ScriptCode) }
217
kLabelKCItemAttr = $6C61626C (* 'labl' *); { Item label (string) }
218
kInvisibleKCItemAttr = $696E7669 (* 'invi' *); { Invisible (boolean) }
219
kNegativeKCItemAttr = $6E656761 (* 'nega' *); { Negative (boolean) }
220
kCustomIconKCItemAttr = $63757369 (* 'cusi' *); { Custom icon (boolean) }
221
kAccountKCItemAttr = $61636374 (* 'acct' *); { User account (string) }
222
{ Unique Generic password attributes }
223
kServiceKCItemAttr = $73766365 (* 'svce' *); { Service (string) }
224
kGenericKCItemAttr = $67656E61 (* 'gena' *); { User-defined attribute (untyped bytes) }
225
{ Unique Internet password attributes }
226
kSecurityDomainKCItemAttr = $73646D6E (* 'sdmn' *); { Security domain (string) }
227
kServerKCItemAttr = $73727672 (* 'srvr' *); { Server's domain name or IP address (string) }
228
kAuthTypeKCItemAttr = $61747970 (* 'atyp' *); { Authentication Type (KCAuthType) }
229
kPortKCItemAttr = $706F7274 (* 'port' *); { Port (UInt16) }
230
kPathKCItemAttr = $70617468 (* 'path' *); { Path (string) }
231
{ Unique Appleshare password attributes }
232
kVolumeKCItemAttr = $766C6D65 (* 'vlme' *); { Volume (string) }
233
kAddressKCItemAttr = $61646472 (* 'addr' *); { Server address (IP or domain name) or zone name (string) }
234
kSignatureKCItemAttr = $73736967 (* 'ssig' *); { Server signature block (AFPServerSignature) }
235
{ Unique AppleShare and Internet attributes }
236
kProtocolKCItemAttr = $7074636C (* 'ptcl' *); { Protocol (KCProtocolType) }
237
{ Certificate attributes }
238
kSubjectKCItemAttr = $7375626A (* 'subj' *); { Subject distinguished name (DER-encoded data) }
239
kCommonNameKCItemAttr = $636E2020 (* 'cn ' *); { Common Name (UTF8-encoded string) }
240
kIssuerKCItemAttr = $69737375 (* 'issu' *); { Issuer distinguished name (DER-encoded data) }
241
kSerialNumberKCItemAttr = $736E6272 (* 'snbr' *); { Certificate serial number (DER-encoded data) }
242
kEMailKCItemAttr = $6D61696C (* 'mail' *); { E-mail address (ASCII-encoded string) }
243
kPublicKeyHashKCItemAttr = $68706B79 (* 'hpky' *); { Hash of public key (KCPublicKeyHash), 20 bytes max. }
244
kIssuerURLKCItemAttr = $6975726C (* 'iurl' *); { URL of the certificate issuer (ASCII-encoded string) }
245
{ Shared by keys and certificates }
246
kEncryptKCItemAttr = $656E6372 (* 'encr' *); { Encrypt (Boolean) }
247
kDecryptKCItemAttr = $64656372 (* 'decr' *); { Decrypt (Boolean) }
248
kSignKCItemAttr = $7369676E (* 'sign' *); { Sign (Boolean) }
249
kVerifyKCItemAttr = $76657269 (* 'veri' *); { Verify (Boolean) }
250
kWrapKCItemAttr = $77726170 (* 'wrap' *); { Wrap (Boolean) }
251
kUnwrapKCItemAttr = $756E7772 (* 'unwr' *); { Unwrap (Boolean) }
252
kStartDateKCItemAttr = $73646174 (* 'sdat' *); { Start Date (UInt32) }
253
kEndDateKCItemAttr = $65646174 (* 'edat' *); { End Date (UInt32) }
257
KCItemAttr = FourCharCode;
260
kKCAuthTypeNTLM = $6E746C6D (* 'ntlm' *);
261
kKCAuthTypeMSN = $6D736E61 (* 'msna' *);
262
kKCAuthTypeDPA = $64706161 (* 'dpaa' *);
263
kKCAuthTypeRPA = $72706161 (* 'rpaa' *);
264
kKCAuthTypeHTTPDigest = $68747464 (* 'httd' *);
265
kKCAuthTypeDefault = $64666C74 (* 'dflt' *);
269
KCAuthType = FourCharCode;
272
kKCProtocolTypeFTP = $66747020 (* 'ftp ' *);
273
kKCProtocolTypeFTPAccount = $66747061 (* 'ftpa' *);
274
kKCProtocolTypeHTTP = $68747470 (* 'http' *);
275
kKCProtocolTypeIRC = $69726320 (* 'irc ' *);
276
kKCProtocolTypeNNTP = $6E6E7470 (* 'nntp' *);
277
kKCProtocolTypePOP3 = $706F7033 (* 'pop3' *);
278
kKCProtocolTypeSMTP = $736D7470 (* 'smtp' *);
279
kKCProtocolTypeSOCKS = $736F7820 (* 'sox ' *);
280
kKCProtocolTypeIMAP = $696D6170 (* 'imap' *);
281
kKCProtocolTypeLDAP = $6C646170 (* 'ldap' *);
282
kKCProtocolTypeAppleTalk = $61746C6B (* 'atlk' *);
283
kKCProtocolTypeAFP = $61667020 (* 'afp ' *);
284
kKCProtocolTypeTelnet = $74656C6E (* 'teln' *);
288
KCProtocolType = FourCharCode;
289
KCCertAddOptions = UInt32;
291
kSecOptionReserved = $000000FF; { First byte reserved for SecOptions flags }
292
kCertUsageShift = 8; { start at bit 8 }
293
kCertUsageSigningAdd = $0100;
294
kCertUsageSigningAskAndAdd = $0200;
295
kCertUsageVerifyAdd = $0400;
296
kCertUsageVerifyAskAndAdd = $0800;
297
kCertUsageEncryptAdd = $1000;
298
kCertUsageEncryptAskAndAdd = $2000;
299
kCertUsageDecryptAdd = $4000;
300
kCertUsageDecryptAskAndAdd = $8000;
301
kCertUsageKeyExchAdd = $00010000;
302
kCertUsageKeyExchAskAndAdd = $00020000;
303
kCertUsageRootAdd = $00040000;
304
kCertUsageRootAskAndAdd = $00080000;
305
kCertUsageSSLAdd = $00100000;
306
kCertUsageSSLAskAndAdd = $00200000;
307
kCertUsageAllAdd = $7FFFFF00;
311
KCVerifyStopOn = UInt16;
315
kFirstPassKCStopOn = 2;
316
kFirstFailKCStopOn = 3;
320
KCCertSearchOptions = UInt32;
322
kCertSearchShift = 0; { start at bit 0 }
323
kCertSearchSigningIgnored = 0;
324
kCertSearchSigningAllowed = $01;
325
kCertSearchSigningDisallowed = $02;
326
kCertSearchSigningMask = $03;
327
kCertSearchVerifyIgnored = 0;
328
kCertSearchVerifyAllowed = $04;
329
kCertSearchVerifyDisallowed = $08;
330
kCertSearchVerifyMask = $0C;
331
kCertSearchEncryptIgnored = 0;
332
kCertSearchEncryptAllowed = $10;
333
kCertSearchEncryptDisallowed = $20;
334
kCertSearchEncryptMask = $30;
335
kCertSearchDecryptIgnored = 0;
336
kCertSearchDecryptAllowed = $40;
337
kCertSearchDecryptDisallowed = $80;
338
kCertSearchDecryptMask = $C0;
339
kCertSearchWrapIgnored = 0;
340
kCertSearchWrapAllowed = $0100;
341
kCertSearchWrapDisallowed = $0200;
342
kCertSearchWrapMask = $0300;
343
kCertSearchUnwrapIgnored = 0;
344
kCertSearchUnwrapAllowed = $0400;
345
kCertSearchUnwrapDisallowed = $0800;
346
kCertSearchUnwrapMask = $0C00;
347
kCertSearchPrivKeyRequired = $1000;
356
{ Opening and getting information about the Keychain Manager }
358
* KCGetKeychainManagerVersion()
361
* Non-Carbon CFM: in KeychainLib 1.0 and later
362
* CarbonLib: in CarbonLib 1.1 and later
363
* Mac OS X: not available
365
function KCGetKeychainManagerVersion(var returnVers: UInt32): OSStatus; external name '_KCGetKeychainManagerVersion';
367
{$ifc TARGET_RT_MAC_CFM}
369
KeychainManagerAvailable() is a macro/inline available only in C/C++.
370
To get the same functionality from pascal or assembly, you need
371
to test if KCGetKeychainManagerVersion function is not NULL. For instance:
373
gKeychainManagerAvailable = FALSE;
374
IF @KCGetKeychainManagerVersion <> kUnresolvedCFragSymbolAddress THEN
375
gKeychainManagerAvailable = TRUE;
380
{$ifc TARGET_RT_MAC_MACHO}
384
{ Managing the Human Interface }
386
* KCSetInteractionAllowed()
389
* Non-Carbon CFM: in KeychainLib 2.0 and later
390
* CarbonLib: in CarbonLib 1.1 and later
391
* Mac OS X: in version 10.0 and later
393
function KCSetInteractionAllowed(state: boolean): OSStatus; external name '_KCSetInteractionAllowed';
396
* KCIsInteractionAllowed()
399
* Non-Carbon CFM: in KeychainLib 2.0 and later
400
* CarbonLib: in CarbonLib 1.1 and later
401
* Mac OS X: in version 10.0 and later
403
function KCIsInteractionAllowed: boolean; external name '_KCIsInteractionAllowed';
405
{ Creating references to keychains }
407
* KCMakeKCRefFromFSSpec()
410
* Non-Carbon CFM: in KeychainLib 2.0 and later
411
* CarbonLib: in CarbonLib 1.1 and later
412
* Mac OS X: in version 10.0 and later
414
function KCMakeKCRefFromFSSpec(var keychainFSSpec: FSSpec; var keychain: KCRef): OSStatus; external name '_KCMakeKCRefFromFSSpec';
417
* KCMakeKCRefFromAlias()
420
* Non-Carbon CFM: in KeychainLib 2.0 and later
421
* CarbonLib: in CarbonLib 1.1 and later
422
* Mac OS X: in version 10.0 and later
424
function KCMakeKCRefFromAlias(keychainAlias: AliasHandle; var keychain: KCRef): OSStatus; external name '_KCMakeKCRefFromAlias';
427
* KCMakeAliasFromKCRef()
430
* Non-Carbon CFM: in KeychainLib 2.0 and later
431
* CarbonLib: in CarbonLib 1.1 and later
432
* Mac OS X: in version 10.0 and later
434
function KCMakeAliasFromKCRef(keychain: KCRef; var keychainAlias: AliasHandle): OSStatus; external name '_KCMakeAliasFromKCRef';
437
* KCReleaseKeychain()
440
* Non-Carbon CFM: in KeychainLib 2.0 and later
441
* CarbonLib: in CarbonLib 1.1 and later
442
* Mac OS X: in version 10.0 and later
444
function KCReleaseKeychain(var keychain: KCRef): OSStatus; external name '_KCReleaseKeychain';
446
{ Specifying the default keychain }
448
* KCGetDefaultKeychain()
451
* Non-Carbon CFM: in KeychainLib 2.0 and later
452
* CarbonLib: in CarbonLib 1.1 and later
453
* Mac OS X: in version 10.0 and later
455
function KCGetDefaultKeychain(var keychain: KCRef): OSStatus; external name '_KCGetDefaultKeychain';
458
* KCSetDefaultKeychain()
461
* Non-Carbon CFM: in KeychainLib 2.0 and later
462
* CarbonLib: in CarbonLib 1.1 and later
463
* Mac OS X: in version 10.0 and later
465
function KCSetDefaultKeychain(keychain: KCRef): OSStatus; external name '_KCSetDefaultKeychain';
467
{ Getting information about a keychain }
472
* Non-Carbon CFM: in KeychainLib 1.0 and later
473
* CarbonLib: in CarbonLib 1.1 and later
474
* Mac OS X: in version 10.0 and later
476
function KCGetStatus(keychain: KCRef; var keychainStatus: UInt32): OSStatus; external name '_KCGetStatus';
482
* Non-Carbon CFM: in KeychainLib 1.0 and later
483
* CarbonLib: in CarbonLib 1.1 and later
484
* Mac OS X: in version 10.0 and later
486
function KCGetKeychain(item: KCItemRef; var keychain: KCRef): OSStatus; external name '_KCGetKeychain';
489
* KCGetKeychainName()
492
* Non-Carbon CFM: in KeychainLib 2.0 and later
493
* CarbonLib: in CarbonLib 1.1 and later
494
* Mac OS X: in version 10.0 and later
496
function KCGetKeychainName(keychain: KCRef; keychainName: StringPtr): OSStatus; external name '_KCGetKeychainName';
498
{ Enumerating available keychains }
503
* Non-Carbon CFM: in KeychainLib 1.0 and later
504
* CarbonLib: in CarbonLib 1.1 and later
505
* Mac OS X: in version 10.0 and later
507
function KCCountKeychains: UInt16; external name '_KCCountKeychains';
513
* Non-Carbon CFM: in KeychainLib 1.0 and later
514
* CarbonLib: in CarbonLib 1.1 and later
515
* Mac OS X: in version 10.0 and later
517
function KCGetIndKeychain(index: UInt16; var keychain: KCRef): OSStatus; external name '_KCGetIndKeychain';
521
{$ifc TYPED_FUNCTION_POINTERS}
522
KCCallbackProcPtr = function(keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr): OSStatus;
524
KCCallbackProcPtr = ProcPtr;
527
{$ifc OPAQUE_UPP_TYPES}
528
KCCallbackUPP = ^SInt32; { an opaque UPP }
530
KCCallbackUPP = UniversalProcPtr;
534
uppKCCallbackProcInfo = $00000FB0;
539
* Non-Carbon CFM: available as macro/inline
540
* CarbonLib: in CarbonLib 1.1 and later
541
* Mac OS X: in version 10.0 and later
543
function NewKCCallbackUPP(userRoutine: KCCallbackProcPtr): KCCallbackUPP; external name '_NewKCCallbackUPP'; { old name was NewKCCallbackProc }
545
* DisposeKCCallbackUPP()
548
* Non-Carbon CFM: available as macro/inline
549
* CarbonLib: in CarbonLib 1.1 and later
550
* Mac OS X: in version 10.0 and later
552
procedure DisposeKCCallbackUPP(userUPP: KCCallbackUPP); external name '_DisposeKCCallbackUPP';
554
* InvokeKCCallbackUPP()
557
* Non-Carbon CFM: available as macro/inline
558
* CarbonLib: in CarbonLib 1.1 and later
559
* Mac OS X: in version 10.0 and later
561
function InvokeKCCallbackUPP(keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr; userRoutine: KCCallbackUPP): OSStatus; external name '_InvokeKCCallbackUPP'; { old name was CallKCCallbackProc }
562
{ Keychain Manager callbacks }
567
* Non-Carbon CFM: in KeychainLib 1.0 and later
568
* CarbonLib: in CarbonLib 1.1 and later
569
* Mac OS X: in version 10.0 and later
571
function KCAddCallback(callbackProc: KCCallbackUPP; eventMask: KCEventMask; userContext: UnivPtr): OSStatus; external name '_KCAddCallback';
577
* Non-Carbon CFM: in KeychainLib 1.0 and later
578
* CarbonLib: in CarbonLib 1.1 and later
579
* Mac OS X: in version 10.0 and later
581
function KCRemoveCallback(callbackProc: KCCallbackUPP): OSStatus; external name '_KCRemoveCallback';
584
{ Creating and editing a keychain item }
589
* Non-Carbon CFM: in KeychainLib 1.0 and later
590
* CarbonLib: in CarbonLib 1.1 and later
591
* Mac OS X: in version 10.0 and later
593
function KCNewItem(itemClass: KCItemClass; itemCreator: OSType; length: UInt32; data: UnivPtr; var item: KCItemRef): OSStatus; external name '_KCNewItem';
599
* Non-Carbon CFM: in KeychainLib 1.0 and later
600
* CarbonLib: in CarbonLib 1.1 and later
601
* Mac OS X: in version 10.0 and later
603
function KCSetAttribute(item: KCItemRef; var attr: KCAttribute): OSStatus; external name '_KCSetAttribute';
609
* Non-Carbon CFM: in KeychainLib 1.0 and later
610
* CarbonLib: in CarbonLib 1.1 and later
611
* Mac OS X: in version 10.0 and later
613
function KCGetAttribute(item: KCItemRef; var attr: KCAttribute; var actualLength: UInt32): OSStatus; external name '_KCGetAttribute';
619
* Non-Carbon CFM: in KeychainLib 1.0 and later
620
* CarbonLib: in CarbonLib 1.1 and later
621
* Mac OS X: in version 10.0 and later
623
function KCSetData(item: KCItemRef; length: UInt32; data: UnivPtr): OSStatus; external name '_KCSetData';
625
{ Managing keychain items }
630
* Non-Carbon CFM: in KeychainLib 1.0 and later
631
* CarbonLib: in CarbonLib 1.1 and later
632
* Mac OS X: in version 10.0 and later
634
function KCUpdateItem(item: KCItemRef): OSStatus; external name '_KCUpdateItem';
640
* Non-Carbon CFM: in KeychainLib 1.0 and later
641
* CarbonLib: in CarbonLib 1.1 and later
642
* Mac OS X: in version 10.0 and later
644
function KCReleaseItem(var item: KCItemRef): OSStatus; external name '_KCReleaseItem';
650
* Non-Carbon CFM: in KeychainLib 2.0 and later
651
* CarbonLib: in CarbonLib 1.1 and later
652
* Mac OS X: in version 10.0 and later
654
function KCCopyItem(item: KCItemRef; destKeychain: KCRef; var copy: KCItemRef): OSStatus; external name '_KCCopyItem';
656
{ Searching and enumerating keychain items }
661
* Non-Carbon CFM: in KeychainLib 1.0 and later
662
* CarbonLib: in CarbonLib 1.1 and later
663
* Mac OS X: in version 10.0 and later
665
function KCFindFirstItem(keychain: KCRef; attrList: {Const}KCAttributeListPtr; var search: KCSearchRef; var item: KCItemRef): OSStatus; external name '_KCFindFirstItem';
671
* Non-Carbon CFM: in KeychainLib 1.0 and later
672
* CarbonLib: in CarbonLib 1.1 and later
673
* Mac OS X: in version 10.0 and later
675
function KCFindNextItem(search: KCSearchRef; var item: KCItemRef): OSStatus; external name '_KCFindNextItem';
681
* Non-Carbon CFM: in KeychainLib 1.0 and later
682
* CarbonLib: in CarbonLib 1.1 and later
683
* Mac OS X: in version 10.0 and later
685
function KCReleaseSearch(var search: KCSearchRef): OSStatus; external name '_KCReleaseSearch';
688
{ Managing keychain items }
693
* Non-Carbon CFM: in KeychainLib 1.0 and later
694
* CarbonLib: in CarbonLib 1.1 and later
695
* Mac OS X: in version 10.0 and later
697
function KCDeleteItem(item: KCItemRef): OSStatus; external name '_KCDeleteItem';
703
* Non-Carbon CFM: in KeychainLib 1.0 and later
704
* CarbonLib: in CarbonLib 1.1 and later
705
* Mac OS X: in version 10.0 and later
707
function KCGetData(item: KCItemRef; maxLength: UInt32; data: UnivPtr; var actualLength: UInt32): OSStatus; external name '_KCGetData';
709
{ Storing and retrieving AppleShare passwords }
711
* KCAddAppleSharePassword()
714
* Non-Carbon CFM: in KeychainLib 1.0 and later
715
* CarbonLib: in CarbonLib 1.1 and later
716
* Mac OS X: in version 10.0 and later
718
function KCAddAppleSharePassword(var serverSignature: AFPServerSignature; serverAddress: StringPtr; serverName: StringPtr; volumeName: StringPtr; accountName: StringPtr; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddAppleSharePassword';
721
* KCFindAppleSharePassword()
724
* Non-Carbon CFM: in KeychainLib 1.0 and later
725
* CarbonLib: in CarbonLib 1.1 and later
726
* Mac OS X: in version 10.0 and later
728
function KCFindAppleSharePassword(serverSignature: AFPServerSignaturePtr; serverAddress: StringPtr; serverName: StringPtr; volumeName: StringPtr; accountName: StringPtr; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr): OSStatus; external name '_KCFindAppleSharePassword';
730
{ Storing and retrieving Internet passwords }
732
* KCAddInternetPassword()
735
* Non-Carbon CFM: in KeychainLib 1.0 and later
736
* CarbonLib: in CarbonLib 1.1 and later
737
* Mac OS X: in version 10.0 and later
739
function KCAddInternetPassword(serverName: StringPtr; securityDomain: StringPtr; accountName: StringPtr; port: UInt16; protocol: OSType; authType: OSType; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddInternetPassword';
742
* KCAddInternetPasswordWithPath()
745
* Non-Carbon CFM: in KeychainLib 2.0 and later
746
* CarbonLib: in CarbonLib 1.1 and later
747
* Mac OS X: in version 10.0 and later
749
function KCAddInternetPasswordWithPath(serverName: StringPtr; securityDomain: StringPtr; accountName: StringPtr; path: StringPtr; port: UInt16; protocol: OSType; authType: OSType; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddInternetPasswordWithPath';
752
* KCFindInternetPassword()
755
* Non-Carbon CFM: in KeychainLib 1.0 and later
756
* CarbonLib: in CarbonLib 1.1 and later
757
* Mac OS X: in version 10.0 and later
759
function KCFindInternetPassword(serverName: StringPtr; securityDomain: StringPtr; accountName: StringPtr; port: UInt16; protocol: OSType; authType: OSType; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr): OSStatus; external name '_KCFindInternetPassword';
762
* KCFindInternetPasswordWithPath()
765
* Non-Carbon CFM: in KeychainLib 2.0 and later
766
* CarbonLib: in CarbonLib 1.1 and later
767
* Mac OS X: in version 10.0 and later
769
function KCFindInternetPasswordWithPath(serverName: StringPtr; securityDomain: StringPtr; accountName: StringPtr; path: StringPtr; port: UInt16; protocol: OSType; authType: OSType; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr): OSStatus; external name '_KCFindInternetPasswordWithPath';
771
{ Storing and retrieving other types of passwords }
773
* KCAddGenericPassword()
776
* Non-Carbon CFM: in KeychainLib 1.0 and later
777
* CarbonLib: in CarbonLib 1.1 and later
778
* Mac OS X: in version 10.0 and later
780
function KCAddGenericPassword(serviceName: StringPtr; accountName: StringPtr; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddGenericPassword';
783
* KCFindGenericPassword()
786
* Non-Carbon CFM: in KeychainLib 1.0 and later
787
* CarbonLib: in CarbonLib 1.1 and later
788
* Mac OS X: in version 10.0 and later
790
function KCFindGenericPassword(serviceName: StringPtr; accountName: StringPtr; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr): OSStatus; external name '_KCFindGenericPassword';
796
* Non-Carbon CFM: in KeychainLib 1.0 and later
797
* CarbonLib: in CarbonLib 1.1 and later
798
* Mac OS X: in version 10.0 and later
800
function KCLock(keychain: KCRef): OSStatus; external name '_KCLock';