]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_codesigning/lib/diskimagerep.cpp
Security-59306.140.5.tar.gz
[apple/security.git] / OSX / libsecurity_codesigning / lib / diskimagerep.cpp
index a24b9e597ab5d684b9dd8e8d6af8c547e92572e6..86b056c063f6ac11d54cc424a14ceaddad3de7ad 100644 (file)
@@ -25,6 +25,7 @@
 // diskimagerep - DiskRep representing a single read-only compressed disk image file
 //
 #include "diskimagerep.h"
 // diskimagerep - DiskRep representing a single read-only compressed disk image file
 //
 #include "diskimagerep.h"
+#include "notarization.h"
 #include "sigblob.h"
 #include "CodeSigner.h"
 #include <security_utilities/endian.h>
 #include "sigblob.h"
 #include "CodeSigner.h"
 #include <security_utilities/endian.h>
@@ -68,13 +69,19 @@ bool DiskImageRep::readHeader(FileDesc& fd, UDIFFileHeader& header)
 // Object management.
 //
 DiskImageRep::DiskImageRep(const char *path)
 // Object management.
 //
 DiskImageRep::DiskImageRep(const char *path)
-       : SingleDiskRep(path)
+       : SingleDiskRep(path), mSigningData(NULL)
 {
        this->setup();
 }
 
 {
        this->setup();
 }
 
+DiskImageRep::~DiskImageRep()
+{
+       free((void*)mSigningData);
+}
+
 void DiskImageRep::setup()
 {
 void DiskImageRep::setup()
 {
+       free((void*)mSigningData);
        mSigningData = NULL;
        
        // the UDIF "header" is in fact the last 512 bytes of the file, with no particular alignment
        mSigningData = NULL;
        
        // the UDIF "header" is in fact the last 512 bytes of the file, with no particular alignment
@@ -210,7 +217,7 @@ void DiskImageRep::Writer::component(CodeDirectory::SpecialSlot slot, CFDataRef
 //
 void DiskImageRep::Writer::flush()
 {
 //
 void DiskImageRep::Writer::flush()
 {
-       delete mSigningData;                    // ditch previous blob just in case
+       free((void*)mSigningData);              // ditch previous blob just in case
        mSigningData = Maker::make();   // assemble new signature SuperBlob
        
        // write signature superblob
        mSigningData = Maker::make();   // assemble new signature SuperBlob
        
        // write signature superblob
@@ -235,6 +242,15 @@ void DiskImageRep::Writer::addDiscretionary(CodeDirectory::Builder &builder)
 {
 }
 
 {
 }
 
+void DiskImageRep::registerStapledTicket()
+{
+       CFRef<CFDataRef> data = NULL;
+       if (mSigningData) {
+               data.take(mSigningData->component(cdTicketSlot));
+               registerStapledTicketInDMG(data);
+       }
+}
+
 
 } // end namespace CodeSigning
 } // end namespace Security
 
 } // end namespace CodeSigning
 } // end namespace Security