X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..7e6b461318c8a779d91381531435a68ee4e8b6ed:/OSX/libsecurity_codesigning/lib/diskrep.cpp diff --git a/OSX/libsecurity_codesigning/lib/diskrep.cpp b/OSX/libsecurity_codesigning/lib/diskrep.cpp index af0a336b..0fd4ede8 100644 --- a/OSX/libsecurity_codesigning/lib/diskrep.cpp +++ b/OSX/libsecurity_codesigning/lib/diskrep.cpp @@ -32,7 +32,9 @@ #include "filediskrep.h" #include "bundlediskrep.h" #include "slcrep.h" - +#if TARGET_OS_OSX +#include "diskimagerep.h" +#endif namespace Security { namespace CodeSigning { @@ -76,7 +78,6 @@ void DiskRep::Writer::addDiscretionary(CodeDirectory::Builder &) // do nothing } - // // Given a file system path, come up with the most likely correct // disk representation for what's there. @@ -109,6 +110,10 @@ DiskRep *DiskRep::bestGuess(const char *path, const Context *ctx) AutoFileDesc fd(path, O_RDONLY); if (MachORep::candidate(fd)) return new MachORep(path, ctx); +#if TARGET_OS_OSX + if (DiskImageRep::candidate(fd)) + return new DiskImageRep(path); +#endif if (DYLDCacheRep::candidate(fd)) return new DYLDCacheRep(path); @@ -178,6 +183,11 @@ void DiskRep::adjustResources(ResourceBuilder &builder) { // do nothing } + +void DiskRep::prepareForSigning(SigningContext &state) +{ + // do nothing +} Universal *DiskRep::mainExecutableImage() { @@ -189,6 +199,11 @@ size_t DiskRep::signingBase() return 0; // whole file (start at beginning) } +size_t DiskRep::execSegBase(const Architecture *) +{ + return 0; // whole file (start at beginning) +} + CFArrayRef DiskRep::modifiedFiles() { // by default, claim (just) the main executable modified @@ -201,6 +216,10 @@ void DiskRep::flush() // nothing cached } +CFDictionaryRef DiskRep::diskRepInformation() +{ + return NULL; +} CFDictionaryRef DiskRep::defaultResourceRules(const SigningContext &) { @@ -218,9 +237,11 @@ size_t DiskRep::pageSize(const SigningContext &) } -void DiskRep::strictValidate(const CodeDirectory*, const ToleratedErrors&) +void DiskRep::strictValidate(const CodeDirectory*, const ToleratedErrors& tolerated, SecCSFlags flags) { - // do nothing + if (flags & kSecCSRestrictToAppLike) + if (tolerated.find(errSecCSNotAppLike) == tolerated.end()) + MacOSError::throwMe(errSecCSNotAppLike); } CFArrayRef DiskRep::allowedResourceOmissions() @@ -278,6 +299,9 @@ std::string DiskRep::canonicalIdentifier(const std::string &name) return s.substr(0, p); } +void DiskRep::registerStapledTicket() +{ /* do nothing */ } + // // Writers