~ubuntu-branches/ubuntu/feisty/fpc/feisty

« back to all changes in this revision

Viewing changes to packages/extra/univint/KeychainCore.pas

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-01-27 20:08:50 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070127200850-9mrptaqqjsx9nwa7
Tags: 2.0.4-5
* Fixed Build-Depends.
* Add myself to Uploaders in debian/control.
* Make sure that the sources are really patched before building them.
* Build unit 'libc' on powerpc too.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{
 
2
     File:       KeychainCore.p
 
3
 
 
4
     Contains:   Keychain low-level Interfaces
 
5
 
 
6
     Version:    Technology: Keychain 3.0
 
7
                 Release:    Universal Interfaces 3.4.2
 
8
 
 
9
     Copyright:  � 2000-2002 by Apple Computer, Inc., all rights reserved
 
10
 
 
11
     Bugs?:      For bug reports, consult the following page on
 
12
                 the World Wide Web:
 
13
 
 
14
                     http://www.freepascal.org/bugs.html
 
15
 
 
16
}
 
17
 
 
18
 
 
19
{
 
20
    Modified for use with Free Pascal
 
21
    Version 200
 
22
    Please report any bugs to <gpc@microbizz.nl>
 
23
}
 
24
 
 
25
{$mode macpas}
 
26
{$packenum 1}
 
27
{$macro on}
 
28
{$inline on}
 
29
{$CALLING MWPASCAL}
 
30
 
 
31
unit KeychainCore;
 
32
interface
 
33
{$setc UNIVERSAL_INTERFACES_VERSION := $0342}
 
34
{$setc GAP_INTERFACES_VERSION := $0200}
 
35
 
 
36
{$ifc not defined USE_CFSTR_CONSTANT_MACROS}
 
37
    {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
 
38
{$endc}
 
39
 
 
40
{$ifc defined CPUPOWERPC and defined CPUI386}
 
41
        {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
 
42
{$endc}
 
43
{$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
 
44
        {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
 
45
{$endc}
 
46
 
 
47
{$ifc not defined __ppc__ and defined CPUPOWERPC}
 
48
        {$setc __ppc__ := 1}
 
49
{$elsec}
 
50
        {$setc __ppc__ := 0}
 
51
{$endc}
 
52
{$ifc not defined __i386__ and defined CPUI386}
 
53
        {$setc __i386__ := 1}
 
54
{$elsec}
 
55
        {$setc __i386__ := 0}
 
56
{$endc}
 
57
 
 
58
{$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
 
59
        {$error Conflicting definitions for __ppc__ and __i386__}
 
60
{$endc}
 
61
 
 
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}
 
68
{$elsec}
 
69
        {$error Neither __ppc__ nor __i386__ is defined.}
 
70
{$endc}
 
71
{$setc TARGET_CPU_PPC_64 := FALSE}
 
72
 
 
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}
 
79
{$elsec}
 
80
        {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
 
81
{$endc}
 
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;
 
108
 
 
109
{$ALIGN MAC68K}
 
110
 
 
111
{ Data structures and types }
 
112
 
 
113
type
 
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  }
 
127
        end;
 
128
 
 
129
        SecKeychainAttributeListPtr = ^SecKeychainAttributeList;
 
130
        SecKeychainAttributeList = record
 
131
                count:                                  UInt32;                                                                 {  How many attributes in the array  }
 
132
                attr:                                   SecKeychainAttributePtr;                                {  Pointer to first attribute in array  }
 
133
        end;
 
134
 
 
135
        KCRef                                                           = SecKeychainRef;
 
136
        KCItemRef                                                       = SecKeychainItemRef;
 
137
        KCSearchRef                                                     = SecKeychainSearchRef;
 
138
        KCRefPtr                                                        = ^KCRef;
 
139
        KCItemRefPtr                                            = ^KCItemRef;
 
140
        KCSearchRefPtr                                          = ^KCSearchRef;
 
141
        KCAttribute                                                     = SecKeychainAttribute;
 
142
        KCAttributePtr                                          = ^KCAttribute;
 
143
        KCAttributeList                                         = SecKeychainAttributeList;
 
144
        KCAttributeListPtr                                      = ^KCAttributeList;
 
145
        KCAttrType                                                      = SecKeychainAttrType;
 
146
        KCStatus                                                        = SecKeychainStatus;
 
147
        KCEvent                                         = UInt16;
 
148
const
 
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  }
 
160
 
 
161
 
 
162
type
 
163
        KCEventMask                             = UInt16;
 
164
const
 
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 }
 
176
 
 
177
 
 
178
type
 
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
 
184
                version:                                UInt32;
 
185
                item:                                   KCItemRef;
 
186
                processID:                              ProcessSerialNumber;
 
187
                event:                                  EventRecord;
 
188
                keychain:                               KCRef;
 
189
        end;
 
190
 
 
191
 
 
192
const
 
193
        kUnlockStateKCStatus            = 1;
 
194
        kRdPermKCStatus                         = 2;
 
195
        kWrPermKCStatus                         = 4;
 
196
 
 
197
 
 
198
        kCertificateKCItemClass         = $63657274 (* 'cert' *);                                               {  Certificate  }
 
199
        kAppleSharePasswordKCItemClass = $61736870 (* 'ashp' *);                                        {  Appleshare password  }
 
200
        kInternetPasswordKCItemClass = $696E6574 (* 'inet' *);                                          {  Internet password  }
 
201
        kGenericPasswordKCItemClass     = $67656E70 (* 'genp' *);                                               {  Generic password  }
 
202
 
 
203
 
 
204
type
 
205
        KCItemClass                                                     = FourCharCode;
 
206
 
 
207
const
 
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)  }
 
