Mac OS 9
FileSigning.h
Go to the documentation of this file.
1 
19 #ifndef __FILESIGNING__
20 #define __FILESIGNING__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __FILES__
27 #include <Files.h>
28 #endif
29 
30 #ifndef __KEYCHAIN__
31 #include <Keychain.h>
32 #endif
33 
34 #ifndef __CRYPTOMESSAGESYNTAX__
35 #include <CryptoMessageSyntax.h>
36 #endif
37 
38 #if PRAGMA_ONCE
39 #pragma once
40 #endif
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 #if PRAGMA_IMPORT
47 #pragma import on
48 #endif
49 
50 #if PRAGMA_STRUCT_ALIGN
51 #pragma options align = mac68k
52 #elif PRAGMA_STRUCT_PACKPUSH
53 #pragma pack(push, 2)
54 #elif PRAGMA_STRUCT_PACK
55 #pragma pack(2)
56 #endif
57 
58 /* Data structures and types */
59 typedef SInt32 SecOptions;
60 enum {
61  kSecOptionProgress = 1 << 0,
62  kSecOptionShowVerifyUI = 1 << 1,
63  kSecOptionNeverShowUI = 1 << 2,
64  kCertUsageReserved =
65  0x7FFFFF00 /* Last 3 bytes reserved for SecOptions flags */
66 };
67 
68 typedef UInt32 SecSignatureType;
69 enum {
70  kSecSignatureTypeRawPKCS7 = 0,
71  kSecSignatureTypeCMS = 1,
72  kSecSignatureTypePGP = 2 /* reserved but not implemented */
73 };
74 
75 typedef UInt32 SecTrustPolicy;
76 enum { kSecTrustPolicyCodeSigning = 0, kSecTrustPolicyPersonalFileSigning = 1 };
77 
79  UInt32 version;
80  UInt32 bytesProcessed;
81  UInt32 totalBytes;
82  UInt32 itemsRemainingToSign;
83  UInt32 totalItemsToSign;
84  UInt32 secondsRemaining;
85  UInt32 secondsElapsed;
86  UInt32 microSecondsPerByte;
87  Str255 fileName;
88 };
90 typedef CALLBACK_API(OSStatus, SecProgressCallbackProcPtr)(
91  SecProgressCallbackInfo *callbackInfo, void *userContext);
92 typedef STACK_UPP_TYPE(SecProgressCallbackProcPtr) SecProgressCallbackUPP;
93 #if CALL_NOT_IN_CARBON
102 SecProgressCallbackUPP
103 NewSecProgressCallbackUPP(SecProgressCallbackProcPtr userRoutine);
104 #if !OPAQUE_UPP_TYPES
105 enum {
106  uppSecProgressCallbackProcInfo = 0x000003F0
107 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */
108 #ifdef __cplusplus
109 inline SecProgressCallbackUPP
110 NewSecProgressCallbackUPP(SecProgressCallbackProcPtr userRoutine) {
111  return (SecProgressCallbackUPP)NewRoutineDescriptor(
112  (ProcPtr)(userRoutine), uppSecProgressCallbackProcInfo,
113  GetCurrentArchitecture());
114 }
115 #else
116 #define NewSecProgressCallbackUPP(userRoutine) \
117  (SecProgressCallbackUPP) NewRoutineDescriptor( \
118  (ProcPtr)(userRoutine), uppSecProgressCallbackProcInfo, \
119  GetCurrentArchitecture())
120 #endif
121 #endif
122 
131 void
132 DisposeSecProgressCallbackUPP(SecProgressCallbackUPP userUPP);
133 #if !OPAQUE_UPP_TYPES
134 #ifdef __cplusplus
135 inline void DisposeSecProgressCallbackUPP(SecProgressCallbackUPP userUPP) {
136  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
137 }
138 #else
139 #define DisposeSecProgressCallbackUPP(userUPP) DisposeRoutineDescriptor(userUPP)
140 #endif
141 #endif
142 
151 OSStatus
153  void *userContext, SecProgressCallbackUPP userUPP);
154 #if !OPAQUE_UPP_TYPES
155 #ifdef __cplusplus
156 inline OSStatus
158  void *userContext,
159  SecProgressCallbackUPP userUPP) {
160  return (OSStatus)CALL_TWO_PARAMETER_UPP(
161  userUPP, uppSecProgressCallbackProcInfo, callbackInfo, userContext);
162 }
163 #else
164 #define InvokeSecProgressCallbackUPP(callbackInfo, userContext, userUPP) \
165  (OSStatus) CALL_TWO_PARAMETER_UPP((userUPP), uppSecProgressCallbackProcInfo, \
166  (callbackInfo), (userContext))
167 #endif
168 #endif
169 
170 #endif /* CALL_NOT_IN_CARBON */
171 
172 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
173 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
174 #define NewSecProgressCallbackProc(userRoutine) \
175  NewSecProgressCallbackUPP(userRoutine)
176 #define CallSecProgressCallbackProc(userRoutine, callbackInfo, userContext) \
177  InvokeSecProgressCallbackUPP(callbackInfo, userContext, userRoutine)
178 #endif /* CALL_NOT_IN_CARBON */
179 
180 #if CALL_NOT_IN_CARBON
189 OSStatus
190 SecSetProgressCallback(SecProgressCallbackUPP callbackProc, void *userContext);
191 
200 OSStatus
201 SecRemoveProgressCallback(SecProgressCallbackUPP callbackProc);
202 
211 OSStatus
213  void *userContext);
214 
215 #endif /* CALL_NOT_IN_CARBON */
216 
217 enum { kSecDefaultSignatureResID = 1 };
218 
219 #if CALL_NOT_IN_CARBON
228 OSStatus
229 SecMacSignFile(FSSpec *theFile, KCItemRef signingCertificate, Handle sigH,
230  SecOptions options, SecProgressCallbackUPP progressProc,
231  void *userContext);
232 
241 OSStatus
242 SecMacSignFileSimple(FSSpec *theFile, KCItemRef signingCertificate,
243  SecOptions options);
244 
253 OSStatus
254 SecMacLoadSigPound(FSSpec *theFile, Handle *resHandle);
255 
264 OSStatus
265 SecMacRemoveSignature(FSSpec *theFile, SecSignatureType signatureType,
266  SInt16 signatureToRemove);
267 
276 OSStatus
277 SecMacRemoveAllSignatures(FSSpec *theFile, SecSignatureType signatureType);
278 
287 OSStatus
288 SecMacVerifyFile(FSSpec *theFile, SecOptions options,
289  SecProgressCallbackUPP progressProc, void *userContext,
290  SInt16 signatureToVerify, CFArrayRef policyOIDs,
291  KCVerifyStopOn stopOn, SecSignerRef *signer);
292 
301 OSStatus
302 SecMacVerifyFileSimple(FSSpec *theFile, SecOptions options,
303  SecTrustPolicy trustPolicy, SecSignerRef *signer);
304 
313 Boolean
314 SecMacHasSignature(FSSpec *theFile, SecSignatureType signatureType);
315 
324 OSStatus
325 SecMacFindSignatureToVerify(FSSpec *theFile, SecSignatureType signatureType,
326  SInt16 *signatureToVerify);
327 
336 CFArrayRef
337 SecMacGetDefaultPolicyOIDs(SecTrustPolicy trustPolicy);
338 
347 OSStatus
348 SecMacDisplaySigner(OSStatus inputErr, SecSignerRef signer,
349  Boolean alwaysShowUI, FSSpec *theFile);
350 
351 /* Errors Codes */
352 #endif /* CALL_NOT_IN_CARBON */
353 
354 enum {
355  errSecTooManySigners = -13839,
356  errSecSigningFailed = -13838,
357  errSecCorruptSigPound = -13837,
358  errSecNoSignatureFound = -13836
359 };
360 
361 #if PRAGMA_STRUCT_ALIGN
362 #pragma options align = reset
363 #elif PRAGMA_STRUCT_PACKPUSH
364 #pragma pack(pop)
365 #elif PRAGMA_STRUCT_PACK
366 #pragma pack()
367 #endif
368 
369 #ifdef PRAGMA_IMPORT_OFF
370 #pragma import off
371 #elif PRAGMA_IMPORT
372 #pragma import reset
373 #endif
374 
375 #ifdef __cplusplus
376 }
377 #endif
378 
379 #endif /* __FILESIGNING__ */
CMS Interfaces.
OSStatus SecMacSignFileSimple(FSSpec *theFile, KCItemRef signingCertificate, SecOptions options)
OSStatus SecMacFindSignatureToVerify(FSSpec *theFile, SecSignatureType signatureType, SInt16 *signatureToVerify)
OSStatus SecMacRemoveAllSignatures(FSSpec *theFile, SecSignatureType signatureType)
OSStatus DefaultSecProgressCallbackProc(SecProgressCallbackInfo *info, void *userContext)
OSStatus SecMacLoadSigPound(FSSpec *theFile, Handle *resHandle)
OSStatus SecMacVerifyFile(FSSpec *theFile, SecOptions options, SecProgressCallbackUPP progressProc, void *userContext, SInt16 signatureToVerify, CFArrayRef policyOIDs, KCVerifyStopOn stopOn, SecSignerRef *signer)
OSStatus SecSetProgressCallback(SecProgressCallbackUPP callbackProc, void *userContext)
CFArrayRef SecMacGetDefaultPolicyOIDs(SecTrustPolicy trustPolicy)
SecProgressCallbackUPP NewSecProgressCallbackUPP(SecProgressCallbackProcPtr userRoutine)
OSStatus InvokeSecProgressCallbackUPP(SecProgressCallbackInfo *callbackInfo, void *userContext, SecProgressCallbackUPP userUPP)
Boolean SecMacHasSignature(FSSpec *theFile, SecSignatureType signatureType)
void DisposeSecProgressCallbackUPP(SecProgressCallbackUPP userUPP)
OSStatus SecRemoveProgressCallback(SecProgressCallbackUPP callbackProc)
OSStatus SecMacSignFile(FSSpec *theFile, KCItemRef signingCertificate, Handle sigH, SecOptions options, SecProgressCallbackUPP progressProc, void *userContext)
OSStatus SecMacDisplaySigner(OSStatus inputErr, SecSignerRef signer, Boolean alwaysShowUI, FSSpec *theFile)
OSStatus SecMacVerifyFileSimple(FSSpec *theFile, SecOptions options, SecTrustPolicy trustPolicy, SecSignerRef *signer)
OSStatus SecMacRemoveSignature(FSSpec *theFile, SecSignatureType signatureType, SInt16 signatureToRemove)
File Manager (MFS, HFS, and HFS+) Interfaces.
Keychain Interfaces.
Basic Macintosh data types.
unsigned char Boolean
Definition: MacTypes.h:318
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
#define STACK_UPP_TYPE(name)
Definition: MixedMode.h:734
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
Definition: FileSigning.h:78