1/* 2 * Copyright (c) 2006 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 24// 25// sigblob - signature (Super)Blob types 26// 27#ifndef _H_SIGBLOB 28#define _H_SIGBLOB 29 30#include "codedirectory.h" 31#include <security_utilities/superblob.h> 32#include <CoreFoundation/CFData.h> 33 34namespace Security { 35namespace CodeSigning { 36 37 38// 39// An EmbeddedSignatureBlob is a SuperBlob indexed by component slot number. 40// This is what we embed in Mach-O images. It is also what we use for detached 41// signatures for non-Mach-O binaries. 42// 43class EmbeddedSignatureBlob : public SuperBlobCore<EmbeddedSignatureBlob, 0xfade0cc0, uint32_t> { 44 typedef SuperBlobCore<EmbeddedSignatureBlob, 0xfade0cc0, uint32_t> _Core; 45public: 46 CFDataRef component(CodeDirectory::SpecialSlot slot) const; 47 48 class Maker : public _Core::Maker { 49 public: 50 void component(CodeDirectory::SpecialSlot type, CFDataRef data); 51 }; 52}; 53 54 55// 56// A DetachedSignatureBlob collects multiple architectures' worth of 57// EmbeddedSignatureBlobs into one, well, Super-SuperBlob. 58// This is what we use for Mach-O detached signatures. 59// 60typedef SuperBlob<0xfade0cc1> DetachedSignatureBlob; // indexed by main architecture 61 62 63// 64// The linkers produces a superblob of dependency records from its dylib inputs 65// 66typedef SuperBlob<0xfade0c05> LibraryDependencyBlob; // indexed sequentially from 0 67 68 69// 70// An entitlement blob is used for embedding entitlement configuration data 71// 72class EntitlementBlob : public Blob<EntitlementBlob, 0xfade7171> { 73public: 74 CFDictionaryRef entitlements() const; 75}; 76 77 78} // end namespace CodeSigning 79} // end namespace Security 80 81#endif // !_H_SIGBLOB 82