254
 
 
255
 
 
256
type
 
257
        KCItemAttr                                                      = FourCharCode;
 
258
 
 
259
const
 
260
        kKCAuthTypeNTLM                         = $6E746C6D (* 'ntlm' *);
 
261
        kKCAuthTypeMSN                          = $6D736E61 (* 'msna' *);
 
262
        kKCAuthTypeDPA                          = $64706161 (* 'dpaa' *);
 
263
        kKCAuthTypeRPA                          = $72706161 (* 'rpaa' *);
 
264
        kKCAuthTypeHTTPDigest           = $68747464 (* 'httd' *);
 
265
        kKCAuthTypeDefault                      = $64666C74 (* 'dflt' *);
 
266
 
 
267
 
 
268
type
 
269
        KCAuthType                                                      = FourCharCode;
 
270
 
 
271
const
 
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' *);
 
285
 
 
286
 
 
287
type
 
288
        KCProtocolType                                          = FourCharCode;
 
289
        KCCertAddOptions                        = UInt32;
 
290
const
 
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;
 
308
 
 
309
 
 
310
type
 
311
        KCVerifyStopOn                          = UInt16;
 
312
const
 
313
        kPolicyKCStopOn                         = 0;
 
314
        kNoneKCStopOn                           = 1;
 
315
        kFirstPassKCStopOn                      = 2;
 
316
        kFirstFailKCStopOn                      = 3;
 
317
 
 
318
 
 
319
type
 
320
        KCCertSearchOptions             = UInt32;
 
321
const
 
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;
 
348
        kCertSearchAny                          = 0;
 
349
 
 
350
        {        Other constants        }
 
351
        kAnyPort                                        = 0;
 
352
 
 
353
        kAnyProtocol                            = 0;
 
354
        kAnyAuthType                            = 0;
 
355
 
 
356
        {        Opening and getting information about the Keychain Manager     }
 
357
        {
 
358
         *  KCGetKeychainManagerVersion()
 
359
         *  
 
360
         *  Availability:
 
361
         *    Non-Carbon CFM:   in KeychainLib 1.0 and later
 
362
         *    CarbonLib:        in CarbonLib 1.1 and later
 
363
         *    Mac OS X:         not available
 
364
                }
 
365
function KCGetKeychainManagerVersion(var returnVers: UInt32): OSStatus; external name '_KCGetKeychainManagerVersion';
 
366
 
 
367
{$ifc TARGET_RT_MAC_CFM}
 
368
{
 
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:
 
372
        
 
373
            gKeychainManagerAvailable = FALSE;
 
374
            IF @KCGetKeychainManagerVersion <> kUnresolvedCFragSymbolAddress THEN
 
375
                gKeychainManagerAvailable = TRUE;
 
376
            end
 
377
    
 
378
    }
 
