KeychainCore.pas 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057
  1. {
  2. File: OSServices/KeychainCore.h
  3. Contains: *** DEPRECATED *** Keychain low-level Interfaces
  4. Copyright: (c) 2000-2011 Apple Inc. All rights reserved.
  5. Bugs?: For bug reports, consult the following page on
  6. the World Wide Web:
  7. http://bugs.freepascal.org
  8. }
  9. {
  10. Modified for use with Free Pascal
  11. Version 308
  12. Please report any bugs to <[email protected]>
  13. }
  14. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  15. {$mode macpas}
  16. {$modeswitch cblocks}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$calling mwpascal}
  21. {$IFNDEF FPC_DOTTEDUNITS}
  22. unit KeychainCore;
  23. {$ENDIF FPC_DOTTEDUNITS}
  24. interface
  25. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  26. {$setc GAP_INTERFACES_VERSION := $0308}
  27. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  28. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  29. {$endc}
  30. {$ifc defined CPUPOWERPC and defined CPUI386}
  31. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  32. {$endc}
  33. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  34. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  35. {$endc}
  36. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  37. {$setc __ppc__ := 1}
  38. {$elsec}
  39. {$setc __ppc__ := 0}
  40. {$endc}
  41. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  42. {$setc __ppc64__ := 1}
  43. {$elsec}
  44. {$setc __ppc64__ := 0}
  45. {$endc}
  46. {$ifc not defined __i386__ and defined CPUI386}
  47. {$setc __i386__ := 1}
  48. {$elsec}
  49. {$setc __i386__ := 0}
  50. {$endc}
  51. {$ifc not defined __x86_64__ and defined CPUX86_64}
  52. {$setc __x86_64__ := 1}
  53. {$elsec}
  54. {$setc __x86_64__ := 0}
  55. {$endc}
  56. {$ifc not defined __arm__ and defined CPUARM}
  57. {$setc __arm__ := 1}
  58. {$elsec}
  59. {$setc __arm__ := 0}
  60. {$endc}
  61. {$ifc not defined __arm64__ and defined CPUAARCH64}
  62. {$setc __arm64__ := 1}
  63. {$elsec}
  64. {$setc __arm64__ := 0}
  65. {$endc}
  66. {$ifc defined cpu64}
  67. {$setc __LP64__ := 1}
  68. {$elsec}
  69. {$setc __LP64__ := 0}
  70. {$endc}
  71. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  72. {$error Conflicting definitions for __ppc__ and __i386__}
  73. {$endc}
  74. {$ifc defined __ppc__ and __ppc__}
  75. {$setc TARGET_CPU_PPC := TRUE}
  76. {$setc TARGET_CPU_PPC64 := FALSE}
  77. {$setc TARGET_CPU_X86 := FALSE}
  78. {$setc TARGET_CPU_X86_64 := FALSE}
  79. {$setc TARGET_CPU_ARM := FALSE}
  80. {$setc TARGET_CPU_ARM64 := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_IPHONE := FALSE}
  83. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  84. {$setc TARGET_OS_EMBEDDED := FALSE}
  85. {$elifc defined __ppc64__ and __ppc64__}
  86. {$setc TARGET_CPU_PPC := FALSE}
  87. {$setc TARGET_CPU_PPC64 := TRUE}
  88. {$setc TARGET_CPU_X86 := FALSE}
  89. {$setc TARGET_CPU_X86_64 := FALSE}
  90. {$setc TARGET_CPU_ARM := FALSE}
  91. {$setc TARGET_CPU_ARM64 := FALSE}
  92. {$setc TARGET_OS_MAC := TRUE}
  93. {$setc TARGET_OS_IPHONE := FALSE}
  94. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  95. {$setc TARGET_OS_EMBEDDED := FALSE}
  96. {$elifc defined __i386__ and __i386__}
  97. {$setc TARGET_CPU_PPC := FALSE}
  98. {$setc TARGET_CPU_PPC64 := FALSE}
  99. {$setc TARGET_CPU_X86 := TRUE}
  100. {$setc TARGET_CPU_X86_64 := FALSE}
  101. {$setc TARGET_CPU_ARM := FALSE}
  102. {$setc TARGET_CPU_ARM64 := FALSE}
  103. {$ifc defined iphonesim}
  104. {$setc TARGET_OS_MAC := FALSE}
  105. {$setc TARGET_OS_IPHONE := TRUE}
  106. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  107. {$elsec}
  108. {$setc TARGET_OS_MAC := TRUE}
  109. {$setc TARGET_OS_IPHONE := FALSE}
  110. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  111. {$endc}
  112. {$setc TARGET_OS_EMBEDDED := FALSE}
  113. {$elifc defined __x86_64__ and __x86_64__}
  114. {$setc TARGET_CPU_PPC := FALSE}
  115. {$setc TARGET_CPU_PPC64 := FALSE}
  116. {$setc TARGET_CPU_X86 := FALSE}
  117. {$setc TARGET_CPU_X86_64 := TRUE}
  118. {$setc TARGET_CPU_ARM := FALSE}
  119. {$setc TARGET_CPU_ARM64 := FALSE}
  120. {$ifc defined iphonesim}
  121. {$setc TARGET_OS_MAC := FALSE}
  122. {$setc TARGET_OS_IPHONE := TRUE}
  123. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  124. {$elsec}
  125. {$setc TARGET_OS_MAC := TRUE}
  126. {$setc TARGET_OS_IPHONE := FALSE}
  127. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  128. {$endc}
  129. {$setc TARGET_OS_EMBEDDED := FALSE}
  130. {$elifc defined __arm__ and __arm__}
  131. {$setc TARGET_CPU_PPC := FALSE}
  132. {$setc TARGET_CPU_PPC64 := FALSE}
  133. {$setc TARGET_CPU_X86 := FALSE}
  134. {$setc TARGET_CPU_X86_64 := FALSE}
  135. {$setc TARGET_CPU_ARM := TRUE}
  136. {$setc TARGET_CPU_ARM64 := FALSE}
  137. {$setc TARGET_OS_MAC := FALSE}
  138. {$setc TARGET_OS_IPHONE := TRUE}
  139. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  140. {$setc TARGET_OS_EMBEDDED := TRUE}
  141. {$elifc defined __arm64__ and __arm64__}
  142. {$setc TARGET_CPU_PPC := FALSE}
  143. {$setc TARGET_CPU_PPC64 := FALSE}
  144. {$setc TARGET_CPU_X86 := FALSE}
  145. {$setc TARGET_CPU_X86_64 := FALSE}
  146. {$setc TARGET_CPU_ARM := FALSE}
  147. {$setc TARGET_CPU_ARM64 := TRUE}
  148. {$ifc defined ios}
  149. {$setc TARGET_OS_MAC := FALSE}
  150. {$setc TARGET_OS_IPHONE := TRUE}
  151. {$setc TARGET_OS_EMBEDDED := TRUE}
  152. {$elsec}
  153. {$setc TARGET_OS_MAC := TRUE}
  154. {$setc TARGET_OS_IPHONE := FALSE}
  155. {$setc TARGET_OS_EMBEDDED := FALSE}
  156. {$endc}
  157. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  158. {$elsec}
  159. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
  160. {$endc}
  161. {$ifc defined __LP64__ and __LP64__ }
  162. {$setc TARGET_CPU_64 := TRUE}
  163. {$elsec}
  164. {$setc TARGET_CPU_64 := FALSE}
  165. {$endc}
  166. {$ifc defined FPC_BIG_ENDIAN}
  167. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  168. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  169. {$elifc defined FPC_LITTLE_ENDIAN}
  170. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  171. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  172. {$elsec}
  173. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  174. {$endc}
  175. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  176. {$setc CALL_NOT_IN_CARBON := FALSE}
  177. {$setc OLDROUTINENAMES := FALSE}
  178. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  179. {$setc OPAQUE_UPP_TYPES := TRUE}
  180. {$setc OTCARBONAPPLICATION := TRUE}
  181. {$setc OTKERNEL := FALSE}
  182. {$setc PM_USE_SESSION_APIS := TRUE}
  183. {$setc TARGET_API_MAC_CARBON := TRUE}
  184. {$setc TARGET_API_MAC_OS8 := FALSE}
  185. {$setc TARGET_API_MAC_OSX := TRUE}
  186. {$setc TARGET_CARBON := TRUE}
  187. {$setc TARGET_CPU_68K := FALSE}
  188. {$setc TARGET_CPU_MIPS := FALSE}
  189. {$setc TARGET_CPU_SPARC := FALSE}
  190. {$setc TARGET_OS_UNIX := FALSE}
  191. {$setc TARGET_OS_WIN32 := FALSE}
  192. {$setc TARGET_RT_MAC_68881 := FALSE}
  193. {$setc TARGET_RT_MAC_CFM := FALSE}
  194. {$setc TARGET_RT_MAC_MACHO := TRUE}
  195. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  196. {$setc TYPE_BOOL := FALSE}
  197. {$setc TYPE_EXTENDED := FALSE}
  198. {$setc TYPE_LONGLONG := TRUE}
  199. {$IFDEF FPC_DOTTEDUNITS}
  200. uses MacOsApi.MacTypes,MacOsApi.Files,MacOsApi.Aliases,MacOsApi.CodeFragments,MacOsApi.MacErrors,MacOsApi.Processes,MacOsApi.Events,MacOsApi.SecBase;
  201. {$ELSE FPC_DOTTEDUNITS}
  202. uses MacTypes,Files,Aliases,CodeFragments,MacErrors,Processes,Events,SecBase;
  203. {$ENDIF FPC_DOTTEDUNITS}
  204. {$endc} {not MACOSALLINCLUDE}
  205. {$ifc TARGET_OS_MAC}
  206. {$ALIGN MAC68K}
  207. (*
  208. Also defined in SecBase
  209. { Data structures and types }
  210. type
  211. SecKeychainRef = ^OpaqueSecKeychainRef; { an opaque type }
  212. OpaqueSecKeychainRef = record end;
  213. SecKeychainRefPtr = ^SecKeychainRef; { when a var xx:SecKeychainRef parameter can be nil, it is changed to xx: SecKeychainRefPtr }
  214. SecKeychainItemRef = ^OpaqueSecKeychainItemRef; { an opaque type }
  215. OpaqueSecKeychainItemRef = record end;
  216. SecKeychainItemRefPtr = ^SecKeychainItemRef; { when a var xx:SecKeychainItemRef parameter can be nil, it is changed to xx: SecKeychainItemRefPtr }
  217. SecKeychainSearchRef = ^OpaqueSecKeychainSearchRef; { an opaque type }
  218. OpaqueSecKeychainSearchRef = record end;
  219. SecKeychainSearchRefPtr = ^SecKeychainSearchRef; { when a var xx:SecKeychainSearchRef parameter can be nil, it is changed to xx: SecKeychainSearchRefPtr }
  220. SecKeychainAttrType = OSType;
  221. SecKeychainStatus = UInt32;
  222. SecKeychainAttribute = record
  223. tag: SecKeychainAttrType; { 4-byte attribute tag }
  224. length: UInt32; { Length of attribute data }
  225. data: UnivPtr; { Pointer to attribute data }
  226. end;
  227. SecKeychainAttributePtr = ^SecKeychainAttribute;
  228. type
  229. SecKeychainAttributeListPtr = ^SecKeychainAttributeList;
  230. SecKeychainAttributeList = record
  231. count: UInt32; { How many attributes in the array }
  232. attr: SecKeychainAttributePtr; { Pointer to first attribute in array }
  233. end;
  234. *)
  235. type
  236. KCRef = SecKeychainRef;
  237. KCItemRef = SecKeychainItemRef;
  238. KCSearchRef = SecKeychainSearchRef;
  239. KCRefPtr = ^KCRef;
  240. KCItemRefPtr = ^KCItemRef;
  241. KCSearchRefPtr = ^KCSearchRef;
  242. KCAttribute = SecKeychainAttribute;
  243. KCAttributePtr = ^KCAttribute;
  244. KCAttributeList = SecKeychainAttributeList;
  245. KCAttributeListPtr = ^KCAttributeList;
  246. KCAttrType = SecKeychainAttrType;
  247. KCStatus = SecKeychainStatus;
  248. KCEvent = UInt16;
  249. const
  250. kIdleKCEvent = 0; { null event }
  251. kLockKCEvent = 1; { a keychain was locked }
  252. kUnlockKCEvent = 2; { a keychain was unlocked }
  253. kAddKCEvent = 3; { an item was added to a keychain }
  254. kDeleteKCEvent = 4; { an item was deleted from a keychain }
  255. kUpdateKCEvent = 5; { an item was updated }
  256. kPasswordChangedKCEvent = 6; { the keychain identity was changed }
  257. kSystemKCEvent = 8; { the keychain client can process events }
  258. kDefaultChangedKCEvent = 9; { the default keychain was changed }
  259. kDataAccessKCEvent = 10; { a process has accessed a keychain item's data }
  260. kKeychainListChangedKCEvent = 11; { the list of keychains has changed }
  261. type
  262. KCEventMask = UInt16;
  263. const
  264. kIdleKCEventMask = 1 shl kIdleKCEvent;
  265. kLockKCEventMask = 1 shl kLockKCEvent;
  266. kUnlockKCEventMask = 1 shl kUnlockKCEvent;
  267. kAddKCEventMask = 1 shl kAddKCEvent;
  268. kDeleteKCEventMask = 1 shl kDeleteKCEvent;
  269. kUpdateKCEventMask = 1 shl kUpdateKCEvent;
  270. kPasswordChangedKCEventMask = 1 shl kPasswordChangedKCEvent;
  271. kSystemEventKCEventMask = 1 shl kSystemKCEvent;
  272. kDefaultChangedKCEventMask = 1 shl kDefaultChangedKCEvent;
  273. kDataAccessKCEventMask = 1 shl kDataAccessKCEvent;
  274. kEveryKCEventMask = $FFFF; { all of the above}
  275. type
  276. AFPServerSignature = packed array [0..15] of UInt8;
  277. AFPServerSignaturePtr = ^AFPServerSignature; { when a VAR xx: AFPServerSignature parameter can be nil, it is changed to xx: AFPServerSignaturePtr }
  278. KCPublicKeyHash = packed array [0..19] of UInt8;
  279. type
  280. KCCallbackInfoPtr = ^KCCallbackInfo;
  281. KCCallbackInfo = record
  282. version: UInt32;
  283. item: KCItemRef;
  284. processID: array [0..1] of SInt32; { unavailable on Mac OS X}
  285. event: array [0..4] of SInt32; { unavailable on Mac OS X}
  286. keychain: KCRef;
  287. end;
  288. const
  289. kUnlockStateKCStatus = 1;
  290. kRdPermKCStatus = 2;
  291. kWrPermKCStatus = 4;
  292. const
  293. kCertificateKCItemClass = FourCharCode('cert'); { Certificate }
  294. kAppleSharePasswordKCItemClass = FourCharCode('ashp'); { Appleshare password }
  295. kInternetPasswordKCItemClass = FourCharCode('inet'); { Internet password }
  296. kGenericPasswordKCItemClass = FourCharCode('genp'); { Generic password }
  297. type
  298. KCItemClass = FourCharCode;
  299. const
  300. { Common attributes }
  301. kClassKCItemAttr = FourCharCode('clas'); { Item class (KCItemClass) }
  302. kCreationDateKCItemAttr = FourCharCode('cdat'); { Date the item was created (UInt32) }
  303. kModDateKCItemAttr = FourCharCode('mdat'); { Last time the item was updated (UInt32) }
  304. kDescriptionKCItemAttr = FourCharCode('desc'); { User-visible description string (string) }
  305. kCommentKCItemAttr = FourCharCode('icmt'); { User's comment about the item (string) }
  306. kCreatorKCItemAttr = FourCharCode('crtr'); { Item's creator (OSType) }
  307. kTypeKCItemAttr = FourCharCode('type'); { Item's type (OSType) }
  308. kScriptCodeKCItemAttr = FourCharCode('scrp'); { Script code for all strings (ScriptCode) }
  309. kLabelKCItemAttr = FourCharCode('labl'); { Item label (string) }
  310. kInvisibleKCItemAttr = FourCharCode('invi'); { Invisible (boolean) }
  311. kNegativeKCItemAttr = FourCharCode('nega'); { Negative (boolean) }
  312. kCustomIconKCItemAttr = FourCharCode('cusi'); { Custom icon (boolean) }
  313. kAccountKCItemAttr = FourCharCode('acct'); { User account (string) }
  314. { Unique Generic password attributes }
  315. kServiceKCItemAttr = FourCharCode('svce'); { Service (string) }
  316. kGenericKCItemAttr = FourCharCode('gena'); { User-defined attribute (untyped bytes) }
  317. { Unique Internet password attributes }
  318. kSecurityDomainKCItemAttr = FourCharCode('sdmn'); { Security domain (string) }
  319. kServerKCItemAttr = FourCharCode('srvr'); { Server's domain name or IP address (string) }
  320. kAuthTypeKCItemAttr = FourCharCode('atyp'); { Authentication Type (KCAuthType) }
  321. kPortKCItemAttr = FourCharCode('port'); { Port (UInt16) }
  322. kPathKCItemAttr = FourCharCode('path'); { Path (string) }
  323. { Unique Appleshare password attributes }
  324. kVolumeKCItemAttr = FourCharCode('vlme'); { Volume (string) }
  325. kAddressKCItemAttr = FourCharCode('addr'); { Server address (IP or domain name) or zone name (string) }
  326. kSignatureKCItemAttr = FourCharCode('ssig'); { Server signature block (AFPServerSignature) }
  327. { Unique AppleShare and Internet attributes }
  328. kProtocolKCItemAttr = FourCharCode('ptcl'); { Protocol (KCProtocolType) }
  329. { Certificate attributes }
  330. kSubjectKCItemAttr = FourCharCode('subj'); { Subject distinguished name (DER-encoded data) }
  331. kCommonNameKCItemAttr = FourCharCode('cn '); { Common Name (UTF8-encoded string) }
  332. kIssuerKCItemAttr = FourCharCode('issu'); { Issuer distinguished name (DER-encoded data) }
  333. kSerialNumberKCItemAttr = FourCharCode('snbr'); { Certificate serial number (DER-encoded data) }
  334. kEMailKCItemAttr = FourCharCode('mail'); { E-mail address (ASCII-encoded string) }
  335. kPublicKeyHashKCItemAttr = FourCharCode('hpky'); { Hash of public key (KCPublicKeyHash), 20 bytes max. }
  336. kIssuerURLKCItemAttr = FourCharCode('iurl'); { URL of the certificate issuer (ASCII-encoded string) }
  337. { Shared by keys and certificates }
  338. kEncryptKCItemAttr = FourCharCode('encr'); { Encrypt (Boolean) }
  339. kDecryptKCItemAttr = FourCharCode('decr'); { Decrypt (Boolean) }
  340. kSignKCItemAttr = FourCharCode('sign'); { Sign (Boolean) }
  341. kVerifyKCItemAttr = FourCharCode('veri'); { Verify (Boolean) }
  342. kWrapKCItemAttr = FourCharCode('wrap'); { Wrap (Boolean) }
  343. kUnwrapKCItemAttr = FourCharCode('unwr'); { Unwrap (Boolean) }
  344. kStartDateKCItemAttr = FourCharCode('sdat'); { Start Date (UInt32) }
  345. kEndDateKCItemAttr = FourCharCode('edat'); { End Date (UInt32) }
  346. type
  347. KCItemAttr = FourCharCode;
  348. const
  349. kKCAuthTypeNTLM = FourCharCode('ntlm');
  350. kKCAuthTypeMSN = FourCharCode('msna');
  351. kKCAuthTypeDPA = FourCharCode('dpaa');
  352. kKCAuthTypeRPA = FourCharCode('rpaa');
  353. kKCAuthTypeHTTPDigest = FourCharCode('httd');
  354. kKCAuthTypeDefault = FourCharCode('dflt');
  355. type
  356. KCAuthType = FourCharCode;
  357. const
  358. kKCProtocolTypeFTP = FourCharCode('ftp ');
  359. kKCProtocolTypeFTPAccount = FourCharCode('ftpa');
  360. kKCProtocolTypeHTTP = FourCharCode('http');
  361. kKCProtocolTypeIRC = FourCharCode('irc ');
  362. kKCProtocolTypeNNTP = FourCharCode('nntp');
  363. kKCProtocolTypePOP3 = FourCharCode('pop3');
  364. kKCProtocolTypeSMTP = FourCharCode('smtp');
  365. kKCProtocolTypeSOCKS = FourCharCode('sox ');
  366. kKCProtocolTypeIMAP = FourCharCode('imap');
  367. kKCProtocolTypeLDAP = FourCharCode('ldap');
  368. kKCProtocolTypeAppleTalk = FourCharCode('atlk');
  369. kKCProtocolTypeAFP = FourCharCode('afp ');
  370. kKCProtocolTypeTelnet = FourCharCode('teln');
  371. type
  372. KCProtocolType = FourCharCode;
  373. KCCertAddOptions = UInt32;
  374. const
  375. kSecOptionReserved = $000000FF; { First byte reserved for SecOptions flags }
  376. kCertUsageShift = 8; { start at bit 8 }
  377. kCertUsageSigningAdd = 1 shl (kCertUsageShift + 0);
  378. kCertUsageSigningAskAndAdd = 1 shl (kCertUsageShift + 1);
  379. kCertUsageVerifyAdd = 1 shl (kCertUsageShift + 2);
  380. kCertUsageVerifyAskAndAdd = 1 shl (kCertUsageShift + 3);
  381. kCertUsageEncryptAdd = 1 shl (kCertUsageShift + 4);
  382. kCertUsageEncryptAskAndAdd = 1 shl (kCertUsageShift + 5);
  383. kCertUsageDecryptAdd = 1 shl (kCertUsageShift + 6);
  384. kCertUsageDecryptAskAndAdd = 1 shl (kCertUsageShift + 7);
  385. kCertUsageKeyExchAdd = 1 shl (kCertUsageShift + 8);
  386. kCertUsageKeyExchAskAndAdd = 1 shl (kCertUsageShift + 9);
  387. kCertUsageRootAdd = 1 shl (kCertUsageShift + 10);
  388. kCertUsageRootAskAndAdd = 1 shl (kCertUsageShift + 11);
  389. kCertUsageSSLAdd = 1 shl (kCertUsageShift + 12);
  390. kCertUsageSSLAskAndAdd = 1 shl (kCertUsageShift + 13);
  391. kCertUsageAllAdd = $7FFFFF00;
  392. type
  393. KCVerifyStopOn = UInt16;
  394. const
  395. kPolicyKCStopOn = 0;
  396. kNoneKCStopOn = 1;
  397. kFirstPassKCStopOn = 2;
  398. kFirstFailKCStopOn = 3;
  399. type
  400. KCCertSearchOptions = UInt32;
  401. const
  402. kCertSearchShift = 0; { start at bit 0 }
  403. kCertSearchSigningIgnored = 0;
  404. kCertSearchSigningAllowed = 1 shl (kCertSearchShift + 0);
  405. kCertSearchSigningDisallowed = 1 shl (kCertSearchShift + 1);
  406. kCertSearchSigningMask = ((kCertSearchSigningAllowed) or (kCertSearchSigningDisallowed));
  407. kCertSearchVerifyIgnored = 0;
  408. kCertSearchVerifyAllowed = 1 shl (kCertSearchShift + 2);
  409. kCertSearchVerifyDisallowed = 1 shl (kCertSearchShift + 3);
  410. kCertSearchVerifyMask = ((kCertSearchVerifyAllowed) or (kCertSearchVerifyDisallowed));
  411. kCertSearchEncryptIgnored = 0;
  412. kCertSearchEncryptAllowed = 1 shl (kCertSearchShift + 4);
  413. kCertSearchEncryptDisallowed = 1 shl (kCertSearchShift + 5);
  414. kCertSearchEncryptMask = ((kCertSearchEncryptAllowed) or (kCertSearchEncryptDisallowed));
  415. kCertSearchDecryptIgnored = 0;
  416. kCertSearchDecryptAllowed = 1 shl (kCertSearchShift + 6);
  417. kCertSearchDecryptDisallowed = 1 shl (kCertSearchShift + 7);
  418. kCertSearchDecryptMask = ((kCertSearchDecryptAllowed) or (kCertSearchDecryptDisallowed));
  419. kCertSearchWrapIgnored = 0;
  420. kCertSearchWrapAllowed = 1 shl (kCertSearchShift + 8);
  421. kCertSearchWrapDisallowed = 1 shl (kCertSearchShift + 9);
  422. kCertSearchWrapMask = ((kCertSearchWrapAllowed) or (kCertSearchWrapDisallowed));
  423. kCertSearchUnwrapIgnored = 0;
  424. kCertSearchUnwrapAllowed = 1 shl (kCertSearchShift + 10);
  425. kCertSearchUnwrapDisallowed = 1 shl (kCertSearchShift + 11);
  426. kCertSearchUnwrapMask = ((kCertSearchUnwrapAllowed) or (kCertSearchUnwrapDisallowed));
  427. kCertSearchPrivKeyRequired = 1 shl (kCertSearchShift + 12);
  428. kCertSearchAny = 0;
  429. { Other constants }
  430. const
  431. kAnyPort = 0;
  432. const
  433. kAnyProtocol = 0;
  434. kAnyAuthType = 0;
  435. { Opening and getting information about the Keychain Manager }
  436. {
  437. * KCGetKeychainManagerVersion() *** DEPRECATED ***
  438. *
  439. * Deprecated:
  440. * Use SecKeychainGetVersion
  441. *
  442. * Availability:
  443. * Mac OS X: not available but deprecated in 10.6
  444. * CarbonLib: in CarbonLib 1.1 and later
  445. * Non-Carbon CFM: in KeychainLib 1.0 and later
  446. }
  447. function KCGetKeychainManagerVersion( var returnVers: UInt32 ): OSStatus; external name '_KCGetKeychainManagerVersion';
  448. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  449. {$ifc TARGET_RT_MAC_CFM}
  450. {
  451. KeychainManagerAvailable() is a macro/inline available only in C/C++.
  452. To get the same functionality from pascal or assembly, you need
  453. to test if KCGetKeychainManagerVersion function is not NULL. For instance:
  454. gKeychainManagerAvailable = FALSE;
  455. IF @KCGetKeychainManagerVersion <> kUnresolvedCFragSymbolAddress THEN
  456. gKeychainManagerAvailable = TRUE;
  457. end
  458. }
  459. {$elsec}
  460. {$ifc TARGET_RT_MAC_MACHO}
  461. { Keychain is always available on OS X }
  462. // #define KeychainManagerAvailable() (true)
  463. {$endc}
  464. {$endc} { }
  465. { Managing the Human Interface }
  466. {
  467. * KCSetInteractionAllowed() *** DEPRECATED ***
  468. *
  469. * Deprecated:
  470. * Use SecKeychainSetUserInteractionAllowed
  471. *
  472. * Availability:
  473. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  474. * CarbonLib: in CarbonLib 1.1 and later
  475. * Non-Carbon CFM: in KeychainLib 2.0 and later
  476. }
  477. function KCSetInteractionAllowed( state: Boolean ): OSStatus; external name '_KCSetInteractionAllowed';
  478. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  479. {
  480. * KCIsInteractionAllowed() *** DEPRECATED ***
  481. *
  482. * Deprecated:
  483. * Use SecKeychainGetUserInteractionAllowed
  484. *
  485. * Availability:
  486. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  487. * CarbonLib: in CarbonLib 1.1 and later
  488. * Non-Carbon CFM: in KeychainLib 2.0 and later
  489. }
  490. function KCIsInteractionAllowed: Boolean; external name '_KCIsInteractionAllowed';
  491. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  492. { Creating references to keychains }
  493. {$ifc not TARGET_CPU_64}
  494. {
  495. * KCMakeKCRefFromFSSpec() *** DEPRECATED ***
  496. *
  497. * Deprecated:
  498. * Use SecKeychainOpen
  499. *
  500. * Availability:
  501. * Mac OS X: in version 10.0 and later in CoreServices.framework [32-bit only] but deprecated in 10.5
  502. * CarbonLib: in CarbonLib 1.1 and later
  503. * Non-Carbon CFM: in KeychainLib 2.0 and later
  504. }
  505. function KCMakeKCRefFromFSSpec( var keychainFSSpec: FSSpec; var keychain: KCRef ): OSStatus; external name '_KCMakeKCRefFromFSSpec';
  506. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5,__IPHONE_NA,__IPHONE_NA) *)
  507. {$endc} {not TARGET_CPU_64}
  508. {
  509. * KCMakeKCRefFromFSRef() *** DEPRECATED ***
  510. *
  511. * Deprecated:
  512. * Use SecKeychainOpen
  513. *
  514. * Availability:
  515. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  516. * CarbonLib: in CarbonLib 1.1 and later
  517. * Non-Carbon CFM: in KeychainLib 2.0 and later
  518. }
  519. function KCMakeKCRefFromFSRef( var keychainFSRef: FSRef; var keychain: KCRef ): OSStatus; external name '_KCMakeKCRefFromFSRef';
  520. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  521. {
  522. * KCMakeKCRefFromAlias() *** DEPRECATED ***
  523. *
  524. * Deprecated:
  525. * Use SecKeychainOpen
  526. *
  527. * Availability:
  528. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  529. * CarbonLib: in CarbonLib 1.1 and later
  530. * Non-Carbon CFM: in KeychainLib 2.0 and later
  531. }
  532. function KCMakeKCRefFromAlias( keychainAlias: AliasHandle; var keychain: KCRef ): OSStatus; external name '_KCMakeKCRefFromAlias';
  533. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  534. {
  535. * KCMakeAliasFromKCRef() *** DEPRECATED ***
  536. *
  537. * Deprecated:
  538. * Use SecKeychainOpen
  539. *
  540. * Availability:
  541. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  542. * CarbonLib: in CarbonLib 1.1 and later
  543. * Non-Carbon CFM: in KeychainLib 2.0 and later
  544. }
  545. function KCMakeAliasFromKCRef( keychain: KCRef; var keychainAlias: AliasHandle ): OSStatus; external name '_KCMakeAliasFromKCRef';
  546. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  547. {
  548. * KCReleaseKeychain() *** DEPRECATED ***
  549. *
  550. * Deprecated:
  551. * Use CFRelease when releasing SecKeychainRef objects
  552. *
  553. * Availability:
  554. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  555. * CarbonLib: in CarbonLib 1.1 and later
  556. * Non-Carbon CFM: in KeychainLib 2.0 and later
  557. }
  558. function KCReleaseKeychain( var keychain: KCRef ): OSStatus; external name '_KCReleaseKeychain';
  559. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  560. { Specifying the default keychain }
  561. {
  562. * KCGetDefaultKeychain() *** DEPRECATED ***
  563. *
  564. * Deprecated:
  565. * Use SecKeychainCopyDefault
  566. *
  567. * Availability:
  568. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  569. * CarbonLib: in CarbonLib 1.1 and later
  570. * Non-Carbon CFM: in KeychainLib 2.0 and later
  571. }
  572. function KCGetDefaultKeychain( var keychain: KCRef ): OSStatus; external name '_KCGetDefaultKeychain';
  573. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  574. {
  575. * KCSetDefaultKeychain() *** DEPRECATED ***
  576. *
  577. * Deprecated:
  578. * Use SecKeychainSetDefault
  579. *
  580. * Availability:
  581. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  582. * CarbonLib: in CarbonLib 1.1 and later
  583. * Non-Carbon CFM: in KeychainLib 2.0 and later
  584. }
  585. function KCSetDefaultKeychain( keychain: KCRef ): OSStatus; external name '_KCSetDefaultKeychain';
  586. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  587. { Getting information about a keychain }
  588. {
  589. * KCGetStatus() *** DEPRECATED ***
  590. *
  591. * Deprecated:
  592. * Use SecKeychainGetStatus
  593. *
  594. * Availability:
  595. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  596. * CarbonLib: in CarbonLib 1.1 and later
  597. * Non-Carbon CFM: in KeychainLib 1.0 and later
  598. }
  599. function KCGetStatus( keychain: KCRef { can be NULL }; var keychainStatus: UInt32 ): OSStatus; external name '_KCGetStatus';
  600. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  601. {
  602. * KCGetKeychain() *** DEPRECATED ***
  603. *
  604. * Deprecated:
  605. * Use SecKeychainItemCopyKeychain
  606. *
  607. * Availability:
  608. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  609. * CarbonLib: in CarbonLib 1.1 and later
  610. * Non-Carbon CFM: in KeychainLib 1.0 and later
  611. }
  612. function KCGetKeychain( item: KCItemRef; var keychain: KCRef ): OSStatus; external name '_KCGetKeychain';
  613. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  614. {
  615. * KCGetKeychainName() *** DEPRECATED ***
  616. *
  617. * Deprecated:
  618. * Use SecKeychainGetPath
  619. *
  620. * Availability:
  621. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  622. * CarbonLib: in CarbonLib 1.1 and later
  623. * Non-Carbon CFM: in KeychainLib 2.0 and later
  624. }
  625. function KCGetKeychainName( keychain: KCRef; keychainName: StringPtr ): OSStatus; external name '_KCGetKeychainName';
  626. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  627. { Enumerating available keychains }
  628. {
  629. * KCCountKeychains() *** DEPRECATED ***
  630. *
  631. * Deprecated:
  632. * Use SecKeychainCopySearchList
  633. *
  634. * Availability:
  635. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  636. * CarbonLib: in CarbonLib 1.1 and later
  637. * Non-Carbon CFM: in KeychainLib 1.0 and later
  638. }
  639. function KCCountKeychains: UInt16; external name '_KCCountKeychains';
  640. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  641. {
  642. * KCGetIndKeychain() *** DEPRECATED ***
  643. *
  644. * Deprecated:
  645. * Use SecKeychainCopySearchList
  646. *
  647. * Availability:
  648. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  649. * CarbonLib: in CarbonLib 1.1 and later
  650. * Non-Carbon CFM: in KeychainLib 1.0 and later
  651. }
  652. function KCGetIndKeychain( index: UInt16; var keychain: KCRef ): OSStatus; external name '_KCGetIndKeychain';
  653. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  654. type
  655. KCCallbackProcPtr = function( keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr ): OSStatus;
  656. KCCallbackUPP = KCCallbackProcPtr;
  657. {
  658. * NewKCCallbackUPP() *** DEPRECATED ***
  659. *
  660. * Availability:
  661. * Mac OS X: in version 10.0 and later in CoreServices.framework
  662. * CarbonLib: in CarbonLib 1.1 and later
  663. * Non-Carbon CFM: available as macro/inline
  664. }
  665. function NewKCCallbackUPP( userRoutine: KCCallbackProcPtr ): KCCallbackUPP; external name '_NewKCCallbackUPP';
  666. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  667. {
  668. * DisposeKCCallbackUPP() *** DEPRECATED ***
  669. *
  670. * Availability:
  671. * Mac OS X: in version 10.0 and later in CoreServices.framework
  672. * CarbonLib: in CarbonLib 1.1 and later
  673. * Non-Carbon CFM: available as macro/inline
  674. }
  675. procedure DisposeKCCallbackUPP( userUPP: KCCallbackUPP ); external name '_DisposeKCCallbackUPP';
  676. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  677. {
  678. * InvokeKCCallbackUPP() *** DEPRECATED ***
  679. *
  680. * Availability:
  681. * Mac OS X: in version 10.0 and later in CoreServices.framework
  682. * CarbonLib: in CarbonLib 1.1 and later
  683. * Non-Carbon CFM: available as macro/inline
  684. }
  685. function InvokeKCCallbackUPP( keychainEvent: KCEvent; var info: KCCallbackInfo; userContext: UnivPtr; userUPP: KCCallbackUPP ): OSStatus; external name '_InvokeKCCallbackUPP';
  686. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  687. { High-level interface for retrieving passwords }
  688. {
  689. * KCFindAppleSharePassword() *** DEPRECATED ***
  690. *
  691. * Deprecated:
  692. * Use SecKeychainFindInternetPassword
  693. *
  694. * Availability:
  695. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  696. * CarbonLib: in CarbonLib 1.1 and later
  697. * Non-Carbon CFM: in KeychainLib 1.0 and later
  698. }
  699. function KCFindAppleSharePassword( serverSignature: AFPServerSignaturePtr { can be NULL }; serverAddress: ConstStringPtr { can be NULL }; serverName: ConstStringPtr { can be NULL }; volumeName: ConstStringPtr { can be NULL }; accountName: ConstStringPtr { can be NULL }; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr { can be NULL } ): OSStatus; external name '_KCFindAppleSharePassword';
  700. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  701. {
  702. * KCFindInternetPassword() *** DEPRECATED ***
  703. *
  704. * Deprecated:
  705. * Use SecKeychainFindInternetPassword
  706. *
  707. * Availability:
  708. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  709. * CarbonLib: in CarbonLib 1.1 and later
  710. * Non-Carbon CFM: in KeychainLib 1.0 and later
  711. }
  712. function KCFindInternetPassword( serverName: ConstStringPtr { can be NULL }; securityDomain: ConstStringPtr { can be NULL }; accountName: ConstStringPtr { can be NULL }; port: UInt16; protocol: OSType; authType: OSType; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr { can be NULL } ): OSStatus; external name '_KCFindInternetPassword';
  713. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  714. {
  715. * KCFindInternetPasswordWithPath() *** DEPRECATED ***
  716. *
  717. * Deprecated:
  718. * Use SecKeychainFindInternetPassword
  719. *
  720. * Availability:
  721. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  722. * CarbonLib: in CarbonLib 1.1 and later
  723. * Non-Carbon CFM: in KeychainLib 2.0 and later
  724. }
  725. function KCFindInternetPasswordWithPath( serverName: ConstStringPtr { can be NULL }; securityDomain: ConstStringPtr { can be NULL }; accountName: ConstStringPtr { can be NULL }; path: ConstStringPtr { can be NULL }; port: UInt16; protocol: OSType; authType: OSType; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr { can be NULL } ): OSStatus; external name '_KCFindInternetPasswordWithPath';
  726. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  727. {
  728. * KCFindGenericPassword() *** DEPRECATED ***
  729. *
  730. * Deprecated:
  731. * Use SecKeychainFindGenericPassword
  732. *
  733. * Availability:
  734. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  735. * CarbonLib: in CarbonLib 1.1 and later
  736. * Non-Carbon CFM: in KeychainLib 1.0 and later
  737. }
  738. function KCFindGenericPassword( serviceName: ConstStringPtr { can be NULL }; accountName: ConstStringPtr { can be NULL }; maxLength: UInt32; passwordData: UnivPtr; var actualLength: UInt32; item: KCItemRefPtr { can be NULL } ): OSStatus; external name '_KCFindGenericPassword';
  739. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  740. { Keychain Manager callbacks }
  741. {
  742. * KCAddCallback() *** DEPRECATED ***
  743. *
  744. * Deprecated:
  745. * Use SecKeychainAddCallback
  746. *
  747. * Availability:
  748. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  749. * CarbonLib: in CarbonLib 1.1 and later
  750. * Non-Carbon CFM: in KeychainLib 1.0 and later
  751. }
  752. function KCAddCallback( callbackProc: KCCallbackUPP; eventMask: KCEventMask; userContext: UnivPtr ): OSStatus; external name '_KCAddCallback';
  753. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  754. {
  755. * KCRemoveCallback() *** DEPRECATED ***
  756. *
  757. * Deprecated:
  758. * Use SecKeychainRemoveCallback
  759. *
  760. * Availability:
  761. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  762. * CarbonLib: in CarbonLib 1.1 and later
  763. * Non-Carbon CFM: in KeychainLib 1.0 and later
  764. }
  765. function KCRemoveCallback( callbackProc: KCCallbackUPP ): OSStatus; external name '_KCRemoveCallback';
  766. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  767. { Creating and editing a keychain item }
  768. {
  769. * KCNewItem() *** DEPRECATED ***
  770. *
  771. * Deprecated:
  772. * Use SecKeychainItemCreateFromContent
  773. *
  774. * Availability:
  775. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  776. * CarbonLib: in CarbonLib 1.1 and later
  777. * Non-Carbon CFM: in KeychainLib 1.0 and later
  778. }
  779. function KCNewItem( itemClass: KCItemClass; itemCreator: OSType; length: UInt32; data: {const} UnivPtr; var item: KCItemRef ): OSStatus; external name '_KCNewItem';
  780. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  781. {
  782. * KCSetAttribute() *** DEPRECATED ***
  783. *
  784. * Deprecated:
  785. * Use SecKeychainItemModifyAttributesAndData
  786. *
  787. * Availability:
  788. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  789. * CarbonLib: in CarbonLib 1.1 and later
  790. * Non-Carbon CFM: in KeychainLib 1.0 and later
  791. }
  792. function KCSetAttribute( item: KCItemRef; var attr: KCAttribute ): OSStatus; external name '_KCSetAttribute';
  793. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  794. {
  795. * KCGetAttribute() *** DEPRECATED ***
  796. *
  797. * Deprecated:
  798. * Use SecKeychainItemCopyAttributesAndData
  799. *
  800. * Availability:
  801. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  802. * CarbonLib: in CarbonLib 1.1 and later
  803. * Non-Carbon CFM: in KeychainLib 1.0 and later
  804. }
  805. function KCGetAttribute( item: KCItemRef; var attr: KCAttribute; var actualLength: UInt32 ): OSStatus; external name '_KCGetAttribute';
  806. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  807. {
  808. * KCSetData() *** DEPRECATED ***
  809. *
  810. * Deprecated:
  811. * Use SecKeychainItemModifyAttributesAndData
  812. *
  813. * Availability:
  814. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  815. * CarbonLib: in CarbonLib 1.1 and later
  816. * Non-Carbon CFM: in KeychainLib 1.0 and later
  817. }
  818. function KCSetData( item: KCItemRef; length: UInt32; data: {const} UnivPtr ): OSStatus; external name '_KCSetData';
  819. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  820. { Managing keychain items }
  821. {
  822. * KCUpdateItem() *** DEPRECATED ***
  823. *
  824. * Deprecated:
  825. * Use SecKeychainItemModifyAttributesAndData
  826. *
  827. * Availability:
  828. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  829. * CarbonLib: in CarbonLib 1.1 and later
  830. * Non-Carbon CFM: in KeychainLib 1.0 and later
  831. }
  832. function KCUpdateItem( item: KCItemRef ): OSStatus; external name '_KCUpdateItem';
  833. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  834. {
  835. * KCReleaseItem() *** DEPRECATED ***
  836. *
  837. * Deprecated:
  838. * Use CFRelease when releasing SecKeychainItemRef objects
  839. *
  840. * Availability:
  841. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  842. * CarbonLib: in CarbonLib 1.1 and later
  843. * Non-Carbon CFM: in KeychainLib 1.0 and later
  844. }
  845. function KCReleaseItem( var item: KCItemRef ): OSStatus; external name '_KCReleaseItem';
  846. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  847. {
  848. * KCCopyItem() *** DEPRECATED ***
  849. *
  850. * Deprecated:
  851. * Use SecKeychainItemCreateCopy
  852. *
  853. * Availability:
  854. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  855. * CarbonLib: in CarbonLib 1.1 and later
  856. * Non-Carbon CFM: in KeychainLib 2.0 and later
  857. }
  858. function KCCopyItem( item: KCItemRef; destKeychain: KCRef; var copy: KCItemRef ): OSStatus; external name '_KCCopyItem';
  859. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  860. { Searching and enumerating keychain items }
  861. {
  862. * KCFindFirstItem() *** DEPRECATED ***
  863. *
  864. * Deprecated:
  865. * Use SecKeychainSearchCreateFromAttributes /
  866. * SecKeychainSearchCopyNext
  867. *
  868. * Availability:
  869. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  870. * CarbonLib: in CarbonLib 1.1 and later
  871. * Non-Carbon CFM: in KeychainLib 1.0 and later
  872. }
  873. function KCFindFirstItem( keychain: KCRef { can be NULL }; {const} attrList: KCAttributeListPtr { can be NULL }; var search: KCSearchRef; var item: KCItemRef ): OSStatus; external name '_KCFindFirstItem';
  874. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  875. {
  876. * KCFindNextItem() *** DEPRECATED ***
  877. *
  878. * Deprecated:
  879. * Use SecKeychainSearchCopyNext
  880. *
  881. * Availability:
  882. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  883. * CarbonLib: in CarbonLib 1.1 and later
  884. * Non-Carbon CFM: in KeychainLib 1.0 and later
  885. }
  886. function KCFindNextItem( search: KCSearchRef; var item: KCItemRef ): OSStatus; external name '_KCFindNextItem';
  887. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  888. {
  889. * KCReleaseSearch() *** DEPRECATED ***
  890. *
  891. * Deprecated:
  892. * Use CFRelease when releasing SecKeychainSearchRef objects
  893. *
  894. * Availability:
  895. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  896. * CarbonLib: in CarbonLib 1.1 and later
  897. * Non-Carbon CFM: in KeychainLib 1.0 and later
  898. }
  899. function KCReleaseSearch( var search: KCSearchRef ): OSStatus; external name '_KCReleaseSearch';
  900. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  901. { Managing keychain items }
  902. {
  903. * KCDeleteItem() *** DEPRECATED ***
  904. *
  905. * Deprecated:
  906. * Use SecKeychainItemDelete
  907. *
  908. * Availability:
  909. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  910. * CarbonLib: in CarbonLib 1.1 and later
  911. * Non-Carbon CFM: in KeychainLib 1.0 and later
  912. }
  913. function KCDeleteItem( item: KCItemRef ): OSStatus; external name '_KCDeleteItem';
  914. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  915. {
  916. * KCGetData() *** DEPRECATED ***
  917. *
  918. * Deprecated:
  919. * Use SecKeychainItemCopyAttributesAndData
  920. *
  921. * Availability:
  922. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  923. * CarbonLib: in CarbonLib 1.1 and later
  924. * Non-Carbon CFM: in KeychainLib 1.0 and later
  925. }
  926. function KCGetData( item: KCItemRef; maxLength: UInt32; data: UnivPtr; var actualLength: UInt32 ): OSStatus; external name '_KCGetData';
  927. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  928. { Locking a keychain }
  929. {
  930. * KCLock() *** DEPRECATED ***
  931. *
  932. * Deprecated:
  933. * Use SecKeychainLock
  934. *
  935. * Availability:
  936. * Mac OS X: in version 10.0 and later in CoreServices.framework but deprecated in 10.6
  937. * CarbonLib: in CarbonLib 1.1 and later
  938. * Non-Carbon CFM: in KeychainLib 1.0 and later
  939. }
  940. function KCLock( keychain: KCRef ): OSStatus; external name '_KCLock';
  941. (* __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_6,__IPHONE_NA,__IPHONE_NA) *)
  942. {$endc} {TARGET_OS_MAC}
  943. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  944. end.
  945. {$endc} {not MACOSALLINCLUDE}