]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_codesigning/lib/diskrep.cpp
Security-59306.61.1.tar.gz
[apple/security.git] / OSX / libsecurity_codesigning / lib / diskrep.cpp
index af0a336b2a1c436940b0a6a4045b42aed7b7f976..0fd4ede85d862fc18c846a155e21f2f98df38a17 100644 (file)
@@ -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