379
{$elsec}
 
380
  {$ifc TARGET_RT_MAC_MACHO}
 
381
  {$endc}
 
382
{$endc}
 
383
 
 
384
{ Managing the Human Interface }
 
385
{
 
386
 *  KCSetInteractionAllowed()
 
387
 *  
 
388
 *  Availability:
 
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
 
392
 }
 
393
function KCSetInteractionAllowed(state: boolean): OSStatus; external name '_KCSetInteractionAllowed';
 
394
 
 
395
{
 
396
 *  KCIsInteractionAllowed()
 
397
 *  
 
398
 *  Availability:
 
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
 
402
 }
 
403
function KCIsInteractionAllowed: boolean; external name '_KCIsInteractionAllowed';
 
404
 
 
405
{ Creating references to keychains }
 
406
{
 
407
 *  KCMakeKCRefFromFSSpec()
 
408
 *  
 
409
 *  Availability:
 
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
 
413
 }
 
414
function KCMakeKCRefFromFSSpec(var keychainFSSpec: FSSpec; var keychain: KCRef): OSStatus; external name '_KCMakeKCRefFromFSSpec';
 
415
 
 
416
{
 
417
 *  KCMakeKCRefFromAlias()
 
418
 *  
 
419
 *  Availability:
 
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
 
423
 }
 
424
function KCMakeKCRefFromAlias(keychainAlias: AliasHandle; var keychain: KCRef): OSStatus; external name '_KCMakeKCRefFromAlias';
 
425
 
 
426
{
 
427
 *  KCMakeAliasFromKCRef()
 
428
 *  
 
429
 *  Availability:
 
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
 
433
 }
 
434
function KCMakeAliasFromKCRef(keychain: KCRef; var keychainAlias: AliasHandle): OSStatus; external name '_KCMakeAliasFromKCRef';
 
435
 
 
436
{
 
437
 *  KCReleaseKeychain()
 
438
 *  
 
439
 *  Availability:
 
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
 
443
 }
 
444
function KCReleaseKeychain(var keychain: KCRef): OSStatus; external name '_KCReleaseKeychain';
 
445
 
 
446
{ Specifying the default keychain }
 
447
{
 
448
 *  KCGetDefaultKeychain()
 
449
 *  
 
450
 *  Availability:
 
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
 
454
 }
 
455
function KCGetDefaultKeychain(var keychain: KCRef): OSStatus; external name '_KCGetDefaultKeychain';
 
456
 
 
457
{
 
458
 *  KCSetDefaultKeychain()
 
459
 *  
 
460
 *  Availability:
 
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
 
464
 }
 
465
function KCSetDefaultKeychain(keychain: KCRef): OSStatus; external name '_KCSetDefaultKeychain';
 
466
 
 
467
{ Getting information about a keychain }
 
468
{
 
469
 *  KCGetStatus()
 
470
 *  
 
471
 *  Availability:
 
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
 
475
 }
 
476
function KCGetStatus(keychain: KCRef; var keychainStatus: UInt32): OSStatus; external name '_KCGetStatus';
 
477
 
 
478
{
 
479
 *  KCGetKeychain()
 
480
 *  
 
481
 *  Availability:
 
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
 
485
 }
 
486
function KCGetKeychain(item: KCItemRef; var keychain: KCRef): OSStatus; external name '_KCGetKeychain';
 
487
 
 
488
{
 
489
 *  KCGetKeychainName()
 
490
 *  
 
491
 *  Availability:
 
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
 
495
 }
 
496
function KCGetKeychainName(keychain: KCRef; keychainName: StringPtr): OSStatus; external name '_KCGetKeychainName';
 
497
 
 
498
{ Enumerating available keychains }
 
499
{
 
500
 *  KCCountKeychains()
 
501
 *  
 
502
 *  Availability:
 
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
 
506
 }
 
507
function KCCountKeychains: UInt16; external name '_KCCountKeychains';
 
508
 
 
509
{
 
510
 *  KCGetIndKeychain()
 
511
 *  
 
512
 *  Availability:
 
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
 
516
 }
 
517
function KCGetIndKeychain(index: UInt16; var keychain: KCRef): OSStatus; external name '_KCGetIndKeychain';
 
518
 
 
519
 
 
520
type
 
