]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_codesigning/lib/bundlediskrep.h
Security-59306.140.5.tar.gz
[apple/security.git] / OSX / libsecurity_codesigning / lib / bundlediskrep.h
index 922696134b5c9da1dad90612443ed8cf960ff53b..af3e40e2c228a8b230625e5e72ec8776544a1854 100644 (file)
 #include "diskrep.h"
 #include "machorep.h"
 
 #include "diskrep.h"
 #include "machorep.h"
 
+#include <sys/cdefs.h>
+
+#if TARGET_OS_OSX
+__BEGIN_DECLS
+#include <AppleFSCompression/AppleFSCompression.h>
+__END_DECLS
+#endif
+
 namespace Security {
 namespace CodeSigning {
 
 namespace Security {
 namespace CodeSigning {
 
@@ -47,14 +55,16 @@ namespace CodeSigning {
 // if it is in Mach-O format, or in files in a _CodeSignature directory if not.
 // This DiskRep supports resource sealing.
 //
 // if it is in Mach-O format, or in files in a _CodeSignature directory if not.
 // This DiskRep supports resource sealing.
 //
-class BundleDiskRep : public DiskRep {
+class BundleDiskRep : public DiskRep, public EditableDiskRep {
 public:
        BundleDiskRep(const char *path, const Context *ctx = NULL);
        BundleDiskRep(CFBundleRef ref, const Context *ctx = NULL);
        ~BundleDiskRep();
        
        CFDataRef component(CodeDirectory::SpecialSlot slot);
 public:
        BundleDiskRep(const char *path, const Context *ctx = NULL);
        BundleDiskRep(CFBundleRef ref, const Context *ctx = NULL);
        ~BundleDiskRep();
        
        CFDataRef component(CodeDirectory::SpecialSlot slot);
+       RawComponentMap createRawComponents();
        CFDataRef identification();
        CFDataRef identification();
+       DiskRep *mainExecRep() const { return mExecRep.get(); };
        std::string mainExecutablePath();
        CFURLRef copyCanonicalPath();
        std::string resourcesRootPath();
        std::string mainExecutablePath();
        CFURLRef copyCanonicalPath();
        std::string resourcesRootPath();
@@ -64,6 +74,8 @@ public:
        void prepareForSigning(SigningContext &context);
        size_t signingBase();
        size_t signingLimit();
        void prepareForSigning(SigningContext &context);
        size_t signingBase();
        size_t signingLimit();
+       size_t execSegBase(const Architecture *arch);
+       size_t execSegLimit(const Architecture *arch);
        std::string format();
        CFArrayRef modifiedFiles();
        UnixPlusPlus::FileDesc &fd();
        std::string format();
        CFArrayRef modifiedFiles();
        UnixPlusPlus::FileDesc &fd();
@@ -76,8 +88,13 @@ public:
        size_t pageSize(const SigningContext &ctx);
 
        void strictValidate(const CodeDirectory* cd, const ToleratedErrors& tolerated, SecCSFlags flags);
        size_t pageSize(const SigningContext &ctx);
 
        void strictValidate(const CodeDirectory* cd, const ToleratedErrors& tolerated, SecCSFlags flags);
+       void strictValidateStructure(const CodeDirectory* cd, const ToleratedErrors& tolerated, SecCSFlags flags);
        CFArrayRef allowedResourceOmissions();
 
        CFArrayRef allowedResourceOmissions();
 
+       void registerStapledTicket();
+
+       bool appleInternalForcePlatform() const {return forcePlatform;};
+
        CFBundleRef bundle() const { return mBundle; }
 
 public:
        CFBundleRef bundle() const { return mBundle; }
 
 public:
@@ -116,6 +133,7 @@ private:
        bool mComponentsFromExecValid;                  // mComponentsFromExec is valid (tri-state)
        std::set<CodeDirectory::SpecialSlot> mUsedComponents; // remember what components we've retrieved
        std::set<OSStatus> mStrictErrors;               // strict validation errors encountered
        bool mComponentsFromExecValid;                  // mComponentsFromExec is valid (tri-state)
        std::set<CodeDirectory::SpecialSlot> mUsedComponents; // remember what components we've retrieved
        std::set<OSStatus> mStrictErrors;               // strict validation errors encountered
+       bool forcePlatform;                                             // treat as anchor apple on apple internal
 };
 
 
 };