topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-FileSigning.h / h



  /*
       File:       FileSigning.h
   
       Contains:   Apple File Signing Interfaces.
   
       Version:    Technology: 1.0
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1999-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __FILESIGNING__
  define __FILESIGNING__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __FILES__
  include <Files.h>
  endif
  
  ifndef __KEYCHAIN__
  include <Keychain.h>
  endif
  
  ifndef __CRYPTOMESSAGESYNTAX__
  include <CryptoMessageSyntax.h>
  endif
  
  /* Data structures and types */
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  enum {
      kSecOptionProgress          = 1 << 0,
      kSecOptionShowVerifyUI      = 1 << 1,
      kSecOptionNeverShowUI       = 1 << 2,
      kCertUsageReserved          = 0x7FFFFF00                    /* Last 3 bytes reserved for SecOptions flags */
  };
  
  typedef UInt32                          SecOptions;
  enum {
      kSecSignatureTypeRawPKCS7   = 0,
      kSecSignatureTypeCMS        = 1,
      kSecSignatureTypePGP        = 2                             /* reserved but not implemented */
  };
  
  typedef UInt32                          SecSignatureType;
  enum {
      kSecTrustPolicyCodeSigning  = 0,
      kSecTrustPolicyPersonalFileSigning = 1
  };
  
  typedef UInt32                          SecTrustPolicy;
  
  struct SecProgressCallbackInfo {
      UInt32                          version;
      UInt32                          bytesProcessed;
      UInt32                          totalBytes;
      UInt32                          itemsRemainingToSign;
      UInt32                          totalItemsToSign;
      UInt32                          secondsRemaining;
      UInt32                          secondsElapsed;
      UInt32                          microSecondsPerByte;
      Str255                          fileName;
  };
  typedef struct SecProgressCallbackInfo  SecProgressCallbackInfo;
  typedef CALLBACK_API( OSStatus , SecProgressCallbackProcPtr )(SecProgressCallbackInfo *callbackInfo, void *userContext);
  typedef STACK_UPP_TYPE(SecProgressCallbackProcPtr)              SecProgressCallbackUPP;
  if OPAQUE_UPP_TYPES
      EXTERN_API(SecProgressCallbackUPP)
      NewSecProgressCallbackUPP      (SecProgressCallbackProcPtr userRoutine);
  
      EXTERN_API(void)
      DisposeSecProgressCallbackUPP    (SecProgressCallbackUPP userUPP);
  
      EXTERN_API(OSStatus)
      InvokeSecProgressCallbackUPP    (SecProgressCallbackInfo * callbackInfo,
                                      void *                  userContext,
                                      SecProgressCallbackUPP  userUPP);
  
  else
      enum { uppSecProgressCallbackProcInfo = 0x000003F0 };           /* pascal 4_bytes Func(4_bytes, 4_bytes) */
      #define NewSecProgressCallbackUPP(userRoutine)                  (SecProgressCallbackUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppSecProgressCallbackProcInfo, GetCurrentArchitecture())
      #define DisposeSecProgressCallbackUPP(userUPP)                  DisposeRoutineDescriptor(userUPP)
      #define InvokeSecProgressCallbackUPP(callbackInfo, userContext, userUPP)  (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppSecProgressCallbackProcInfo, (callbackInfo), (userContext))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewSecProgressCallbackProc(userRoutine)                 NewSecProgressCallbackUPP(userRoutine)
  define CallSecProgressCallbackProc(userRoutine, callbackInfo, userContext) InvokeSecProgressCallbackUPP(callbackInfo, userContext, userRoutine)
  EXTERN_API( OSStatus )
  SecSetProgressCallback          (SecProgressCallbackUPP  callbackProc,
                                   void *                 userContext);
  
  EXTERN_API( OSStatus )
  SecRemoveProgressCallback       (SecProgressCallbackUPP  callbackProc);
  
  EXTERN_API( OSStatus )
  DefaultSecProgressCallbackProc  (SecProgressCallbackInfo * info,
                                   void *                 userContext);
  
  enum {
      kSecDefaultSignatureResID   = 1
  };
  
  EXTERN_API( OSStatus )
  SecMacSignFile                  (FSSpec *               theFile,
                                   KCItemRef              signingCertificate,
                                   Handle                 sigH,
                                   SecOptions             options,
                                   SecProgressCallbackUPP  progressProc,
                                   void *                 userContext);
  
  EXTERN_API( OSStatus )
  SecMacSignFileSimple            (FSSpec *               theFile,
                                   KCItemRef              signingCertificate,
                                   SecOptions             options);
  
  EXTERN_API( OSStatus )
  SecMacLoadSigPound              (FSSpec *               theFile,
                                   Handle *               resHandle);
  
  EXTERN_API( OSStatus )
  SecMacRemoveSignature           (FSSpec *               theFile,
                                   SecSignatureType       signatureType,
                                   SInt16                 signatureToRemove);
  
  EXTERN_API( OSStatus )
  SecMacRemoveAllSignatures       (FSSpec *               theFile,
                                   SecSignatureType       signatureType);
  
  EXTERN_API( OSStatus )
  SecMacVerifyFile                (FSSpec *               theFile,
                                   SecOptions             options,
                                   SecProgressCallbackUPP  progressProc,
                                   void *                 userContext,
                                   SInt16                 signatureToVerify,
                                   CFArrayRef             policyOIDs,
                                   KCVerifyStopOn         stopOn,
                                   SecSignerRef *         signer);
  
  EXTERN_API( OSStatus )
  SecMacVerifyFileSimple          (FSSpec *               theFile,
                                   SecOptions             options,
                                   SecTrustPolicy         trustPolicy,
                                   SecSignerRef *         signer);
  
  EXTERN_API( Boolean )
  SecMacHasSignature              (FSSpec *               theFile,
                                   SecSignatureType       signatureType);
  
  EXTERN_API( OSStatus )
  SecMacFindSignatureToVerify     (FSSpec *               theFile,
                                   SecSignatureType       signatureType,
                                   SInt16 *               signatureToVerify);
  
  EXTERN_API( CFArrayRef )
  SecMacGetDefaultPolicyOIDs      (SecTrustPolicy         trustPolicy);
  
  EXTERN_API( OSStatus )
  SecMacDisplaySigner             (OSStatus               inputErr,
                                   SecSignerRef           signer,
                                   Boolean                alwaysShowUI,
                                   FSSpec *               theFile);
  
  /* Errors Codes */
  enum {
      errSecTooManySigners        = -13839,
      errSecSigningFailed         = -13838,
      errSecCorruptSigPound       = -13837,
      errSecNoSignatureFound      = -13836
  };
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __FILESIGNING__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.