521
{$ifc TYPED_FUNCTION_POINTERS}
 
522
        KCCallbackProcPtr = function(keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr): OSStatus;
 
523
{$elsec}
 
524
        KCCallbackProcPtr = ProcPtr;
 
525
{$endc}
 
526
 
 
527
{$ifc OPAQUE_UPP_TYPES}
 
528
        KCCallbackUPP = ^SInt32; { an opaque UPP }
 
529
{$elsec}
 
530
        KCCallbackUPP = UniversalProcPtr;
 
531
{$endc} 
 
532
 
 
533
const
 
534
        uppKCCallbackProcInfo = $00000FB0;
 
535
        {
 
536
         *  NewKCCallbackUPP()
 
537
         *  
 
538
         *  Availability:
 
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
 
542
                }
 
543
function NewKCCallbackUPP(userRoutine: KCCallbackProcPtr): KCCallbackUPP; external name '_NewKCCallbackUPP'; { old name was NewKCCallbackProc }
 
544
{
 
545
 *  DisposeKCCallbackUPP()
 
546
 *  
 
547
 *  Availability:
 
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
 
551
 }
 
552
procedure DisposeKCCallbackUPP(userUPP: KCCallbackUPP); external name '_DisposeKCCallbackUPP';
 
553
{
 
554
 *  InvokeKCCallbackUPP()
 
555
 *  
 
556
 *  Availability:
 
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
 
560
 }
 
561
function InvokeKCCallbackUPP(keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr; userRoutine: KCCallbackUPP): OSStatus; external name '_InvokeKCCallbackUPP'; { old name was CallKCCallbackProc }
 
562
{ Keychain Manager callbacks }
 
563
{
 
564
 *  KCAddCallback()
 
565
 *  
 
566
 *  Availability:
 
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
 
570
 }
 
571
function KCAddCallback(callbackProc: KCCallbackUPP; eventMask: KCEventMask; userContext: UnivPtr): OSStatus; external name '_KCAddCallback';
 
572
 
 
573
{
 
574
 *  KCRemoveCallback()
 
575
 *  
 
576
 *  Availability:
 
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
 
580
 }
 
581
function KCRemoveCallback(callbackProc: KCCallbackUPP): OSStatus; external name '_KCRemoveCallback';
 
582
 
 
583
 
 
584
{ Creating and editing a keychain item }
 
585
{
 
586
 *  KCNewItem()
 
587
 *  
 
588
 *  Availability:
 
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
 
592
 }
 
593
function KCNewItem(itemClass: KCItemClass; itemCreator: OSType; length: UInt32; data: UnivPtr; var item: KCItemRef): OSStatus; external name '_KCNewItem';
 
594
 
 
595
{
 
596
 *  KCSetAttribute()
 
597
 *  
 
598
 *  Availability:
 
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
 
602
 }
 
603
function KCSetAttribute(item: KCItemRef; var attr: KCAttribute): OSStatus; external name '_KCSetAttribute';
 
604
 
 
605
{
 
606
 *  KCGetAttribute()
 
607
 *  
 
608
 *  Availability:
 
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
 
612
 }
 
613
function KCGetAttribute(item: KCItemRef; var attr: KCAttribute; var actualLength: UInt32): OSStatus; external name '_KCGetAttribute';
 
614
 
 
615
{
 
616
 *  KCSetData()
 
617
 *  
 
618
 *  Availability:
 
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
 
622
 }
 
623
function KCSetData(item: KCItemRef; length: UInt32; data: UnivPtr): OSStatus; external name '_KCSetData';
 
624
 
 
625
{ Managing keychain items }
 
626
{
 
627
 *  KCUpdateItem()
 
628
 *  
 
629
 *  Availability:
 
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
 
633
 }
 
634
function KCUpdateItem(item: KCItemRef): OSStatus; external name '_KCUpdateItem';
 
635
 
 
636
{
 
637
 *  KCReleaseItem()
 
638
 *  
 
639
 *  Availability:
 
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
 
643
 }
 
644
function KCReleaseItem(var item: KCItemRef): OSStatus; external name '_KCReleaseItem';
 
645
 
 
646
{
 
647
 *  KCCopyItem()
 
648
 *  
 
649
 *  Availability:
 
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
 
653
 }
 
