1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use UnsafeCell;
use ;
use NonNull;
use *;
use *;
use crate::*;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunimplemented?language=objc)
pub const errSecCSUnimplemented: OSStatus = -67072;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidobjectref?language=objc)
pub const errSecCSInvalidObjectRef: OSStatus = -67071;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidflags?language=objc)
pub const errSecCSInvalidFlags: OSStatus = -67070;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsobjectrequired?language=objc)
pub const errSecCSObjectRequired: OSStatus = -67069;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsstaticcodenotfound?language=objc)
pub const errSecCSStaticCodeNotFound: OSStatus = -67068;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsupportedguestattributes?language=objc)
pub const errSecCSUnsupportedGuestAttributes: OSStatus = -67067;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidattributevalues?language=objc)
pub const errSecCSInvalidAttributeValues: OSStatus = -67066;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnosuchcode?language=objc)
pub const errSecCSNoSuchCode: OSStatus = -67065;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsmultipleguests?language=objc)
pub const errSecCSMultipleGuests: OSStatus = -67064;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsguestinvalid?language=objc)
pub const errSecCSGuestInvalid: OSStatus = -67063;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsigned?language=objc)
pub const errSecCSUnsigned: OSStatus = -67062;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssignaturefailed?language=objc)
pub const errSecCSSignatureFailed: OSStatus = -67061;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssignaturenotverifiable?language=objc)
pub const errSecCSSignatureNotVerifiable: OSStatus = -67060;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssignatureunsupported?language=objc)
pub const errSecCSSignatureUnsupported: OSStatus = -67059;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbaddictionaryformat?language=objc)
pub const errSecCSBadDictionaryFormat: OSStatus = -67058;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcesnotsealed?language=objc)
pub const errSecCSResourcesNotSealed: OSStatus = -67057;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcesnotfound?language=objc)
pub const errSecCSResourcesNotFound: OSStatus = -67056;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcesinvalid?language=objc)
pub const errSecCSResourcesInvalid: OSStatus = -67055;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadresource?language=objc)
pub const errSecCSBadResource: OSStatus = -67054;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcerulesinvalid?language=objc)
pub const errSecCSResourceRulesInvalid: OSStatus = -67053;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsreqinvalid?language=objc)
pub const errSecCSReqInvalid: OSStatus = -67052;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsrequnsupported?language=objc)
pub const errSecCSReqUnsupported: OSStatus = -67051;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsreqfailed?language=objc)
pub const errSecCSReqFailed: OSStatus = -67050;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadobjectformat?language=objc)
pub const errSecCSBadObjectFormat: OSStatus = -67049;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinternalerror?language=objc)
pub const errSecCSInternalError: OSStatus = -67048;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostreject?language=objc)
pub const errSecCSHostReject: OSStatus = -67047;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnotahost?language=objc)
pub const errSecCSNotAHost: OSStatus = -67046;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssignatureinvalid?language=objc)
pub const errSecCSSignatureInvalid: OSStatus = -67045;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolrelativepath?language=objc)
pub const errSecCSHostProtocolRelativePath: OSStatus = -67044;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolcontradiction?language=objc)
pub const errSecCSHostProtocolContradiction: OSStatus = -67043;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocoldedicationerror?language=objc)
pub const errSecCSHostProtocolDedicationError: OSStatus = -67042;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolnotproxy?language=objc)
pub const errSecCSHostProtocolNotProxy: OSStatus = -67041;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolstateerror?language=objc)
pub const errSecCSHostProtocolStateError: OSStatus = -67040;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolunrelated?language=objc)
pub const errSecCSHostProtocolUnrelated: OSStatus = -67039;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnotsupported?language=objc)
pub const errSecCSNotSupported: OSStatus = -67037;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccscmstoolarge?language=objc)
pub const errSecCSCMSTooLarge: OSStatus = -67036;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolinvalidhash?language=objc)
pub const errSecCSHostProtocolInvalidHash: OSStatus = -67035;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsstaticcodechanged?language=objc)
pub const errSecCSStaticCodeChanged: OSStatus = -67034;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsdbdenied?language=objc)
pub const errSecCSDBDenied: OSStatus = -67033;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsdbaccess?language=objc)
pub const errSecCSDBAccess: OSStatus = -67032;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssigdbdenied?language=objc)
pub const errSecCSSigDBDenied: OSStatus = -67033;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssigdbaccess?language=objc)
pub const errSecCSSigDBAccess: OSStatus = -67032;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshostprotocolinvalidattribute?language=objc)
pub const errSecCSHostProtocolInvalidAttribute: OSStatus = -67031;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinfoplistfailed?language=objc)
pub const errSecCSInfoPlistFailed: OSStatus = -67030;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnomainexecutable?language=objc)
pub const errSecCSNoMainExecutable: OSStatus = -67029;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadbundleformat?language=objc)
pub const errSecCSBadBundleFormat: OSStatus = -67028;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnomatches?language=objc)
pub const errSecCSNoMatches: OSStatus = -67027;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsfilehardquarantined?language=objc)
pub const errSecCSFileHardQuarantined: OSStatus = -67026;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsoutdated?language=objc)
pub const errSecCSOutdated: OSStatus = -67025;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsdbcorrupt?language=objc)
pub const errSecCSDbCorrupt: OSStatus = -67024;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcedirectoryfailed?language=objc)
pub const errSecCSResourceDirectoryFailed: OSStatus = -67023;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsignednestedcode?language=objc)
pub const errSecCSUnsignedNestedCode: OSStatus = -67022;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadnestedcode?language=objc)
pub const errSecCSBadNestedCode: OSStatus = -67021;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadcallbackvalue?language=objc)
pub const errSecCSBadCallbackValue: OSStatus = -67020;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccshelperfailed?language=objc)
pub const errSecCSHelperFailed: OSStatus = -67019;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsvetoed?language=objc)
pub const errSecCSVetoed: OSStatus = -67018;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadlvarch?language=objc)
pub const errSecCSBadLVArch: OSStatus = -67017;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsresourcenotsupported?language=objc)
pub const errSecCSResourceNotSupported: OSStatus = -67016;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsregularfile?language=objc)
pub const errSecCSRegularFile: OSStatus = -67015;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsealedapproot?language=objc)
pub const errSecCSUnsealedAppRoot: OSStatus = -67014;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsweakresourcerules?language=objc)
pub const errSecCSWeakResourceRules: OSStatus = -67013;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsdsstoresymlink?language=objc)
pub const errSecCSDSStoreSymlink: OSStatus = -67012;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsambiguousbundleformat?language=objc)
pub const errSecCSAmbiguousBundleFormat: OSStatus = -67011;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadmainexecutable?language=objc)
pub const errSecCSBadMainExecutable: OSStatus = -67010;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadframeworkversion?language=objc)
pub const errSecCSBadFrameworkVersion: OSStatus = -67009;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsealedframeworkroot?language=objc)
pub const errSecCSUnsealedFrameworkRoot: OSStatus = -67008;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsweakresourceenvelope?language=objc)
pub const errSecCSWeakResourceEnvelope: OSStatus = -67007;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccscancelled?language=objc)
pub const errSecCSCancelled: OSStatus = -67006;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidplatform?language=objc)
pub const errSecCSInvalidPlatform: OSStatus = -67005;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccstoobig?language=objc)
pub const errSecCSTooBig: OSStatus = -67004;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidsymlink?language=objc)
pub const errSecCSInvalidSymlink: OSStatus = -67003;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsnotapplike?language=objc)
pub const errSecCSNotAppLike: OSStatus = -67002;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbaddiskimageformat?language=objc)
pub const errSecCSBadDiskImageFormat: OSStatus = -67001;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsunsupporteddigestalgorithm?language=objc)
pub const errSecCSUnsupportedDigestAlgorithm: OSStatus = -67000;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidassociatedfiledata?language=objc)
pub const errSecCSInvalidAssociatedFileData: OSStatus = -66999;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidteamidentifier?language=objc)
pub const errSecCSInvalidTeamIdentifier: OSStatus = -66998;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsbadteamidentifier?language=objc)
pub const errSecCSBadTeamIdentifier: OSStatus = -66997;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccssignatureuntrusted?language=objc)
pub const errSecCSSignatureUntrusted: OSStatus = -66996;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errsecmultipleexecsegments?language=objc)
pub const errSecMultipleExecSegments: OSStatus = -66995;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidentitlements?language=objc)
pub const errSecCSInvalidEntitlements: OSStatus = -66994;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsinvalidruntimeversion?language=objc)
pub const errSecCSInvalidRuntimeVersion: OSStatus = -66993;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsrevokednotarization?language=objc)
pub const errSecCSRevokedNotarization: OSStatus = -66992;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccscmsconstructionfailed?language=objc)
pub const errSecCSCMSConstructionFailed: OSStatus = -66991;
/// [Apple's documentation](https://developer.apple.com/documentation/security/errseccsremotesignerfailed?language=objc)
pub const errSecCSRemoteSignerFailed: OSStatus = -66990;
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
extern "C"
/// This is the type of a reference to running code.
///
/// In many (but not all) calls, this can be passed to a SecStaticCodeRef
/// argument, which performs an implicit SecCodeCopyStaticCode call and
/// operates on the result.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/seccode?language=objc)
cf_type!;
cf_objc2_type!;
/// This is the type of a reference to static code on disk.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/secstaticcode?language=objc)
cf_type!;
cf_objc2_type!;
/// This is the type of a reference to a code requirement.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/secrequirement?language=objc)
cf_type!;
cf_objc2_type!;
/// An abstract handle to identify a particular Guest in the context of its Host.
///
/// Guest handles are assigned by the host at will, with kSecNoGuest (zero) being
/// reserved as the null value. They can be reused for new children if desired.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/secguestref?language=objc)
pub type SecGuestRef = u32;
/// [Apple's documentation](https://developer.apple.com/documentation/security/ksecnoguest?language=objc)
pub const kSecNoGuest: SecGuestRef = 0;
/// This is the type of flags arguments to Code Signing API calls.
/// It provides a bit mask of request and option flags. All of the bits in these
/// masks are reserved to Apple; if you set any bits not defined in these headers,
/// the behavior is generally undefined.
///
/// This list describes the flags that are shared among several Code Signing API calls.
/// Flags that only apply to one call are defined and documented with that call.
/// Global flags are assigned from high order down (31 -> 0); call-specific flags
/// are assigned from the bottom up (0 -> 31).
///
///
/// When passed to a flags argument throughout, indicates that default behavior
/// is desired. Do not mix with other flags values.
///
/// When passed to a call that performs code validation, requests that code signatures
/// made by expired certificates be rejected. By default, expiration of participating
/// certificates is not automatic grounds for rejection.
///
/// When passed to a call that performs code validation, configures the validation to
/// not perform any work that requires the network. Using this flag disables security features
/// like online certificate revocation and notarization checks by removing potentially
/// slow network requests that can delay evaluations. This flag has always been usable for
/// SecStaticCode objects and is usable with SecCode objects starting with macOS 11.3.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/seccsflags?language=objc)
// NS_OPTIONS
;
bitflags!
unsafe
unsafe
/// This is the type of option flags that can be embedded in a code signature
/// during signing, and that govern the use of the signature thereafter.
/// Some of these flags can be set through the codesign(1) command's --options
/// argument; some are set implicitly based on signing circumstances; and all
/// can be set with the kSecCodeSignerFlags item of a signing information dictionary.
///
///
/// Indicates that the code may act as a host that controls and supervises guest
/// code. If this flag is not set in a code signature, the code is never considered
/// eligible to be a host, and any attempt to act like one will be ignored or rejected.
///
/// The code has been sealed without a signing identity. No identity may be retrieved
/// from it, and any code requirement placing restrictions on the signing identity
/// will fail. This flag is set by the code signing API and cannot be set explicitly.
///
/// Implicitly set the "hard" status bit for the code when it starts running.
/// This bit indicates that the code prefers to be denied access to a resource
/// if gaining such access would cause its invalidation. Since the hard bit is
/// sticky, setting this option bit guarantees that the code will always have
/// it set.
///
/// Implicitly set the "kill" status bit for the code when it starts running.
/// This bit indicates that the code wishes to be terminated with prejudice if
/// it is ever invalidated. Since the kill bit is sticky, setting this option bit
/// guarantees that the code will always be dynamically valid, since it will die
/// immediately if it becomes invalid.
///
/// Forces the kSecCSConsiderExpiration flag on all validations of the code.
///
/// Instructs the kernel to apply runtime hardening policies as required by the
/// hardened runtime version
///
/// The code was automatically signed by the linker. This signature should be
/// ignored in any new signing operation.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/seccodesignatureflags?language=objc)
// NS_OPTIONS
;
bitflags!
unsafe
unsafe
/// The code signing system attaches a set of status flags to each running code.
/// These flags are maintained by the code's host, and can be read by anyone.
/// A code may change its own flags, a host may change its guests' flags,
/// and root may change anyone's flags. However, these flags are sticky in that
/// each can change in only one direction (and never back, for the lifetime of the code).
/// Not even root can violate this restriction.
///
/// There are other flags in SecCodeStatus that are not publicly documented.
/// Do not rely on them, and do not ever attempt to explicitly set them.
///
///
/// Indicates that the code is dynamically valid, i.e. it started correctly
/// and has not been invalidated since then. The valid bit can only be cleared.
///
/// Warning: This bit is not your one-stop shortcut to determining the validity of code.
/// It represents the dynamic component of the full validity function; if this
/// bit is unset, the code is definitely invalid, but the converse is not always true.
/// In fact, code hosts may represent the outcome of some delayed static validation work in this bit,
/// and thus it strictly represents a blend of (all of) dynamic and (some of) static validity,
/// depending on the implementation of the particular host managing the code. You can (only)
/// rely that (1) dynamic invalidation will clear this bit; and (2) the combination
/// of static validation and dynamic validity (as performed by the SecCodeCheckValidity* APIs)
/// will give a correct answer.
///
///
/// Indicates that the code prefers to be denied access to resources if gaining access
/// would invalidate it. This bit can only be set.
/// It is undefined whether code that is marked hard and is already invalid will still
/// be denied access to a resource that would invalidate it if it were still valid. That is,
/// the code may or may not get access to such a resource while being invalid, and that choice
/// may appear random.
///
///
/// Indicates that the code wants to be killed (terminated) if it ever loses its validity.
/// This bit can only be set. Code that has the kill flag set will never be dynamically invalid
/// (and live). Note however that a change in static validity does not necessarily trigger instant
/// death.
///
///
/// Indicated that code has been debugged by another process that was allowed to do so. The debugger
/// causes this to be set when it attachs.
///
///
/// Indicates the code is platform code, shipping with the operating system and signed by Apple.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/seccodestatus?language=objc)
// NS_OPTIONS
;
bitflags!
unsafe
unsafe
/// An enumeration indicating different types of internal requirements for code.
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/secrequirementtype?language=objc)
// NS_ENUM
;
unsafe
unsafe
/// Types of cryptographic digests (hashes) used to hold code signatures
/// together.
///
/// Each combination of type, length, and other parameters is a separate
/// hash type; we don't understand "families" here.
///
/// These type codes govern the digest links that connect a CodeDirectory
/// to its subordinate data structures (code pages, resources, etc.)
/// They do not directly control other uses of hashes (such as those used
/// within X.509 certificates and CMS blobs).
///
/// See also [Apple's documentation](https://developer.apple.com/documentation/security/seccsdigestalgorithm?language=objc)
// NS_ENUM
;
unsafe
unsafe