/packages/univint/src/cssmtype.pas

https://github.com/slibre/freepascal · Pascal · 2640 lines · 1937 code · 232 blank · 471 comment · 0 complexity · 4c5d8aa7734f8921e2e28c076783c682 MD5 · raw file

Large files are truncated click here to view the full file

  1. {
  2. * Copyright (c) 1999-2002,2004 Apple Computer, Inc. All Rights Reserved.
  3. *
  4. * @APPLE_LICENSE_HEADER_START@
  5. *
  6. * This file contains Original Code and/or Modifications of Original Code
  7. * as defined in and that are subject to the Apple Public Source License
  8. * Version 2.0 (the 'License'). You may not use this file except in
  9. * compliance with the License. Please obtain a copy of the License at
  10. * http://www.opensource.apple.com/apsl/ and read it before using this
  11. * file.
  12. *
  13. * The Original Code and all software distributed under the License are
  14. * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  15. * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  16. * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
  17. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  18. * Please see the License for the specific language governing rights and
  19. * limitations under the License.
  20. *
  21. * @APPLE_LICENSE_HEADER_END@
  22. *
  23. * cssmtype.h -- Common Security Services Manager Common Data Types
  24. }
  25. { Pascal Translation Updated: Jonas Maebe, <jonas@freepascal.org>, September 2010 }
  26. { Pascal Translation Update: Jonas Maebe <jonas@freepascal.org>, October 2012 }
  27. {
  28. Modified for use with Free Pascal
  29. Version 308
  30. Please report any bugs to <gpc@microbizz.nl>
  31. }
  32. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  33. {$mode macpas}
  34. {$packenum 1}
  35. {$macro on}
  36. {$inline on}
  37. {$calling mwpascal}
  38. unit cssmtype;
  39. interface
  40. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  41. {$setc GAP_INTERFACES_VERSION := $0308}
  42. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  43. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  44. {$endc}
  45. {$ifc defined CPUPOWERPC and defined CPUI386}
  46. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  47. {$endc}
  48. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  49. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  50. {$endc}
  51. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  52. {$setc __ppc__ := 1}
  53. {$elsec}
  54. {$setc __ppc__ := 0}
  55. {$endc}
  56. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  57. {$setc __ppc64__ := 1}
  58. {$elsec}
  59. {$setc __ppc64__ := 0}
  60. {$endc}
  61. {$ifc not defined __i386__ and defined CPUI386}
  62. {$setc __i386__ := 1}
  63. {$elsec}
  64. {$setc __i386__ := 0}
  65. {$endc}
  66. {$ifc not defined __x86_64__ and defined CPUX86_64}
  67. {$setc __x86_64__ := 1}
  68. {$elsec}
  69. {$setc __x86_64__ := 0}
  70. {$endc}
  71. {$ifc not defined __arm__ and defined CPUARM}
  72. {$setc __arm__ := 1}
  73. {$elsec}
  74. {$setc __arm__ := 0}
  75. {$endc}
  76. {$ifc defined cpu64}
  77. {$setc __LP64__ := 1}
  78. {$elsec}
  79. {$setc __LP64__ := 0}
  80. {$endc}
  81. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  82. {$error Conflicting definitions for __ppc__ and __i386__}
  83. {$endc}
  84. {$ifc defined __ppc__ and __ppc__}
  85. {$setc TARGET_CPU_PPC := TRUE}
  86. {$setc TARGET_CPU_PPC64 := FALSE}
  87. {$setc TARGET_CPU_X86 := FALSE}
  88. {$setc TARGET_CPU_X86_64 := FALSE}
  89. {$setc TARGET_CPU_ARM := FALSE}
  90. {$setc TARGET_OS_MAC := TRUE}
  91. {$setc TARGET_OS_IPHONE := FALSE}
  92. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  93. {$setc TARGET_OS_EMBEDDED := FALSE}
  94. {$elifc defined __ppc64__ and __ppc64__}
  95. {$setc TARGET_CPU_PPC := FALSE}
  96. {$setc TARGET_CPU_PPC64 := TRUE}
  97. {$setc TARGET_CPU_X86 := FALSE}
  98. {$setc TARGET_CPU_X86_64 := FALSE}
  99. {$setc TARGET_CPU_ARM := FALSE}
  100. {$setc TARGET_OS_MAC := TRUE}
  101. {$setc TARGET_OS_IPHONE := FALSE}
  102. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  103. {$setc TARGET_OS_EMBEDDED := FALSE}
  104. {$elifc defined __i386__ and __i386__}
  105. {$setc TARGET_CPU_PPC := FALSE}
  106. {$setc TARGET_CPU_PPC64 := FALSE}
  107. {$setc TARGET_CPU_X86 := TRUE}
  108. {$setc TARGET_CPU_X86_64 := FALSE}
  109. {$setc TARGET_CPU_ARM := FALSE}
  110. {$ifc defined(iphonesim)}
  111. {$setc TARGET_OS_MAC := FALSE}
  112. {$setc TARGET_OS_IPHONE := TRUE}
  113. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  114. {$elsec}
  115. {$setc TARGET_OS_MAC := TRUE}
  116. {$setc TARGET_OS_IPHONE := FALSE}
  117. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  118. {$endc}
  119. {$setc TARGET_OS_EMBEDDED := FALSE}
  120. {$elifc defined __x86_64__ and __x86_64__}
  121. {$setc TARGET_CPU_PPC := FALSE}
  122. {$setc TARGET_CPU_PPC64 := FALSE}
  123. {$setc TARGET_CPU_X86 := FALSE}
  124. {$setc TARGET_CPU_X86_64 := TRUE}
  125. {$setc TARGET_CPU_ARM := FALSE}
  126. {$setc TARGET_OS_MAC := TRUE}
  127. {$setc TARGET_OS_IPHONE := FALSE}
  128. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  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. { will require compiler define when/if other Apple devices with ARM cpus ship }
  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. {$elsec}
  142. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ is defined.}
  143. {$endc}
  144. {$ifc defined __LP64__ and __LP64__ }
  145. {$setc TARGET_CPU_64 := TRUE}
  146. {$elsec}
  147. {$setc TARGET_CPU_64 := FALSE}
  148. {$endc}
  149. {$ifc defined FPC_BIG_ENDIAN}
  150. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  151. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  152. {$elifc defined FPC_LITTLE_ENDIAN}
  153. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  154. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  155. {$elsec}
  156. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  157. {$endc}
  158. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  159. {$setc CALL_NOT_IN_CARBON := FALSE}
  160. {$setc OLDROUTINENAMES := FALSE}
  161. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  162. {$setc OPAQUE_UPP_TYPES := TRUE}
  163. {$setc OTCARBONAPPLICATION := TRUE}
  164. {$setc OTKERNEL := FALSE}
  165. {$setc PM_USE_SESSION_APIS := TRUE}
  166. {$setc TARGET_API_MAC_CARBON := TRUE}
  167. {$setc TARGET_API_MAC_OS8 := FALSE}
  168. {$setc TARGET_API_MAC_OSX := TRUE}
  169. {$setc TARGET_CARBON := TRUE}
  170. {$setc TARGET_CPU_68K := FALSE}
  171. {$setc TARGET_CPU_MIPS := FALSE}
  172. {$setc TARGET_CPU_SPARC := FALSE}
  173. {$setc TARGET_OS_UNIX := FALSE}
  174. {$setc TARGET_OS_WIN32 := FALSE}
  175. {$setc TARGET_RT_MAC_68881 := FALSE}
  176. {$setc TARGET_RT_MAC_CFM := FALSE}
  177. {$setc TARGET_RT_MAC_MACHO := TRUE}
  178. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  179. {$setc TYPE_BOOL := FALSE}
  180. {$setc TYPE_EXTENDED := FALSE}
  181. {$setc TYPE_LONGLONG := TRUE}
  182. uses MacTypes,cssmconfig;
  183. {$endc} {not MACOSALLINCLUDE}
  184. {$ifc TARGET_OS_MAC}
  185. {$packrecords c}
  186. { Handle types. }
  187. type
  188. CSSM_HANDLE = CSSM_INTPTR;
  189. CSSM_HANDLE_PTR = ^CSSM_INTPTR;
  190. CSSM_HANDLEPtr = ^CSSM_INTPTR;
  191. type
  192. CSSM_LONG_HANDLE = UInt64;
  193. CSSM_LONG_HANDLE_PTR = ^UInt64;
  194. CSSM_LONG_HANDLEPtr = ^UInt64;
  195. type
  196. CSSM_MODULE_HANDLE = CSSM_HANDLE;
  197. CSSM_MODULE_HANDLE_PTR = ^CSSM_HANDLE;
  198. CSSM_MODULE_HANDLEPtr = ^CSSM_HANDLE;
  199. type
  200. CSSM_CC_HANDLE = CSSM_LONG_HANDLE; { Cryptographic Context Handle }
  201. type
  202. CSSM_CSP_HANDLE = CSSM_MODULE_HANDLE; { Cryptographic Service Provider Handle }
  203. type
  204. CSSM_TP_HANDLE = CSSM_MODULE_HANDLE; { Trust Policy Handle }
  205. type
  206. CSSM_AC_HANDLE = CSSM_MODULE_HANDLE; { Authorization Computation Handle }
  207. type
  208. CSSM_CL_HANDLE = CSSM_MODULE_HANDLE; { Certificate Library Handle }
  209. type
  210. CSSM_DL_HANDLE = CSSM_MODULE_HANDLE; { Data Storage Library Handle }
  211. type
  212. CSSM_DB_HANDLE = CSSM_MODULE_HANDLE; { Data Storage Database Handle }
  213. { invalid or NULL value for any CSSM_HANDLE type }
  214. const
  215. CSSM_INVALID_HANDLE = 0;
  216. { Data Types for Core Services }
  217. type
  218. CSSM_BOOL = SInt32;
  219. const
  220. CSSM_FALSE = 0;
  221. CSSM_TRUE = 1;
  222. { The standard declares this as uint32 but we changed it to sint32 to match OSStatus. }
  223. type
  224. CSSM_RETURNPtr = ^CSSM_RETURN;
  225. CSSM_RETURN = SInt32;
  226. const
  227. CSSM_OK = 0;
  228. const
  229. CSSM_MODULE_STRING_SIZE = 64;
  230. type
  231. CSSM_STRING = array [0..CSSM_MODULE_STRING_SIZE + 4-1] of char;
  232. type
  233. CSSM_DATA_PTR = ^cssm_data;
  234. CSSM_DATAPtr = ^cssm_data;
  235. CSSM_DATAArrayPtr = ^cssm_dataPtr;
  236. cssm_data = record
  237. Length: CSSM_SIZE; { in bytes }
  238. Data: UInt8Ptr;
  239. end;
  240. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  241. type
  242. CSSM_GUID_PTR = ^cssm_guid;
  243. CSSM_GUIDPtr = ^cssm_guid;
  244. cssm_guid = record
  245. Data1: UInt32;
  246. Data2: UInt16;
  247. Data3: UInt16;
  248. Data4: array [0..8-1] of UInt8;
  249. end;
  250. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  251. type
  252. CSSM_BITMASK = UInt32;
  253. CSSM_KEY_HIERARCHY = CSSM_BITMASK;
  254. const
  255. CSSM_KEY_HIERARCHY_NONE = 0;
  256. CSSM_KEY_HIERARCHY_INTEG = 1;
  257. CSSM_KEY_HIERARCHY_EXPORT = 2;
  258. type
  259. CSSM_PVC_MODE = CSSM_BITMASK;
  260. const
  261. CSSM_PVC_NONE = 0;
  262. CSSM_PVC_APP = 1;
  263. CSSM_PVC_SP = 2;
  264. type
  265. CSSM_PRIVILEGE_SCOPE = UInt32;
  266. const
  267. CSSM_PRIVILEGE_SCOPE_NONE = 0;
  268. CSSM_PRIVILEGE_SCOPE_PROCESS = 1;
  269. CSSM_PRIVILEGE_SCOPE_THREAD = 2;
  270. type
  271. CSSM_VERSION_PTR = ^cssm_version;
  272. CSSM_VERSIONPtr = ^cssm_version;
  273. cssm_version = record
  274. Major: UInt32;
  275. Minor: UInt32;
  276. end;
  277. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  278. type
  279. CSSM_SERVICE_MASK = UInt32;
  280. const
  281. CSSM_SERVICE_CSSM = $1;
  282. CSSM_SERVICE_CSP = $2;
  283. CSSM_SERVICE_DL = $4;
  284. CSSM_SERVICE_CL = $8;
  285. CSSM_SERVICE_TP = $10;
  286. CSSM_SERVICE_AC = $20;
  287. CSSM_SERVICE_KR = $40;
  288. type
  289. CSSM_SERVICE_TYPE = CSSM_SERVICE_MASK;
  290. type
  291. CSSM_SUBSERVICE_UID_PTR = ^cssm_subservice_uid;
  292. CSSM_SUBSERVICE_UIDPtr = ^cssm_subservice_uid;
  293. cssm_subservice_uid = record
  294. Guid: CSSM_GUID;
  295. Version: CSSM_VERSION;
  296. SubserviceId: UInt32;
  297. SubserviceType: CSSM_SERVICE_TYPE;
  298. end;
  299. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  300. type
  301. CSSM_MODULE_EVENT = UInt32;
  302. CSSM_MODULE_EVENT_PTR = ^UInt32;
  303. CSSM_MODULE_EVENTPtr = ^UInt32;
  304. const
  305. CSSM_NOTIFY_INSERT = 1;
  306. CSSM_NOTIFY_REMOVE = 2;
  307. CSSM_NOTIFY_FAULT = 3;
  308. type
  309. CSSM_API_ModuleEventHandler = function( const (*var*) ModuleGuid: CSSM_GUID; AppNotifyCallbackCtx: UnivPtr; SubserviceId: UInt32; ServiceType: CSSM_SERVICE_TYPE; EventType: CSSM_MODULE_EVENT ): CSSM_RETURN;
  310. type
  311. CSSM_ATTACH_FLAGS = UInt32;
  312. const
  313. CSSM_ATTACH_READ_ONLY = $00000001;
  314. { Non-export privilege range: (0x00000000 - 0x7FFFFFFF) }
  315. { Vendor specific range: (0x80000000 - 0xFFFFFFFF) }
  316. type
  317. CSSM_PRIVILEGE = UInt64;
  318. CSSM_USEE_TAG = CSSM_PRIVILEGE;
  319. const
  320. CSSM_USEE_LAST = $FF;
  321. CSSM_USEE_NONE = 0;
  322. CSSM_USEE_DOMESTIC = 1;
  323. CSSM_USEE_FINANCIAL = 2;
  324. CSSM_USEE_KRLE = 3;
  325. CSSM_USEE_KRENT = 4;
  326. CSSM_USEE_SSL = 5;
  327. CSSM_USEE_AUTHENTICATION = 6;
  328. CSSM_USEE_KEYEXCH = 7;
  329. CSSM_USEE_MEDICAL = 8;
  330. CSSM_USEE_INSURANCE = 9;
  331. CSSM_USEE_WEAK = 10;
  332. type
  333. CSSM_NET_ADDRESS_TYPE = UInt32;
  334. const
  335. CSSM_ADDR_NONE = 0;
  336. CSSM_ADDR_CUSTOM = 1;
  337. CSSM_ADDR_URL = 2; { char* }
  338. CSSM_ADDR_SOCKADDR = 3;
  339. CSSM_ADDR_NAME = 4; { char* - qualified by access method }
  340. type
  341. CSSM_NET_ADDRESS_PTR = ^cssm_net_address;
  342. CSSM_NET_ADDRESSPtr = ^cssm_net_address;
  343. cssm_net_address = record
  344. AddressType: CSSM_NET_ADDRESS_TYPE;
  345. Address: CSSM_DATA;
  346. end;
  347. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  348. type
  349. CSSM_NET_PROTOCOL = UInt32;
  350. const
  351. CSSM_NET_PROTO_NONE = 0; { local }
  352. CSSM_NET_PROTO_CUSTOM = 1; { proprietary implementation }
  353. CSSM_NET_PROTO_UNSPECIFIED = 2; { implementation default }
  354. CSSM_NET_PROTO_LDAP = 3; { light weight directory access protocol }
  355. CSSM_NET_PROTO_LDAPS = 4; { ldap/ssl where SSL initiates the connection }
  356. CSSM_NET_PROTO_LDAPNS = 5; { ldap where ldap negotiates an SSL session }
  357. CSSM_NET_PROTO_X500DAP = 6; { x.500 Directory access protocol }
  358. CSSM_NET_PROTO_FTP = 7; { ftp for cert/crl fetch }
  359. CSSM_NET_PROTO_FTPS = 8; { ftp/ssl/tls where SSL/TLS initiates the connection }
  360. CSSM_NET_PROTO_OCSP = 9; { online certificate status protocol }
  361. CSSM_NET_PROTO_CMP = 10; { the cert request protocol in PKIX3 }
  362. CSSM_NET_PROTO_CMPS = 11; { The ssl/tls derivative of CMP }
  363. type
  364. CSSM_CALLBACK = function( OutData: CSSM_DATA_PTR; CallerCtx: UnivPtr ): CSSM_RETURN;
  365. type
  366. CSSM_CRYPTO_DATA_PTR = ^cssm_crypto_data;
  367. CSSM_CRYPTO_DATAPtr = ^cssm_crypto_data;
  368. cssm_crypto_data = record
  369. Param: CSSM_DATA;
  370. Callback: CSSM_CALLBACK;
  371. CallerCtx: UnivPtr;
  372. end;
  373. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  374. type
  375. CSSM_WORDID_TYPE = SInt32;
  376. const
  377. CSSM_WORDID__UNK_ = -1; { not in dictionary }
  378. CSSM_WORDID__NLU_ = 0; { not yet looked up }
  379. CSSM_WORDID__STAR_ = 1;
  380. CSSM_WORDID_A = 2;
  381. CSSM_WORDID_ACL = 3;
  382. CSSM_WORDID_ALPHA = 4;
  383. CSSM_WORDID_B = 5;
  384. CSSM_WORDID_BER = 6;
  385. CSSM_WORDID_BINARY = 7;
  386. CSSM_WORDID_BIOMETRIC = 8;
  387. CSSM_WORDID_C = 9;
  388. CSSM_WORDID_CANCELED = 10;
  389. CSSM_WORDID_CERT = 11;
  390. CSSM_WORDID_COMMENT = 12;
  391. CSSM_WORDID_CRL = 13;
  392. CSSM_WORDID_CUSTOM = 14;
  393. CSSM_WORDID_D = 15;
  394. CSSM_WORDID_DATE = 16;
  395. CSSM_WORDID_DB_DELETE = 17;
  396. CSSM_WORDID_DB_EXEC_STORED_QUERY = 18;
  397. CSSM_WORDID_DB_INSERT = 19;
  398. CSSM_WORDID_DB_MODIFY = 20;
  399. CSSM_WORDID_DB_READ = 21;
  400. CSSM_WORDID_DBS_CREATE = 22;
  401. CSSM_WORDID_DBS_DELETE = 23;
  402. CSSM_WORDID_DECRYPT = 24;
  403. CSSM_WORDID_DELETE = 25;
  404. CSSM_WORDID_DELTA_CRL = 26;
  405. CSSM_WORDID_DER = 27;
  406. CSSM_WORDID_DERIVE = 28;
  407. CSSM_WORDID_DISPLAY = 29;
  408. CSSM_WORDID_DO = 30;
  409. CSSM_WORDID_DSA = 31;
  410. CSSM_WORDID_DSA_SHA1 = 32;
  411. CSSM_WORDID_E = 33;
  412. CSSM_WORDID_ELGAMAL = 34;
  413. CSSM_WORDID_ENCRYPT = 35;
  414. CSSM_WORDID_ENTRY = 36;
  415. CSSM_WORDID_EXPORT_CLEAR = 37;
  416. CSSM_WORDID_EXPORT_WRAPPED = 38;
  417. CSSM_WORDID_G = 39;
  418. CSSM_WORDID_GE = 40;
  419. CSSM_WORDID_GENKEY = 41;
  420. CSSM_WORDID_HASH = 42;
  421. CSSM_WORDID_HASHED_PASSWORD = 43;
  422. CSSM_WORDID_HASHED_SUBJECT = 44;
  423. CSSM_WORDID_HAVAL = 45;
  424. CSSM_WORDID_IBCHASH = 46;
  425. CSSM_WORDID_IMPORT_CLEAR = 47;
  426. CSSM_WORDID_IMPORT_WRAPPED = 48;
  427. CSSM_WORDID_INTEL = 49;
  428. CSSM_WORDID_ISSUER = 50;
  429. CSSM_WORDID_ISSUER_INFO = 51;
  430. CSSM_WORDID_K_OF_N = 52;
  431. CSSM_WORDID_KEA = 53;
  432. CSSM_WORDID_KEYHOLDER = 54;
  433. CSSM_WORDID_L = 55;
  434. CSSM_WORDID_LE = 56;
  435. CSSM_WORDID_LOGIN = 57;
  436. CSSM_WORDID_LOGIN_NAME = 58;
  437. CSSM_WORDID_MAC = 59;
  438. CSSM_WORDID_MD2 = 60;
  439. CSSM_WORDID_MD2WITHRSA = 61;
  440. CSSM_WORDID_MD4 = 62;
  441. CSSM_WORDID_MD5 = 63;
  442. CSSM_WORDID_MD5WITHRSA = 64;
  443. CSSM_WORDID_N = 65;
  444. CSSM_WORDID_NAME = 66;
  445. CSSM_WORDID_NDR = 67;
  446. CSSM_WORDID_NHASH = 68;
  447. CSSM_WORDID_NOT_AFTER = 69;
  448. CSSM_WORDID_NOT_BEFORE = 70;
  449. CSSM_WORDID_NULL = 71;
  450. CSSM_WORDID_NUMERIC = 72;
  451. CSSM_WORDID_OBJECT_HASH = 73;
  452. CSSM_WORDID_ONE_TIME = 74;
  453. CSSM_WORDID_ONLINE = 75;
  454. CSSM_WORDID_OWNER = 76;
  455. CSSM_WORDID_P = 77;
  456. CSSM_WORDID_PAM_NAME = 78;
  457. CSSM_WORDID_PASSWORD = 79;
  458. CSSM_WORDID_PGP = 80;
  459. CSSM_WORDID_PREFIX = 81;
  460. CSSM_WORDID_PRIVATE_KEY = 82;
  461. CSSM_WORDID_PROMPTED_BIOMETRIC = 83;
  462. CSSM_WORDID_PROMPTED_PASSWORD = 84;
  463. CSSM_WORDID_PROPAGATE = 85;
  464. CSSM_WORDID_PROTECTED_BIOMETRIC = 86;
  465. CSSM_WORDID_PROTECTED_PASSWORD = 87;
  466. CSSM_WORDID_PROTECTED_PIN = 88;
  467. CSSM_WORDID_PUBLIC_KEY = 89;
  468. CSSM_WORDID_PUBLIC_KEY_FROM_CERT = 90;
  469. CSSM_WORDID_Q = 91;
  470. CSSM_WORDID_RANGE = 92;
  471. CSSM_WORDID_REVAL = 93;
  472. CSSM_WORDID_RIPEMAC = 94;
  473. CSSM_WORDID_RIPEMD = 95;
  474. CSSM_WORDID_RIPEMD160 = 96;
  475. CSSM_WORDID_RSA = 97;
  476. CSSM_WORDID_RSA_ISO9796 = 98;
  477. CSSM_WORDID_RSA_PKCS = 99;
  478. CSSM_WORDID_RSA_PKCS_MD5 = 100;
  479. CSSM_WORDID_RSA_PKCS_SHA1 = 101;
  480. CSSM_WORDID_RSA_PKCS1 = 102;
  481. CSSM_WORDID_RSA_PKCS1_MD5 = 103;
  482. CSSM_WORDID_RSA_PKCS1_SHA1 = 104;
  483. CSSM_WORDID_RSA_PKCS1_SIG = 105;
  484. CSSM_WORDID_RSA_RAW = 106;
  485. CSSM_WORDID_SDSIV1 = 107;
  486. CSSM_WORDID_SEQUENCE = 108;
  487. CSSM_WORDID_SET = 109;
  488. CSSM_WORDID_SEXPR = 110;
  489. CSSM_WORDID_SHA1 = 111;
  490. CSSM_WORDID_SHA1WITHDSA = 112;
  491. CSSM_WORDID_SHA1WITHECDSA = 113;
  492. CSSM_WORDID_SHA1WITHRSA = 114;
  493. CSSM_WORDID_SIGN = 115;
  494. CSSM_WORDID_SIGNATURE = 116;
  495. CSSM_WORDID_SIGNED_NONCE = 117;
  496. CSSM_WORDID_SIGNED_SECRET = 118;
  497. CSSM_WORDID_SPKI = 119;
  498. CSSM_WORDID_SUBJECT = 120;
  499. CSSM_WORDID_SUBJECT_INFO = 121;
  500. CSSM_WORDID_TAG = 122;
  501. CSSM_WORDID_THRESHOLD = 123;
  502. CSSM_WORDID_TIME = 124;
  503. CSSM_WORDID_URI = 125;
  504. CSSM_WORDID_VERSION = 126;
  505. CSSM_WORDID_X509_ATTRIBUTE = 127;
  506. CSSM_WORDID_X509V1 = 128;
  507. CSSM_WORDID_X509V2 = 129;
  508. CSSM_WORDID_X509V3 = 130;
  509. CSSM_WORDID_X9_ATTRIBUTE = 131;
  510. CSSM_WORDID_VENDOR_START = $00010000;
  511. CSSM_WORDID_VENDOR_END = $7FFF0000;
  512. type
  513. CSSM_LIST_ELEMENT_TYPE = UInt32;
  514. CSSM_LIST_ELEMENT_TYPE_PTR = ^UInt32;
  515. CSSM_LIST_ELEMENT_TYPEPtr = ^UInt32;
  516. const
  517. CSSM_LIST_ELEMENT_DATUM = $00;
  518. CSSM_LIST_ELEMENT_SUBLIST = $01;
  519. CSSM_LIST_ELEMENT_WORDID = $02;
  520. type
  521. CSSM_LIST_TYPE = UInt32;
  522. CSSM_LIST_TYPE_PTR = ^UInt32;
  523. CSSM_LIST_TYPEPtr = ^UInt32;
  524. const
  525. CSSM_LIST_TYPE_UNKNOWN = 0;
  526. CSSM_LIST_TYPE_CUSTOM = 1;
  527. CSSM_LIST_TYPE_SEXPR = 2;
  528. type
  529. CSSM_LIST_ELEMENT_PTR = ^cssm_list_element;
  530. CSSM_LIST_ELEMENTPtr = ^cssm_list_element;
  531. CSSM_LIST_PTR = ^cssm_list;
  532. CSSM_LISTPtr = ^cssm_list;
  533. cssm_list = record
  534. ListType: CSSM_LIST_TYPE; { type of this list }
  535. Head: CSSM_LIST_ELEMENT_PTR; { head of the list }
  536. Tail: CSSM_LIST_ELEMENT_PTR; { tail of the list }
  537. end;
  538. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  539. __embedded_cssm_list_element = record
  540. case Integer of
  541. 0: (Sublist: CSSM_LIST); { sublist }
  542. 1: (Word: CSSM_DATA); { a byte-string }
  543. end;
  544. cssm_list_element = record
  545. NextElement: cssm_list_element_ptr; { next list element }
  546. WordID: CSSM_WORDID_TYPE; { integer identifier associated }
  547. { with a Word value }
  548. ElementType: CSSM_LIST_ELEMENT_TYPE;
  549. Element: __embedded_cssm_list_element;
  550. end;
  551. type
  552. CSSM_TUPLE_PTR = ^CSSM_TUPLE;
  553. CSSM_TUPLEPtr = ^CSSM_TUPLE;
  554. CSSM_TUPLE = record
  555. { 5-tuple definition }
  556. Issuer: CSSM_LIST; { issuer, or empty if ACL }
  557. Subject: CSSM_LIST; { subject }
  558. Delegate: CSSM_BOOL; { permission to delegate }
  559. AuthorizationTag: CSSM_LIST; { authorization field }
  560. ValidityPeriod: CSSM_LIST; { validity information (dates) }
  561. end;
  562. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  563. type
  564. CSSM_TUPLEGROUP_PTR = ^cssm_tuplegroup;
  565. CSSM_TUPLEGROUPPtr = ^cssm_tuplegroup;
  566. cssm_tuplegroup = record
  567. NumberOfTuples: UInt32;
  568. Tuples: CSSM_TUPLE_PTR;
  569. end;
  570. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  571. type
  572. CSSM_SAMPLE_TYPE = CSSM_WORDID_TYPE;
  573. const
  574. CSSM_SAMPLE_TYPE_PASSWORD = CSSM_WORDID_PASSWORD;
  575. CSSM_SAMPLE_TYPE_HASHED_PASSWORD = CSSM_WORDID_HASHED_PASSWORD;
  576. CSSM_SAMPLE_TYPE_PROTECTED_PASSWORD = CSSM_WORDID_PROTECTED_PASSWORD;
  577. CSSM_SAMPLE_TYPE_PROMPTED_PASSWORD = CSSM_WORDID_PROMPTED_PASSWORD;
  578. CSSM_SAMPLE_TYPE_SIGNED_NONCE = CSSM_WORDID_SIGNED_NONCE;
  579. CSSM_SAMPLE_TYPE_SIGNED_SECRET = CSSM_WORDID_SIGNED_SECRET;
  580. CSSM_SAMPLE_TYPE_BIOMETRIC = CSSM_WORDID_BIOMETRIC;
  581. CSSM_SAMPLE_TYPE_PROTECTED_BIOMETRIC = CSSM_WORDID_PROTECTED_BIOMETRIC;
  582. CSSM_SAMPLE_TYPE_PROMPTED_BIOMETRIC = CSSM_WORDID_PROMPTED_BIOMETRIC;
  583. CSSM_SAMPLE_TYPE_THRESHOLD = CSSM_WORDID_THRESHOLD;
  584. type
  585. CSSM_SAMPLE_PTR = ^cssm_sample;
  586. CSSM_SAMPLEPtr = ^cssm_sample;
  587. cssm_sample = record
  588. TypedSample: CSSM_LIST;
  589. Verifier: {const} CSSM_SUBSERVICE_UIDPtr;
  590. end;
  591. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  592. type
  593. CSSM_SAMPLEGROUP_PTR = ^cssm_samplegroup;
  594. CSSM_SAMPLEGROUPPtr = ^cssm_samplegroup;
  595. cssm_samplegroup = record
  596. NumberOfSamples: UInt32;
  597. Samples: {const} CSSM_SAMPLEPtr;
  598. end;
  599. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  600. type
  601. CSSM_MALLOC = function( size: CSSM_SIZE; allocref: UnivPtr ): UnivPtr;
  602. type
  603. CSSM_FREE = procedure( memblock: UnivPtr; allocref: UnivPtr );
  604. type
  605. CSSM_REALLOC = function( memblock: UnivPtr; size: CSSM_SIZE; allocref: UnivPtr ): UnivPtr;
  606. type
  607. CSSM_CALLOC = function( num: UInt32; size: CSSM_SIZE; allocref: UnivPtr ): UnivPtr;
  608. type
  609. CSSM_MEMORY_FUNCS_PTR = ^cssm_memory_funcs;
  610. CSSM_MEMORY_FUNCSPtr = ^cssm_memory_funcs;
  611. cssm_memory_funcs = record
  612. malloc_func: CSSM_MALLOC;
  613. free_func: CSSM_FREE;
  614. realloc_func: CSSM_REALLOC;
  615. calloc_func: CSSM_CALLOC;
  616. AllocRef: UnivPtr;
  617. end;
  618. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  619. type
  620. CSSM_API_MEMORY_FUNCS = CSSM_MEMORY_FUNCS;
  621. CSSM_API_MEMORY_FUNCS_PTR = ^CSSM_API_MEMORY_FUNCS;
  622. CSSM_API_MEMORY_FUNCSPtr = ^CSSM_API_MEMORY_FUNCS;
  623. type
  624. CSSM_CHALLENGE_CALLBACK = function( const (*var*) Challenge: CSSM_LIST; Response: CSSM_SAMPLEGROUP_PTR; CallerCtx: UnivPtr; const (*var*) MemFuncs: CSSM_MEMORY_FUNCS ): CSSM_RETURN;
  625. type
  626. CSSM_CERT_TYPE = UInt32;
  627. CSSM_CERT_TYPE_PTR = ^UInt32;
  628. CSSM_CERT_TYPEPtr = ^UInt32;
  629. const
  630. CSSM_CERT_UNKNOWN = $00;
  631. CSSM_CERT_X_509v1 = $01;
  632. CSSM_CERT_X_509v2 = $02;
  633. CSSM_CERT_X_509v3 = $03;
  634. CSSM_CERT_PGP = $04;
  635. CSSM_CERT_SPKI = $05;
  636. CSSM_CERT_SDSIv1 = $06;
  637. CSSM_CERT_Intel = $08;
  638. CSSM_CERT_X_509_ATTRIBUTE = $09; { X.509 attribute cert }
  639. CSSM_CERT_X9_ATTRIBUTE = $0A; { X9 attribute cert }
  640. CSSM_CERT_TUPLE = $0B;
  641. CSSM_CERT_ACL_ENTRY = $0C;
  642. CSSM_CERT_MULTIPLE = $7FFE;
  643. CSSM_CERT_LAST = $7FFF;
  644. { Applications wishing to define their own custom certificate
  645. type should define and publicly document a uint32 value greater
  646. than the CSSM_CL_CUSTOM_CERT_TYPE }
  647. CSSM_CL_CUSTOM_CERT_TYPE = $08000;
  648. type
  649. CSSM_CERT_ENCODING = UInt32;
  650. CSSM_CERT_ENCODING_PTR = ^UInt32;
  651. CSSM_CERT_ENCODINGPtr = ^UInt32;
  652. const
  653. CSSM_CERT_ENCODING_UNKNOWN = $00;
  654. CSSM_CERT_ENCODING_CUSTOM = $01;
  655. CSSM_CERT_ENCODING_BER = $02;
  656. CSSM_CERT_ENCODING_DER = $03;
  657. CSSM_CERT_ENCODING_NDR = $04;
  658. CSSM_CERT_ENCODING_SEXPR = $05;
  659. CSSM_CERT_ENCODING_PGP = $06;
  660. CSSM_CERT_ENCODING_MULTIPLE = $7FFE;
  661. CSSM_CERT_ENCODING_LAST = $7FFF;
  662. { Applications wishing to define their own custom certificate
  663. encoding should create a uint32 value greater than the
  664. CSSM_CL_CUSTOM_CERT_ENCODING }
  665. CSSM_CL_CUSTOM_CERT_ENCODING = $8000;
  666. type
  667. CSSM_ENCODED_CERT_PTR = ^cssm_encoded_cert;
  668. CSSM_ENCODED_CERTPtr = ^cssm_encoded_cert;
  669. cssm_encoded_cert = record
  670. CertType: CSSM_CERT_TYPE; { type of certificate }
  671. CertEncoding: CSSM_CERT_ENCODING; { encoding for this packed cert }
  672. CertBlob: CSSM_DATA; { packed cert }
  673. end;
  674. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  675. type
  676. CSSM_CERT_PARSE_FORMAT = UInt32;
  677. CSSM_CERT_PARSE_FORMAT_PTR = ^UInt32;
  678. CSSM_CERT_PARSE_FORMATPtr = ^UInt32;
  679. const
  680. CSSM_CERT_PARSE_FORMAT_NONE = $00;
  681. CSSM_CERT_PARSE_FORMAT_CUSTOM = $01; { void* }
  682. CSSM_CERT_PARSE_FORMAT_SEXPR = $02; { CSSM_LIST }
  683. CSSM_CERT_PARSE_FORMAT_COMPLEX = $03; { void* }
  684. CSSM_CERT_PARSE_FORMAT_OID_NAMED = $04; { CSSM_FIELDGROUP }
  685. CSSM_CERT_PARSE_FORMAT_TUPLE = $05; { CSSM_TUPLE }
  686. CSSM_CERT_PARSE_FORMAT_MULTIPLE = $7FFE;
  687. { multiple forms, each cert carries a
  688. parse format indicator }
  689. CSSM_CERT_PARSE_FORMAT_LAST = $7FFF;
  690. { Applications wishing to define their
  691. own custom parse format should create
  692. a * uint32 value greater than the
  693. CSSM_CL_CUSTOM_CERT_PARSE_FORMAT }
  694. CSSM_CL_CUSTOM_CERT_PARSE_FORMAT = $8000;
  695. type
  696. CSSM_PARSED_CERT_PTR = ^cssm_parsed_cert;
  697. CSSM_PARSED_CERTPtr = ^cssm_parsed_cert;
  698. cssm_parsed_cert = record
  699. CertType: CSSM_CERT_TYPE; { certificate type }
  700. ParsedCertFormat: CSSM_CERT_PARSE_FORMAT;
  701. { struct of ParsedCert }
  702. ParsedCert: UnivPtr; { parsed cert (to be typecast) }
  703. end;
  704. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  705. type
  706. CSSM_CERT_PAIR_PTR = ^cssm_cert_pair;
  707. CSSM_CERT_PAIRPtr = ^cssm_cert_pair;
  708. cssm_cert_pair = record
  709. EncodedCert: CSSM_ENCODED_CERT; { an encoded certificate blob }
  710. ParsedCert: CSSM_PARSED_CERT; { equivalent parsed certificate }
  711. end;
  712. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  713. type
  714. CSSM_CERTGROUP_TYPE = UInt32;
  715. CSSM_CERTGROUP_TYPE_PTR = ^UInt32;
  716. CSSM_CERTGROUP_TYPEPtr = ^UInt32;
  717. const
  718. CSSM_CERTGROUP_DATA = $00;
  719. CSSM_CERTGROUP_ENCODED_CERT = $01;
  720. CSSM_CERTGROUP_PARSED_CERT = $02;
  721. CSSM_CERTGROUP_CERT_PAIR = $03;
  722. type
  723. __EmbeddedGroupListType = record
  724. case Integer of
  725. 0: (CertList: CSSM_DATA_PTR); { legacy list of single type certificate blobs }
  726. 1: (EncodedCertList: CSSM_ENCODED_CERT_PTR);
  727. { list of multi-type certificate blobs }
  728. 2: (ParsedCertList: CSSM_PARSED_CERT_PTR);
  729. { list of multi-type parsed certs }
  730. 3: (PairCertList: CSSM_CERT_PAIR_PTR);
  731. {list of single or multi-type certs with two representations: blob and parsed }
  732. end;
  733. cssm_certgroup = record
  734. CertType: CSSM_CERT_TYPE;
  735. CertEncoding: CSSM_CERT_ENCODING;
  736. NumCerts: UInt32; { # of certificates in this list }
  737. CertGroupType: __EmbeddedGroupListType;
  738. { type of structure in the GroupList }
  739. Reserved: UnivPtr; { reserved for implementation dependent use }
  740. end;
  741. cssm_certgroup_ptr = ^cssm_certgroup;
  742. CSSM_certgroupPtr = ^cssm_certgroup;
  743. type
  744. CSSM_BASE_CERTS_PTR = ^cssm_base_certs;
  745. CSSM_BASE_CERTSPtr = ^cssm_base_certs;
  746. cssm_base_certs = record
  747. TPHandle: CSSM_TP_HANDLE;
  748. CLHandle: CSSM_CL_HANDLE;
  749. Certs: CSSM_CERTGROUP;
  750. end;
  751. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  752. type
  753. CSSM_ACCESS_CREDENTIALS_PTR = ^cssm_access_credentials;
  754. CSSM_ACCESS_CREDENTIALSPtr = ^cssm_access_credentials;
  755. cssm_access_credentials = record
  756. EntryTag: CSSM_STRING;
  757. BaseCerts: CSSM_BASE_CERTS;
  758. Samples: CSSM_SAMPLEGROUP;
  759. Callback: CSSM_CHALLENGE_CALLBACK;
  760. CallerCtx: UnivPtr;
  761. end;
  762. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  763. type
  764. CSSM_ACL_SUBJECT_TYPE = SInt32;
  765. const
  766. CSSM_ACL_SUBJECT_TYPE_ANY = CSSM_WORDID__STAR_;
  767. CSSM_ACL_SUBJECT_TYPE_THRESHOLD = CSSM_WORDID_THRESHOLD;
  768. CSSM_ACL_SUBJECT_TYPE_PASSWORD = CSSM_WORDID_PASSWORD;
  769. CSSM_ACL_SUBJECT_TYPE_PROTECTED_PASSWORD = CSSM_WORDID_PROTECTED_PASSWORD;
  770. CSSM_ACL_SUBJECT_TYPE_PROMPTED_PASSWORD = CSSM_WORDID_PROMPTED_PASSWORD;
  771. CSSM_ACL_SUBJECT_TYPE_PUBLIC_KEY = CSSM_WORDID_PUBLIC_KEY;
  772. CSSM_ACL_SUBJECT_TYPE_HASHED_SUBJECT = CSSM_WORDID_HASHED_SUBJECT;
  773. CSSM_ACL_SUBJECT_TYPE_BIOMETRIC = CSSM_WORDID_BIOMETRIC;
  774. CSSM_ACL_SUBJECT_TYPE_PROTECTED_BIOMETRIC = CSSM_WORDID_PROTECTED_BIOMETRIC;
  775. CSSM_ACL_SUBJECT_TYPE_PROMPTED_BIOMETRIC = CSSM_WORDID_PROMPTED_BIOMETRIC;
  776. CSSM_ACL_SUBJECT_TYPE_LOGIN_NAME = CSSM_WORDID_LOGIN_NAME;
  777. CSSM_ACL_SUBJECT_TYPE_EXT_PAM_NAME = CSSM_WORDID_PAM_NAME;
  778. { Authorization tag type }
  779. type
  780. CSSM_ACL_AUTHORIZATION_TAG = SInt32;
  781. CSSM_ACL_AUTHORIZATION_TAGPtr = ^CSSM_ACL_AUTHORIZATION_TAG;
  782. const
  783. { All vendor specific constants must be in the number range
  784. starting at CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START }
  785. CSSM_ACL_AUTHORIZATION_TAG_VENDOR_DEFINED_START = $00010000;
  786. { No restrictions. Permission to perform all operations on
  787. the resource or available to an ACL owner. }
  788. CSSM_ACL_AUTHORIZATION_ANY = CSSM_WORDID__STAR_;
  789. { Defined authorization tag values for CSPs }
  790. CSSM_ACL_AUTHORIZATION_LOGIN = CSSM_WORDID_LOGIN;
  791. CSSM_ACL_AUTHORIZATION_GENKEY = CSSM_WORDID_GENKEY;
  792. CSSM_ACL_AUTHORIZATION_DELETE = CSSM_WORDID_DELETE;
  793. CSSM_ACL_AUTHORIZATION_EXPORT_WRAPPED = CSSM_WORDID_EXPORT_WRAPPED;
  794. CSSM_ACL_AUTHORIZATION_EXPORT_CLEAR = CSSM_WORDID_EXPORT_CLEAR;
  795. CSSM_ACL_AUTHORIZATION_IMPORT_WRAPPED = CSSM_WORDID_IMPORT_WRAPPED;
  796. CSSM_ACL_AUTHORIZATION_IMPORT_CLEAR = CSSM_WORDID_IMPORT_CLEAR;
  797. CSSM_ACL_AUTHORIZATION_SIGN = CSSM_WORDID_SIGN;
  798. CSSM_ACL_AUTHORIZATION_ENCRYPT = CSSM_WORDID_ENCRYPT;
  799. CSSM_ACL_AUTHORIZATION_DECRYPT = CSSM_WORDID_DECRYPT;
  800. CSSM_ACL_AUTHORIZATION_MAC = CSSM_WORDID_MAC;
  801. CSSM_ACL_AUTHORIZATION_DERIVE = CSSM_WORDID_DERIVE;
  802. { Defined authorization tag values for DLs }
  803. CSSM_ACL_AUTHORIZATION_DBS_CREATE = CSSM_WORDID_DBS_CREATE;
  804. CSSM_ACL_AUTHORIZATION_DBS_DELETE = CSSM_WORDID_DBS_DELETE;
  805. CSSM_ACL_AUTHORIZATION_DB_READ = CSSM_WORDID_DB_READ;
  806. CSSM_ACL_AUTHORIZATION_DB_INSERT = CSSM_WORDID_DB_INSERT;
  807. CSSM_ACL_AUTHORIZATION_DB_MODIFY = CSSM_WORDID_DB_MODIFY;
  808. CSSM_ACL_AUTHORIZATION_DB_DELETE = CSSM_WORDID_DB_DELETE;
  809. type
  810. CSSM_AUTHORIZATIONGROUP_PTR = ^cssm_authorizationgroup;
  811. CSSM_AUTHORIZATIONGROUPPtr = ^cssm_authorizationgroup;
  812. cssm_authorizationgroup = record
  813. NumberOfAuthTags: UInt32;
  814. AuthTags: CSSM_ACL_AUTHORIZATION_TAGPtr;
  815. end;
  816. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  817. type
  818. CSSM_ACL_VALIDITY_PERIOD_PTR = ^cssm_acl_validity_period;
  819. CSSM_ACL_VALIDITY_PERIODPtr = ^cssm_acl_validity_period;
  820. cssm_acl_validity_period = record
  821. StartDate: CSSM_DATA;
  822. EndDate: CSSM_DATA;
  823. end;
  824. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  825. type
  826. CSSM_ACL_ENTRY_PROTOTYPE_PTR = ^cssm_acl_entry_prototype;
  827. CSSM_ACL_ENTRY_PROTOTYPEPtr = ^cssm_acl_entry_prototype;
  828. cssm_acl_entry_prototype = record
  829. TypedSubject: CSSM_LIST;
  830. Delegate: CSSM_BOOL;
  831. Authorization: CSSM_AUTHORIZATIONGROUP;
  832. TimeRange: CSSM_ACL_VALIDITY_PERIOD;
  833. EntryTag: CSSM_STRING;
  834. end;
  835. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  836. type
  837. CSSM_ACL_OWNER_PROTOTYPE_PTR = ^cssm_acl_owner_prototype;
  838. CSSM_ACL_OWNER_PROTOTYPEPtr = ^cssm_acl_owner_prototype;
  839. cssm_acl_owner_prototype = record
  840. TypedSubject: CSSM_LIST;
  841. Delegate: CSSM_BOOL;
  842. end;
  843. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  844. type
  845. CSSM_ACL_SUBJECT_CALLBACK = function( const (*var*) SubjectRequest: CSSM_LIST; SubjectResponse: CSSM_LIST_PTR; CallerContext: UnivPtr; const (*var*) MemFuncs: CSSM_MEMORY_FUNCS ): CSSM_RETURN;
  846. type
  847. CSSM_ACL_ENTRY_INPUT_PTR = ^cssm_acl_entry_input;
  848. CSSM_ACL_ENTRY_INPUTPtr = ^cssm_acl_entry_input;
  849. cssm_acl_entry_input = record
  850. Prototype: CSSM_ACL_ENTRY_PROTOTYPE;
  851. Callback: CSSM_ACL_SUBJECT_CALLBACK;
  852. CallerContext: UnivPtr;
  853. end;
  854. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  855. type
  856. CSSM_RESOURCE_CONTROL_CONTEXT_PTR = ^cssm_resource_control_context;
  857. CSSM_RESOURCE_CONTROL_CONTEXTPtr = ^cssm_resource_control_context;
  858. cssm_resource_control_context = record
  859. AccessCred: CSSM_ACCESS_CREDENTIALS_PTR;
  860. InitialAclEntry: CSSM_ACL_ENTRY_INPUT;
  861. end;
  862. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  863. type
  864. CSSM_ACL_HANDLE = CSSM_HANDLE;
  865. type
  866. CSSM_ACL_ENTRY_INFO_PTR = ^cssm_acl_entry_info;
  867. CSSM_ACL_ENTRY_INFOPtr = ^cssm_acl_entry_info;
  868. cssm_acl_entry_info = record
  869. EntryPublicInfo: CSSM_ACL_ENTRY_PROTOTYPE;
  870. EntryHandle: CSSM_ACL_HANDLE;
  871. end;
  872. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  873. type
  874. CSSM_ACL_EDIT_MODE = UInt32;
  875. const
  876. CSSM_ACL_EDIT_MODE_ADD = 1;
  877. CSSM_ACL_EDIT_MODE_DELETE = 2;
  878. CSSM_ACL_EDIT_MODE_REPLACE = 3;
  879. type
  880. CSSM_ACL_EDIT_PTR = ^cssm_acl_edit;
  881. CSSM_ACL_EDITPtr = ^cssm_acl_edit;
  882. cssm_acl_edit = record
  883. EditMode: CSSM_ACL_EDIT_MODE;
  884. OldEntryHandle: CSSM_ACL_HANDLE;
  885. NewEntry: {const} CSSM_ACL_ENTRY_INPUTPtr;
  886. end;
  887. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  888. {$ifc defined(WIN32)}
  889. type
  890. CSSM_PROC_ADDR = FARPROC;
  891. {$elsec}
  892. type
  893. CSSM_PROC_ADDR = procedure;
  894. {$endc}
  895. CSSM_PROC_ADDRPtr = ^CSSM_PROC_ADDR;
  896. type
  897. CSSM_PROC_ADDR_PTR = CSSM_PROC_ADDRPtr;
  898. type
  899. CSSM_FUNC_NAME_ADDR_PTR = ^cssm_func_name_addr;
  900. CSSM_FUNC_NAME_ADDRPtr = ^cssm_func_name_addr;
  901. cssm_func_name_addr = record
  902. Name: CSSM_STRING;
  903. Address: CSSM_PROC_ADDR;
  904. end;
  905. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  906. { Data Types for Cryptographic Services }
  907. type
  908. CSSM_DATE_PTR = ^cssm_date;
  909. CSSM_DATEPtr = ^cssm_date;
  910. cssm_date = record
  911. Year: array [0..4-1] of UInt8;
  912. Month: array [0..2-1] of UInt8;
  913. Day: array [0..2-1] of UInt8;
  914. end;
  915. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  916. type
  917. CSSM_RANGE_PTR = ^cssm_range;
  918. CSSM_RANGEPtr = ^cssm_range;
  919. cssm_range = record
  920. Min: UInt32; { inclusive minimum value }
  921. Max: UInt32; { inclusive maximum value }
  922. end;
  923. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  924. type
  925. CSSM_QUERY_SIZE_DATA_PTR = ^cssm_query_size_data;
  926. CSSM_QUERY_SIZE_DATAPtr = ^cssm_query_size_data;
  927. cssm_query_size_data = record
  928. SizeInputBlock: UInt32; { size of input data block }
  929. SizeOutputBlock: UInt32; { size of resulting output data block }
  930. end;
  931. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  932. type
  933. CSSM_HEADERVERSION = UInt32;
  934. const
  935. CSSM_KEYHEADER_VERSION = 2;
  936. type
  937. CSSM_KEY_SIZE_PTR = ^cssm_key_size;
  938. CSSM_KEY_SIZEPtr = ^cssm_key_size;
  939. cssm_key_size = record
  940. LogicalKeySizeInBits: UInt32; { Logical key size in bits }
  941. EffectiveKeySizeInBits: UInt32; { Effective key size in bits }
  942. end;
  943. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  944. type
  945. CSSM_KEYBLOB_TYPE = UInt32;
  946. const
  947. CSSM_KEYBLOB_RAW = 0; { The blob is a clear, raw key }
  948. CSSM_KEYBLOB_REFERENCE = 2; { The blob is a reference to a key }
  949. CSSM_KEYBLOB_WRAPPED = 3; { The blob is a wrapped RAW key }
  950. CSSM_KEYBLOB_OTHER = $FFFFFFFF;
  951. type
  952. CSSM_KEYBLOB_FORMAT = UInt32;
  953. const
  954. { Raw Format }
  955. CSSM_KEYBLOB_RAW_FORMAT_NONE = 0;
  956. { No further conversion need to be done }
  957. CSSM_KEYBLOB_RAW_FORMAT_PKCS1 = 1; { RSA PKCS1 V1.5 }
  958. CSSM_KEYBLOB_RAW_FORMAT_PKCS3 = 2; { RSA PKCS3 V1.5 }
  959. CSSM_KEYBLOB_RAW_FORMAT_MSCAPI = 3; { Microsoft CAPI V2.0 }
  960. CSSM_KEYBLOB_RAW_FORMAT_PGP = 4; { PGP V }
  961. CSSM_KEYBLOB_RAW_FORMAT_FIPS186 = 5; { US Gov. FIPS 186 - DSS V }
  962. CSSM_KEYBLOB_RAW_FORMAT_BSAFE = 6; { RSA Bsafe V3.0 }
  963. CSSM_KEYBLOB_RAW_FORMAT_CCA = 9; { CCA clear public key blob }
  964. CSSM_KEYBLOB_RAW_FORMAT_PKCS8 = 10; { RSA PKCS8 V1.2 }
  965. CSSM_KEYBLOB_RAW_FORMAT_SPKI = 11; { SPKI Specification }
  966. CSSM_KEYBLOB_RAW_FORMAT_OCTET_STRING = 12;
  967. CSSM_KEYBLOB_RAW_FORMAT_OTHER = $FFFFFFFF; { Other, CSP defined }
  968. const
  969. { Wrapped Format }
  970. CSSM_KEYBLOB_WRAPPED_FORMAT_NONE = 0;
  971. { No further conversion need to be done }
  972. CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS8 = 1; { RSA PKCS8 V1.2 }
  973. CSSM_KEYBLOB_WRAPPED_FORMAT_PKCS7 = 2;
  974. CSSM_KEYBLOB_WRAPPED_FORMAT_MSCAPI = 3;
  975. CSSM_KEYBLOB_WRAPPED_FORMAT_OTHER = $FFFFFFFF; { Other, CSP defined }
  976. const
  977. { Reference Format }
  978. CSSM_KEYBLOB_REF_FORMAT_INTEGER = 0; { Reference is a number or handle }
  979. CSSM_KEYBLOB_REF_FORMAT_STRING = 1; { Reference is a string or label }
  980. CSSM_KEYBLOB_REF_FORMAT_SPKI = 2; { Reference is an SPKI S-expression }
  981. { to be evaluated to locate the key }
  982. CSSM_KEYBLOB_REF_FORMAT_OTHER = $FFFFFFFF; { Other, CSP defined }
  983. type
  984. CSSM_KEYCLASS = UInt32;
  985. const
  986. CSSM_KEYCLASS_PUBLIC_KEY = 0; { Key is public key }
  987. CSSM_KEYCLASS_PRIVATE_KEY = 1; { Key is private key }
  988. CSSM_KEYCLASS_SESSION_KEY = 2; { Key is session or symmetric key }
  989. CSSM_KEYCLASS_SECRET_PART = 3; { Key is part of secret key }
  990. CSSM_KEYCLASS_OTHER = $FFFFFFFF; { Other }
  991. type
  992. CSSM_KEYATTR_FLAGS = UInt32;
  993. const
  994. { Valid only during call to an API. Will never be valid when set in a key header }
  995. CSSM_KEYATTR_RETURN_DEFAULT = $00000000;
  996. CSSM_KEYATTR_RETURN_DATA = $10000000;
  997. CSSM_KEYATTR_RETURN_REF = $20000000;
  998. CSSM_KEYATTR_RETURN_NONE = $40000000;
  999. { Valid during an API call and in a key header }
  1000. CSSM_KEYATTR_PERMANENT = $00000001;
  1001. CSSM_KEYATTR_PRIVATE = $00000002;
  1002. CSSM_KEYATTR_MODIFIABLE = $00000004;
  1003. CSSM_KEYATTR_SENSITIVE = $00000008;
  1004. CSSM_KEYATTR_EXTRACTABLE = $00000020;
  1005. { Valid only in a key header generated by a CSP, not valid during an API call }
  1006. CSSM_KEYATTR_ALWAYS_SENSITIVE = $00000010;
  1007. CSSM_KEYATTR_NEVER_EXTRACTABLE = $00000040;
  1008. type
  1009. CSSM_KEYUSE = UInt32;
  1010. const
  1011. CSSM_KEYUSE_ANY = $80000000;
  1012. CSSM_KEYUSE_ENCRYPT = $00000001;
  1013. CSSM_KEYUSE_DECRYPT = $00000002;
  1014. CSSM_KEYUSE_SIGN = $00000004;
  1015. CSSM_KEYUSE_VERIFY = $00000008;
  1016. CSSM_KEYUSE_SIGN_RECOVER = $00000010;
  1017. CSSM_KEYUSE_VERIFY_RECOVER = $00000020;
  1018. CSSM_KEYUSE_WRAP = $00000040;
  1019. CSSM_KEYUSE_UNWRAP = $00000080;
  1020. CSSM_KEYUSE_DERIVE = $00000100;
  1021. type
  1022. CSSM_ALGORITHMS = UInt32;
  1023. const
  1024. CSSM_ALGID_NONE = 0;
  1025. CSSM_ALGID_CUSTOM = CSSM_ALGID_NONE + 1;
  1026. CSSM_ALGID_DH = CSSM_ALGID_NONE + 2;
  1027. CSSM_ALGID_PH = CSSM_ALGID_NONE + 3;
  1028. CSSM_ALGID_KEA = CSSM_ALGID_NONE + 4;
  1029. CSSM_ALGID_MD2 = CSSM_ALGID_NONE + 5;
  1030. CSSM_ALGID_MD4 = CSSM_ALGID_NONE + 6;
  1031. CSSM_ALGID_MD5 = CSSM_ALGID_NONE + 7;
  1032. CSSM_ALGID_SHA1 = CSSM_ALGID_NONE + 8;
  1033. CSSM_ALGID_NHASH = CSSM_ALGID_NONE + 9;
  1034. CSSM_ALGID_HAVAL = CSSM_ALGID_NONE + 10;
  1035. CSSM_ALGID_RIPEMD = CSSM_ALGID_NONE + 11;
  1036. CSSM_ALGID_IBCHASH = CSSM_ALGID_NONE + 12;
  1037. CSSM_ALGID_RIPEMAC = CSSM_ALGID_NONE + 13;
  1038. CSSM_ALGID_DES = CSSM_ALGID_NONE + 14;
  1039. CSSM_ALGID_DESX = CSSM_ALGID_NONE + 15;
  1040. CSSM_ALGID_RDES = CSSM_ALGID_NONE + 16;
  1041. CSSM_ALGID_3DES_3KEY_EDE = CSSM_ALGID_NONE + 17;
  1042. CSSM_ALGID_3DES_2KEY_EDE = CSSM_ALGID_NONE + 18;
  1043. CSSM_ALGID_3DES_1KEY_EEE = CSSM_ALGID_NONE + 19;
  1044. CSSM_ALGID_3DES_3KEY = CSSM_ALGID_3DES_3KEY_EDE;
  1045. CSSM_ALGID_3DES_3KEY_EEE = CSSM_ALGID_NONE + 20;
  1046. CSSM_ALGID_3DES_2KEY = CSSM_ALGID_3DES_2KEY_EDE;
  1047. CSSM_ALGID_3DES_2KEY_EEE = CSSM_ALGID_NONE + 21;
  1048. CSSM_ALGID_3DES_1KEY = CSSM_ALGID_3DES_3KEY_EEE;
  1049. CSSM_ALGID_IDEA = CSSM_ALGID_NONE + 22;
  1050. CSSM_ALGID_RC2 = CSSM_ALGID_NONE + 23;
  1051. CSSM_ALGID_RC5 = CSSM_ALGID_NONE + 24;
  1052. CSSM_ALGID_RC4 = CSSM_ALGID_NONE + 25;
  1053. CSSM_ALGID_SEAL = CSSM_ALGID_NONE + 26;
  1054. CSSM_ALGID_CAST = CSSM_ALGID_NONE + 27;
  1055. CSSM_ALGID_BLOWFISH = CSSM_ALGID_NONE + 28;
  1056. CSSM_ALGID_SKIPJACK = CSSM_ALGID_NONE + 29;
  1057. CSSM_ALGID_LUCIFER = CSSM_ALGID_NONE + 30;
  1058. CSSM_ALGID_MADRYGA = CSSM_ALGID_NONE + 31;
  1059. CSSM_ALGID_FEAL = CSSM_ALGID_NONE + 32;
  1060. CSSM_ALGID_REDOC = CSSM_ALGID_NONE + 33;
  1061. CSSM_ALGID_REDOC3 = CSSM_ALGID_NONE + 34;
  1062. CSSM_ALGID_LOKI = CSSM_ALGID_NONE + 35;
  1063. CSSM_ALGID_KHUFU = CSSM_ALGID_NONE + 36;
  1064. CSSM_ALGID_KHAFRE = CSSM_ALGID_NONE + 37;
  1065. CSSM_ALGID_MMB = CSSM_ALGID_NONE + 38;
  1066. CSSM_ALGID_GOST = CSSM_ALGID_NONE + 39;
  1067. CSSM_ALGID_SAFER = CSSM_ALGID_NONE + 40;
  1068. CSSM_ALGID_CRAB = CSSM_ALGID_NONE + 41;
  1069. CSSM_ALGID_RSA = CSSM_ALGID_NONE + 42;
  1070. CSSM_ALGID_DSA = CSSM_ALGID_NONE + 43;
  1071. CSSM_ALGID_MD5WithRSA = CSSM_ALGID_NONE + 44;
  1072. CSSM_ALGID_MD2WithRSA = CSSM_ALGID_NONE + 45;
  1073. CSSM_ALGID_ElGamal = CSSM_ALGID_NONE + 46;
  1074. CSSM_ALGID_MD2Random = CSSM_ALGID_NONE + 47;
  1075. CSSM_ALGID_MD5Random = CSSM_ALGID_NONE + 48;
  1076. CSSM_ALGID_SHARandom = CSSM_ALGID_NONE + 49;
  1077. CSSM_ALGID_DESRandom = CSSM_ALGID_NONE + 50;
  1078. CSSM_ALGID_SHA1WithRSA = CSSM_ALGID_NONE + 51;
  1079. CSSM_ALGID_CDMF = CSSM_ALGID_NONE + 52;
  1080. CSSM_ALGID_CAST3 = CSSM_ALGID_NONE + 53;
  1081. CSSM_ALGID_CAST5 = CSSM_ALGID_NONE + 54;
  1082. CSSM_ALGID_GenericSecret = CSSM_ALGID_NONE + 55;
  1083. CSSM_ALGID_ConcatBaseAndKey = CSSM_ALGID_NONE + 56;
  1084. CSSM_ALGID_ConcatKeyAndBase = CSSM_ALGID_NONE + 57;
  1085. CSSM_ALGID_ConcatBaseAndData = CSSM_ALGID_NONE + 58;
  1086. CSSM_ALGID_ConcatDataAndBase = CSSM_ALGID_NONE + 59;
  1087. CSSM_ALGID_XORBaseAndData = CSSM_ALGID_NONE + 60;
  1088. CSSM_ALGID_ExtractFromKey = CSSM_ALGID_NONE + 61;
  1089. CSSM_ALGID_SSL3PreMasterGen = CSSM_ALGID_NONE + 62;
  1090. CSSM_ALGID_SSL3MasterDerive = CSSM_ALGID_NONE + 63;
  1091. CSSM_ALGID_SSL3KeyAndMacDerive = CSSM_ALGID_NONE + 64;
  1092. CSSM_ALGID_SSL3MD5_MAC = CSSM_ALGID_NONE + 65;
  1093. CSSM_ALGID_SSL3SHA1_MAC = CSSM_ALGID_NONE + 66;
  1094. CSSM_ALGID_PKCS5_PBKDF1_MD5 = CSSM_ALGID_NONE + 67;
  1095. CSSM_ALGID_PKCS5_PBKDF1_MD2 = CSSM_ALGID_NONE + 68;
  1096. CSSM_ALGID_PKCS5_PBKDF1_SHA1 = CSSM_ALGID_NONE + 69;
  1097. CSSM_ALGID_WrapLynks = CSSM_ALGID_NONE + 70;
  1098. CSSM_ALGID_WrapSET_OAEP = CSSM_ALGID_NONE + 71;
  1099. CSSM_ALGID_BATON = CSSM_ALGID_NONE + 72;
  1100. CSSM_ALGID_ECDSA = CSSM_ALGID_NONE + 73;
  1101. CSSM_ALGID_MAYFLY = CSSM_ALGID_NONE + 74;
  1102. CSSM_ALGID_JUNIPER = CSSM_ALGID_NONE + 75;
  1103. CSSM_ALGID_FASTHASH = CSSM_ALGID_NONE + 76;
  1104. CSSM_ALGID_3DES = CSSM_ALGID_NONE + 77;
  1105. CSSM_ALGID_SSL3MD5 = CSSM_ALGID_NONE + 78;
  1106. CSSM_ALGID_SSL3SHA1 = CSSM_ALGID_NONE + 79;
  1107. CSSM_ALGID_FortezzaTimestamp = CSSM_ALGID_NONE + 80;
  1108. CSSM_ALGID_SHA1WithDSA = CSSM_ALGID_NONE + 81;
  1109. CSSM_ALGID_SHA1WithECDSA = CSSM_ALGID_NONE + 82;
  1110. CSSM_ALGID_DSA_BSAFE = CSSM_ALGID_NONE + 83;
  1111. CSSM_ALGID_ECDH = CSSM_ALGID_NONE + 84;
  1112. CSSM_ALGID_ECMQV = CSSM_ALGID_NONE + 85;
  1113. CSSM_ALGID_PKCS12_SHA1_PBE = CSSM_ALGID_NONE + 86;
  1114. CSSM_ALGID_ECNRA = CSSM_ALGID_NONE + 87;
  1115. CSSM_ALGID_SHA1WithECNRA = CSSM_ALGID_NONE + 88;
  1116. CSSM_ALGID_ECES = CSSM_ALGID_NONE + 89;
  1117. CSSM_ALGID_ECAES = CSSM_ALGID_NONE + 90;
  1118. CSSM_ALGID_SHA1HMAC = CSSM_ALGID_NONE + 91;
  1119. CSSM_ALGID_FIPS186Random = CSSM_ALGID_NONE + 92;
  1120. CSSM_ALGID_ECC = CSSM_ALGID_NONE + 93;
  1121. CSSM_ALGID_MQV = CSSM_ALGID_NONE + 94;
  1122. CSSM_ALGID_NRA = CSSM_ALGID_NONE + 95;
  1123. CSSM_ALGID_IntelPlatformRandom = CSSM_ALGID_NONE + 96;
  1124. CSSM_ALGID_UTC = CSSM_ALGID_NONE + 97;
  1125. CSSM_ALGID_HAVAL3 = CSSM_ALGID_NONE + 98;
  1126. CSSM_ALGID_HAVAL4 = CSSM_ALGID_NONE + 99;
  1127. CSSM_ALGID_HAVAL5 = CSSM_ALGID_NONE + 100;
  1128. CSSM_ALGID_TIGER = CSSM_ALGID_NONE + 101;
  1129. CSSM_ALGID_MD5HMAC = CSSM_ALGID_NONE + 102;
  1130. CSSM_ALGID_PKCS5_PBKDF2 = CSSM_ALGID_NONE + 103;
  1131. CSSM_ALGID_RUNNING_COUNTER = CSSM_ALGID_NONE + 104;
  1132. CSSM_ALGID_LAST = CSSM_ALGID_NONE + $7FFFFFFF;
  1133. { All algorithms IDs that are vendor specific, and not
  1134. part of the CSSM specification should be defined relative
  1135. to CSSM_ALGID_VENDOR_DEFINED. }
  1136. CSSM_ALGID_VENDOR_DEFINED = CSSM_ALGID_NONE + $80000000;
  1137. type
  1138. CSSM_ENCRYPT_MODE = UInt32;
  1139. const
  1140. CSSM_ALGMODE_NONE = 0;
  1141. CSSM_ALGMODE_CUSTOM = CSSM_ALGMODE_NONE + 1;
  1142. CSSM_ALGMODE_ECB = CSSM_ALGMODE_NONE + 2;
  1143. CSSM_ALGMODE_ECBPad = CSSM_ALGMODE_NONE + 3;
  1144. CSSM_ALGMODE_CBC = CSSM_ALGMODE_NONE + 4;
  1145. CSSM_ALGMODE_CBC_IV8 = CSSM_ALGMODE_NONE + 5;
  1146. CSSM_ALGMODE_CBCPadIV8 = CSSM_ALGMODE_NONE + 6;
  1147. CSSM_ALGMODE_CFB = CSSM_ALGMODE_NONE + 7;
  1148. CSSM_ALGMODE_CFB_IV8 = CSSM_ALGMODE_NONE + 8;
  1149. CSSM_ALGMODE_CFBPadIV8 = CSSM_ALGMODE_NONE + 9;
  1150. CSSM_ALGMODE_OFB = CSSM_ALGMODE_NONE + 10;
  1151. CSSM_ALGMODE_OFB_IV8 = CSSM_ALGMODE_NONE + 11;
  1152. CSSM_ALGMODE_OFBPadIV8 = CSSM_ALGMODE_NONE + 12;
  1153. CSSM_ALGMODE_COUNTER = CSSM_ALGMODE_NONE + 13;
  1154. CSSM_ALGMODE_BC = CSSM_ALGMODE_NONE + 14;
  1155. CSSM_ALGMODE_PCBC = CSSM_ALGMODE_NONE + 15;
  1156. CSSM_ALGMODE_CBCC = CSSM_ALGMODE_NONE + 16;
  1157. CSSM_ALGMODE_OFBNLF = CSSM_ALGMODE_NONE + 17;
  1158. CSSM_ALGMODE_PBC = CSSM_ALGMODE_NONE + 18;
  1159. CSSM_ALGMODE_PFB = CSSM_ALGMODE_NONE + 19;
  1160. CSSM_ALGMODE_CBCPD = CSSM_ALGMODE_NONE + 20;
  1161. CSSM_ALGMODE_PUBLIC_KEY = CSSM_ALGMODE_NONE + 21;
  1162. CSSM_ALGMODE_PRIVATE_KEY = CSSM_ALGMODE_NONE + 22;
  1163. CSSM_ALGMODE_SHUFFLE = CSSM_ALGMODE_NONE + 23;
  1164. CSSM_ALGMODE_ECB64 = CSSM_ALGMODE_NONE + 24;
  1165. CSSM_ALGMODE_CBC64 = CSSM_ALGMODE_NONE + 25;
  1166. CSSM_ALGMODE_OFB64 = CSSM_ALGMODE_NONE + 26;
  1167. CSSM_ALGMODE_CFB32 = CSSM_ALGMODE_NONE + 28;
  1168. CSSM_ALGMODE_CFB16 = CSSM_ALGMODE_NONE + 29;
  1169. CSSM_ALGMODE_CFB8 = CSSM_ALGMODE_NONE + 30;
  1170. CSSM_ALGMODE_WRAP = CSSM_ALGMODE_NONE + 31;
  1171. CSSM_ALGMODE_PRIVATE_WRAP = CSSM_ALGMODE_NONE + 32;
  1172. CSSM_ALGMODE_RELAYX = CSSM_ALGMODE_NONE + 33;
  1173. CSSM_ALGMODE_ECB128 = CSSM_ALGMODE_NONE + 34;
  1174. CSSM_ALGMODE_ECB96 = CSSM_ALGMODE_NONE + 35;
  1175. CSSM_ALGMODE_CBC128 = CSSM_ALGMODE_NONE + 36;
  1176. CSSM_ALGMODE_OAEP_HASH = CSSM_ALGMODE_NONE + 37;
  1177. CSSM_ALGMODE_PKCS1_EME_V15 = CSSM_ALGMODE_NONE + 38;
  1178. CSSM_ALGMODE_PKCS1_EME_OAEP = CSSM_ALGMODE_NONE + 39;
  1179. CSSM_ALGMODE_PKCS1_EMSA_V15 = CSSM_ALGMODE_NONE + 40;
  1180. CSSM_ALGMODE_ISO_9796 = CSSM_ALGMODE_NONE + 41;
  1181. CSSM_ALGMODE_X9_31 = CSSM_ALGMODE_NONE + 42;
  1182. CSSM_ALGMODE_LAST = CSSM_ALGMODE_NONE + $7FFFFFFF;
  1183. { All algorithms modes that are vendor specific, and
  1184. not part of the CSSM specification should be defined
  1185. relative to CSSM_ALGMODE_VENDOR_DEFINED. }
  1186. CSSM_ALGMODE_VENDOR_DEFINED = CSSM_ALGMODE_NONE + $80000000;
  1187. type
  1188. CSSM_KEYHEADER_PTR = ^cssm_keyheader;
  1189. CSSM_KEYHEADERPtr = ^cssm_keyheader;
  1190. cssm_keyheader = record
  1191. HeaderVersion: CSSM_HEADERVERSION; { Key header version }
  1192. CspId: CSSM_GUID; { GUID of CSP generating the key }
  1193. BlobType: CSSM_KEYBLOB_TYPE; { See BlobType enum }
  1194. Format: CSSM_KEYBLOB_FORMAT; { Raw or Reference format }
  1195. AlgorithmId: CSSM_ALGORITHMS; { Algorithm ID of key }
  1196. KeyClass: CSSM_KEYCLASS; { Public/Private/Secret, etc. }
  1197. LogicalKeySizeInBits: UInt32; { Logical key size in bits }
  1198. KeyAttr: CSSM_KEYATTR_FLAGS; { Attribute flags }
  1199. KeyUsage: CSSM_KEYUSE; { Key use flags }
  1200. StartDate: CSSM_DATE; { Effective date of key }
  1201. EndDate: CSSM_DATE; { Expiration date of key }
  1202. WrapAlgorithmId: CSSM_ALGORITHMS; { == CSSM_ALGID_NONE if clear key }
  1203. WrapMode: CSSM_ENCRYPT_MODE; { if alg supports multiple wrapping modes }
  1204. Reserved: UInt32;
  1205. end;
  1206. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  1207. type
  1208. CSSM_KEY_PTR = ^cssm_key;
  1209. CSSM_KEYPtr = ^cssm_key;
  1210. cssm_key = record
  1211. KeyHeader: CSSM_KEYHEADER; { Fixed length key header }
  1212. KeyData: CSSM_DATA; { Variable length key data }
  1213. end;
  1214. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  1215. type
  1216. CSSM_WRAP_KEY = CSSM_KEY;
  1217. CSSM_WRAP_KEY_PTR = ^CSSM_KEY;
  1218. CSSM_WRAP_KEYPtr = ^CSSM_KEY;
  1219. type
  1220. CSSM_CSPTYPE = UInt32;
  1221. const
  1222. CSSM_CSP_SOFTWARE = 1;
  1223. CSSM_CSP_HARDWARE = CSSM_CSP_SOFTWARE + 1;
  1224. CSSM_CSP_HYBRID = CSSM_CSP_SOFTWARE + 2;
  1225. { From DL. }
  1226. type
  1227. CSSM_DL_DB_HANDLE_PTR = ^cssm_dl_db_handle;
  1228. CSSM_DL_DB_HANDLEPtr = ^cssm_dl_db_handle;
  1229. cssm_dl_db_handle = record
  1230. DLHandle: CSSM_DL_HANDLE;
  1231. DBHandle: CSSM_DB_HANDLE;
  1232. end;
  1233. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  1234. type
  1235. CSSM_CONTEXT_TYPE = UInt32;
  1236. const
  1237. CSSM_ALGCLASS_NONE = 0;
  1238. CSSM_ALGCLASS_CUSTOM = CSSM_ALGCLASS_NONE + 1;
  1239. CSSM_ALGCLASS_SIGNATURE = CSSM_ALGCLASS_NONE + 2;
  1240. CSSM_ALGCLASS_SYMMETRIC = CSSM_ALGCLASS_NONE + 3;
  1241. CSSM_ALGCLASS_DIGEST = CSSM_ALGCLASS_NONE + 4;
  1242. CSSM_ALGCLASS_RANDOMGEN = CSSM_ALGCLASS_NONE + 5;
  1243. CSSM_ALGCLASS_UNIQUEGEN = CSSM_ALGCLASS_NONE + 6;
  1244. CSSM_ALGCLASS_MAC = CSSM_ALGCLASS_NONE + 7;
  1245. CSSM_ALGCLASS_ASYMMETRIC = CSSM_ALGCLASS_NONE + 8;
  1246. CSSM_ALGCLASS_KEYGEN = CSSM_ALGCLASS_NONE + 9;
  1247. CSSM_ALGCLASS_DERIVEKEY = CSSM_ALGCLASS_NONE + 10;
  1248. { Attribute data type tags }
  1249. const
  1250. CSSM_ATTRIBUTE_DATA_NONE = $00000000;
  1251. CSSM_ATTRIBUTE_DATA_UINT32 = $10000000;
  1252. CSSM_ATTRIBUTE_DATA_CSSM_DATA = $20000000;
  1253. CSSM_ATTRIBUTE_DATA_CRYPTO_DATA = $30000000;
  1254. CSSM_ATTRIBUTE_DATA_KEY = $40000000;
  1255. CSSM_ATTRIBUTE_DATA_STRING = $50000000;
  1256. CSSM_ATTRIBUTE_DATA_DATE = $60000000;
  1257. CSSM_ATTRIBUTE_DATA_RANGE = $70000000;
  1258. CSSM_ATTRIBUTE_DATA_ACCESS_CREDENTIALS = $80000000;
  1259. CSSM_ATTRIBUTE_DATA_VERSION = $01000000;
  1260. CSSM_ATTRIBUTE_DATA_DL_DB_HANDLE = $02000000;
  1261. CSSM_ATTRIBUTE_DATA_KR_PROFILE = $03000000;
  1262. CSSM_ATTRIBUTE_TYPE_MASK = $FF000000;
  1263. type
  1264. CSSM_ATTRIBUTE_TYPE = UInt32;
  1265. const
  1266. CSSM_ATTRIBUTE_NONE = 0;
  1267. CSSM_ATTRIBUTE_CUSTOM = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 1;
  1268. CSSM_ATTRIBUTE_DESCRIPTION = CSSM_ATTRIBUTE_DATA_STRING or 2;
  1269. CSSM_ATTRIBUTE_KEY = CSSM_ATTRIBUTE_DATA_KEY or 3;
  1270. CSSM_ATTRIBUTE_INIT_VECTOR = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 4;
  1271. CSSM_ATTRIBUTE_SALT = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 5;
  1272. CSSM_ATTRIBUTE_PADDING = CSSM_ATTRIBUTE_DATA_UINT32 or 6;
  1273. CSSM_ATTRIBUTE_RANDOM = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 7;
  1274. CSSM_ATTRIBUTE_SEED = CSSM_ATTRIBUTE_DATA_CRYPTO_DATA or 8;
  1275. CSSM_ATTRIBUTE_PASSPHRASE = CSSM_ATTRIBUTE_DATA_CRYPTO_DATA or 9;
  1276. CSSM_ATTRIBUTE_KEY_LENGTH = CSSM_ATTRIBUTE_DATA_UINT32 or 10;
  1277. CSSM_ATTRIBUTE_KEY_LENGTH_RANGE = CSSM_ATTRIBUTE_DATA_RANGE or 11;
  1278. CSSM_ATTRIBUTE_BLOCK_SIZE = CSSM_ATTRIBUTE_DATA_UINT32 or 12;
  1279. CSSM_ATTRIBUTE_OUTPUT_SIZE = CSSM_ATTRIBUTE_DATA_UINT32 or 13;
  1280. CSSM_ATTRIBUTE_ROUNDS = CSSM_ATTRIBUTE_DATA_UINT32 or 14;
  1281. CSSM_ATTRIBUTE_IV_SIZE = CSSM_ATTRIBUTE_DATA_UINT32 or 15;
  1282. CSSM_ATTRIBUTE_ALG_PARAMS = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 16;
  1283. CSSM_ATTRIBUTE_LABEL = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 17;
  1284. CSSM_ATTRIBUTE_KEY_TYPE = CSSM_ATTRIBUTE_DATA_UINT32 or 18;
  1285. CSSM_ATTRIBUTE_MODE = CSSM_ATTRIBUTE_DATA_UINT32 or 19;
  1286. CSSM_ATTRIBUTE_EFFECTIVE_BITS = CSSM_ATTRIBUTE_DATA_UINT32 or 20;
  1287. CSSM_ATTRIBUTE_START_DATE = CSSM_ATTRIBUTE_DATA_DATE or 21;
  1288. CSSM_ATTRIBUTE_END_DATE = CSSM_ATTRIBUTE_DATA_DATE or 22;
  1289. CSSM_ATTRIBUTE_KEYUSAGE = CSSM_ATTRIBUTE_DATA_UINT32 or 23;
  1290. CSSM_ATTRIBUTE_KEYATTR = CSSM_ATTRIBUTE_DATA_UINT32 or 24;
  1291. CSSM_ATTRIBUTE_VERSION = CSSM_ATTRIBUTE_DATA_VERSION or 25;
  1292. CSSM_ATTRIBUTE_PRIME = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 26;
  1293. CSSM_ATTRIBUTE_BASE = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 27;
  1294. CSSM_ATTRIBUTE_SUBPRIME = CSSM_ATTRIBUTE_DATA_CSSM_DATA or 28;
  1295. CSSM_ATTRIBUTE_ALG_ID = CSSM_ATTRIBUTE_DATA_UINT32 or 29;
  1296. CSSM_ATTRIBUTE_ITERATION_COUNT = CSSM_ATTRIBUTE_DATA_UINT32 or 30;
  1297. CSSM_ATTRIBUTE_ROUNDS_RANGE = CSSM_ATTRIBUTE_DATA_RANGE or 31;
  1298. CSSM_ATTRIBUTE_KRPROFILE_LOCAL = CSSM_ATTRIBUTE_DATA_KR_PROFILE or 32;
  1299. CSSM_ATTRIBUTE_KRPROFILE_REMOTE = CSSM_ATTRIBUTE_DATA_KR_PROFILE or 33;
  1300. CSSM_ATTRIBUTE_CSP_HANDLE = CSSM_ATTRIBUTE_DATA_UINT32 or 34;
  1301. CSSM_ATTRIBUTE_DL_DB_HANDLE = CSSM_ATTRIBUTE_DATA_DL_DB_HANDLE or 35;
  1302. CSSM_ATTRIBUTE_ACCESS_CREDENTIALS = CSSM_ATTRIBUTE_DATA_ACCESS_CREDENTIALS or 36;
  1303. CSSM_ATTRIBUTE_PUBLIC_KEY_FORMAT = CSSM_ATTRIBUTE_DATA_UINT32 or 37;
  1304. CSSM_ATTRIBUTE_PRIVATE_KEY_FORMAT = CSSM_ATTRIBUTE_DATA_UINT32 or 38;
  1305. CSSM_ATTRIBUTE_SYMMETRIC_KEY_FORMAT = CSSM_ATTRIBUTE_DATA_UINT32 or 39;
  1306. CSSM_ATTRIBUTE_WRAPPED_KEY_FORMAT = CSSM_ATTRIBUTE_DATA_UINT32 or 40;
  1307. type
  1308. CSSM_PADDING = UInt32;
  1309. const
  1310. CSSM_PADDING_NONE = 0;
  1311. CSSM_PADDING_CUSTOM = CSSM_PADDING_NONE + 1;
  1312. CSSM_PADDING_ZERO = CSSM_PADDING_NONE + 2;
  1313. CSSM_PADDING_ONE = CSSM_PADDING_NONE + 3;
  1314. CSSM_PADDING_ALTERNATE = CSSM_PADDING_NONE + 4;
  1315. CSSM_PADDING_FF = CSSM_PADDING_NONE + 5;
  1316. CSSM_PADDING_PKCS5 = CSSM_PADDING_NONE + 6;
  1317. CSSM_PADDING_PKCS7 = CSSM_PADDING_NONE + 7;
  1318. CSSM_PADDING_CIPHERSTEALING = CSSM_PADDING_NONE + 8;
  1319. CSSM_PADDING_RANDOM = CSSM_PADDING_NONE + 9;
  1320. CSSM_PADDING_PKCS1 = CSSM_PADDING_NONE + 10;
  1321. { All padding types that are vendor specific, and not
  1322. part of the CSSM specification should be defined
  1323. relative to CSSM_PADDING_VENDOR_DEFINED. }
  1324. CSSM_PADDING_VENDOR_DEFINED = CSSM_PADDING_NONE + $80000000;
  1325. type
  1326. CSSM_KEY_TYPE = CSSM_ALGORITHMS;
  1327. type
  1328. __embedded_cssm_context_attribute = record
  1329. case Integer of
  1330. 0: (String_: CStringPtr);
  1331. 1: (Uint32: UInt32_fix);
  1332. 2: (AccessCredentials: CSSM_ACCESS_CREDENTIALS_PTR);
  1333. 3: (Key: CSSM_KEY_PTR);
  1334. 4: (Data: CSSM_DATA_PTR);
  1335. 5: (Padding: CSSM_PADDING);
  1336. 6: (Date: CSSM_DATE_PTR);
  1337. 7: (Range: CSSM_RANGE_PTR);
  1338. 8: (CryptoData: CSSM_CRYPTO_DATA_PTR);
  1339. 9: (Version: CSSM_VERSION_PTR);
  1340. 10: (DLDBHandle: CSSM_DL_DB_HANDLE_PTR);
  1341. 11: (KRProfile: UnivPtr {cssm_kr_profile_ptr});
  1342. end;
  1343. CSSM_CONTEXT_ATTRIBUTE_PTR = ^cssm_context_attribute;
  1344. CSSM_CONTEXT_ATTRIBUTEPtr = ^cssm_context_attribute;
  1345. cssm_context_attribute = record
  1346. AttributeType: CSSM_ATTRIBUTE_TYPE;
  1347. AttributeLength: UInt32;
  1348. Attribute: __embedded_cssm_context_attribute;
  1349. end;
  1350. type
  1351. CSSM_CONTEXT_PTR = ^cssm_context;
  1352. CSSM_CONTEXTPtr = ^cssm_context;
  1353. cssm_context = record
  1354. ContextType: CSSM_CONTEXT_TYPE;
  1355. AlgorithmType: CSSM_ALGORITHMS;
  1356. NumberOfAttributes: UInt32;
  1357. ContextAttributes: CSSM_CONTEXT_ATTRIBUTE_PTR;
  1358. CSPHandle: CSSM_CSP_HANDLE;
  1359. Privileged: CSSM_BOOL;
  1360. EncryptionProhibited: uint32 {CSSM_KR_POLICY_FLAGS} ;
  1361. WorkFactor: UInt32;
  1362. Reserved: UInt32; { reserved for future use }
  1363. end;
  1364. (* DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER *)
  1365. type
  1366. CSSM_SC_FLAGS = UInt32;
  1367. const
  1368. CSSM_CSP_TOK_RNG = $00000001;
  1369. CSSM_CSP_TOK_CLOCK_EXISTS = $00000040;
  1370. type
  1371. CSSM_CSP_READER_FLAGS = UInt32;
  1372. const
  1373. CSSM_CSP_RDR_TOKENPRESENT = $00000001;
  1374. { Token is present in reader/slot }
  1375. CSSM_CSP_RDR_EXISTS = $00000002;
  1376. { Device is a reader with a
  1377. removable token }
  1378. CSSM_CSP_RDR_HW = $00000004;
  1379. { Slot is a hardware slot }
  1380. type
  1381. CSSM_CSP_FLAGS = UInt32;
  1382. const
  1383. CSSM_CSP_TOK_WRITE_PROTECTED = $00000002;
  1384. CSSM_CSP_TOK_LOGIN_REQUIRED = $00000004;
  1385. CSSM_CSP_TOK_USER_PIN_INITIALIZED = $00000008;
  1386. CSSM_CSP_TOK_PROT_AUTHENTICATION = $00000100;
  1387. CSSM_CSP_TOK_USER_PIN_EXPIRED = $00100000;
  1388. CSSM_CSP_TOK_SESSION_KEY_PASSWORD = $00200000;
  1389. CSSM_CSP_TOK_PRIVATE_KEY_PASSWORD = $00400000;
  1390. CSSM_CSP_STORES_PRIVATE_KEYS = $01000000;
  1391. CSSM_CSP_STORES_PUBLIC_KEYS = $02000000;
  1392. CSSM_CSP_STORES_SESSION_KEYS = $04000000;
  1393. CSSM_CSP_STORES_CERTIFICATES = $08000000;
  1394. CSSM