654
function KCCopyItem(item: KCItemRef; destKeychain: KCRef; var copy: KCItemRef): OSStatus; external name '_KCCopyItem';
 
655
 
 
656
{ Searching and enumerating keychain items }
 
657
{
 
658
 *  KCFindFirstItem()
 
659
 *  
 
660
 *  Availability:
 
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
 
664
 }
 
665
function KCFindFirstItem(keychain: KCRef; attrList: {Const}KCAttributeListPtr; var search: KCSearchRef; var item: KCItemRef): OSStatus; external name '_KCFindFirstItem';
 
666
 
 
667
{
 
668
 *  KCFindNextItem()
 
669
 *  
 
670
 *  Availability:
 
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
 
674
 }
 
675
function KCFindNextItem(search: KCSearchRef; var item: KCItemRef): OSStatus; external name '_KCFindNextItem';
 
676
 
 
677
{
 
678
 *  KCReleaseSearch()
 
679
 *  
 
680
 *  Availability:
 
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
 
684
 }
 
685
function KCReleaseSearch(var search: KCSearchRef): OSStatus; external name '_KCReleaseSearch';
 
686
 
 
687
 
 
688
{ Managing keychain items }
 
689
{
 
690
 *  KCDeleteItem()
 
691
 *  
 
692
 *  Availability:
 
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
 
696
 }
 
697
function KCDeleteItem(item: KCItemRef): OSStatus; external name '_KCDeleteItem';
 
698
 
 
699
{
 
700
 *  KCGetData()
 
701
 *  
 
702
 *  Availability:
 
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
 
706
 }
 
707
function KCGetData(item: KCItemRef; maxLength: UInt32; data: UnivPtr; var actualLength: UInt32): OSStatus; external name '_KCGetData';
 
708
 
 
709
{ Storing and retrieving AppleShare passwords }
 
710
{
 
711
 *  KCAddAppleSharePassword()
 
712
 *  
 
713
 *  Availability:
 
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
 
717
 }
 
718
function KCAddAppleSharePassword(var serverSignature: AFPServerSignature; serverAddress: StringPtr; serverName: StringPtr; volumeName: StringPtr; accountName: StringPtr; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddAppleSharePassword';
 
719
 
 
720
{
 
721
 *  KCFindAppleSharePassword()
 
722
 *  
 
723
 *  Availability:
 
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
 
727
 }
 
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';
 
729
 
 
730
{ Storing and retrieving Internet passwords }
 
731
{
 
732
 *  KCAddInternetPassword()
 
733
 *  
 
734
 *  Availability:
 
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
 
738
 }
 
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';
 
740
 
 
741
{
 
742
 *  KCAddInternetPasswordWithPath()
 
743
 *  
 
744
 *  Availability:
 
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
 
748
 }
 
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';
 
750
 
 
751
{
 
752
 *  KCFindInternetPassword()
 
753
 *  
 
754
 *  Availability:
 
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
 
758
 }
 
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';
 
760
 
 
761
{
 
762
 *  KCFindInternetPasswordWithPath()
 
763
 *  
 
764
 *  Availability:
 
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
 
768
 }
 
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';
 
770
 
 
771
{ Storing and retrieving other types of passwords }
 
772
{
 
773
 *  KCAddGenericPassword()
 
774
 *  
 
775
 *  Availability:
 
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
 
779
 }
 
780
function KCAddGenericPassword(serviceName: StringPtr; accountName: StringPtr; passwordLength: UInt32; passwordData: UnivPtr; item: KCItemRefPtr): OSStatus; external name '_KCAddGenericPassword';
 
781
 
 
782
{
 
783
 *  KCFindGenericPassword()
 
784
 *  
 
785
 *  Availability:
 
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
 
789
 }
 
790
function KCFindGenericPassword(serviceName: StringPtr; accountName: StringPtr; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr): OSStatus; external name '_KCFindGenericPassword';
 
791
 
 
792
{
 
793
 *  KCLock()
 
794
 *  
 
795
 *  Availability:
 
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
 
799
 }
 
800
function KCLock(keychain: KCRef): OSStatus; external name '_KCLock';
 
801
 
 
802
 
 
803
{$ALIGN MAC68K}
 
804
 
 
805
 
 
806
end.