2  * Copyright (c) 2006,2011,2013-2014 Apple Inc. All Rights Reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   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 
  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. 
  21  * @APPLE_LICENSE_HEADER_END@ 
  25 // csprocess - UNIX process implementation of the Code Signing Host Interface 
  30 #include "csgeneric.h" 
  31 #include "StaticCode.h" 
  32 #include "PidDiskRep.h" 
  33 #include <security_utilities/utilities.h> 
  36 namespace CodeSigning 
{ 
  40 // A SecCode that represents a running UNIX process. 
  41 // Processes are identified by pid. 
  43 // ProcessCode inherits GenericCode's access to the cshosting Mach protocol to 
  46 class ProcessCode 
: public GenericCode 
{ 
  48         ProcessCode(pid_t pid
, const audit_token_t
* token
, PidDiskRep 
*pidDiskRep 
= NULL
); 
  49         ~ProcessCode() throw () { delete mAudit
; } 
  51         pid_t 
pid() const { return mPid
; } 
  52         const audit_token_t
* audit() const { return mAudit
; } 
  54         PidDiskRep 
*pidBased() const { return mPidBased
; } 
  56         int csops(unsigned int ops
, void *addr
, size_t size
); 
  58         mach_port_t 
getHostingPort(); 
  62         audit_token_t
* mAudit
; 
  63         RefPointer
<PidDiskRep
> mPidBased
; 
  68 // We don't need a GenericCode variant of ProcessCode 
  70 typedef SecStaticCode ProcessStaticCode
; 
  72 class ProcessDynamicCode 
: public SecStaticCode 
{ 
  74         ProcessDynamicCode(ProcessCode 
*diskRep
); 
  76         CFDataRef 
component(CodeDirectory::SpecialSlot slot
, OSStatus fail 
= errSecCSSignatureFailed
); 
  78         CFDictionaryRef 
infoDictionary(); 
  80         void validateComponent(CodeDirectory::SpecialSlot slot
, OSStatus fail 
= errSecCSSignatureFailed
); 
  86 } // end namespace CodeSigning 
  87 } // end namespace Security 
  89 #endif // !_H_CSPROCESS