aboutsummaryrefslogtreecommitdiffstats
path: root/ldid.hpp
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2015-09-28 01:13:27 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2015-09-28 01:13:27 -0700
commit23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01 (patch)
treec08ca4a87bf2332c358b00b630015fb56a677fca /ldid.hpp
parent23fff9c86513730660d22f5eba0c85873e8bef09 (diff)
downloadldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.tar.gz
ldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.tar.zst
ldid-23c11ee8bcbc98bcaa3bc3682ab123f8a44d0b01.zip
Finish implementating application bundle codesign.
Diffstat (limited to 'ldid.hpp')
-rw-r--r--ldid.hpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/ldid.hpp b/ldid.hpp
index bce79a7..4ae4950 100644
--- a/ldid.hpp
+++ b/ldid.hpp
@@ -45,7 +45,47 @@ FunctorImpl<decltype(&Function_::operator())> fun(const Function_ &value) {
return value;
}
-typedef std::map<uint32_t, std::string> Slots;
+class Folder {
+ public:
+ virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code) = 0;
+ virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code) = 0;
+ virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code) = 0;
+};
+
+class DiskFolder :
+ public Folder
+{
+ private:
+ const std::string path_;
+ std::map<std::string, std::string> commit_;
+
+ std::string Path(const std::string &path);
+
+ public:
+ DiskFolder(const std::string &path);
+ ~DiskFolder();
+
+ virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code);
+ virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code);
+ virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code);
+};
+
+class SubFolder :
+ public Folder
+{
+ private:
+ Folder *parent_;
+ std::string path_;
+
+ public:
+ SubFolder(Folder *parent, const std::string &path);
+
+ virtual void Save(const std::string &path, const Functor<void (std::streambuf &)> &code);
+ virtual bool Open(const std::string &path, const Functor<void (std::streambuf &)> &code);
+ virtual void Find(const std::string &path, const Functor<void (const std::string &, const Functor<void (const Functor<void (std::streambuf &, std::streambuf &)> &)> &)> &code);
+};
+
+typedef std::map<uint32_t, std::vector<char>> Slots;
void Sign(const void *idata, size_t isize, std::streambuf &output, const std::string &identifier, const std::string &entitlements, const std::string &key, const Slots &slots);