X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/866f8763175ff60e4fa455b92b5eb660a12fe6c7..7e6b461318c8a779d91381531435a68ee4e8b6ed:/OSX/libsecurity_codesigning/lib/cdbuilder.h diff --git a/OSX/libsecurity_codesigning/lib/cdbuilder.h b/OSX/libsecurity_codesigning/lib/cdbuilder.h index 761dcf63..7137444c 100644 --- a/OSX/libsecurity_codesigning/lib/cdbuilder.h +++ b/OSX/libsecurity_codesigning/lib/cdbuilder.h @@ -49,6 +49,7 @@ public: void executable(string path, size_t pagesize, size_t offset, size_t length); void reopen(string path, size_t offset, size_t length); + bool opened(); void specialSlot(SpecialSlot slot, CFDataRef data); void identifier(const std::string &code) { mIdentifier = code; } @@ -64,6 +65,18 @@ public: mExecSegOffset = base; mExecSegLimit = limit; mExecSegFlags = flags; } void addExecSegFlags(uint64_t flags) { mExecSegFlags |= flags; } + typedef std::map > + PreEncryptHashMap; + + void generatePreEncryptHashes(bool pre) { mGeneratePreEncryptHashes = pre; } + void preservePreEncryptHashMap(PreEncryptHashMap preEncryptHashMap) { + mPreservedPreEncryptHashMap = preEncryptHashMap; + } + + void runTimeVersion(uint32_t runtime) { + mRuntimeVersion = runtime; + } + size_t size(const uint32_t version); // calculate size CodeDirectory *build(); // build CodeDirectory and return it size_t fixedSize(const uint32_t version); // calculate fixed size of the CodeDirectory @@ -102,6 +115,11 @@ private: uint64_t mExecSegLimit; // limit of executable segment uint64_t mExecSegFlags; // executable segment flags + bool mGeneratePreEncryptHashes; // whether to also generate new pre-encrypt hashes + PreEncryptHashMap mPreservedPreEncryptHashMap; // existing pre-encrypt hashes to be set + + uint32_t mRuntimeVersion; // Hardened Runtime Version + CodeDirectory *mDir; // what we're building };