summaryrefslogtreecommitdiff
path: root/include/erebos/identity.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/erebos/identity.h')
-rw-r--r--include/erebos/identity.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/erebos/identity.h b/include/erebos/identity.h
index 7829361..4792330 100644
--- a/include/erebos/identity.h
+++ b/include/erebos/identity.h
@@ -71,6 +71,37 @@ private:
Identity(std::shared_ptr<const Priv> && p);
};
+struct IdentityData;
+struct IdentityExtension;
+
+struct StoredIdentityPart
+{
+ using Part = variant<
+ Stored<Signed<IdentityData>>,
+ Stored<Signed<IdentityExtension>>>;
+
+ StoredIdentityPart(Part p): part(move(p)) {}
+
+ static StoredIdentityPart load(const Ref &);
+ Ref store(const Storage & st) const;
+
+ bool operator==(const StoredIdentityPart & other) const
+ { return part == other.part; }
+ bool operator<(const StoredIdentityPart & other) const
+ { return part < other.part; }
+
+ const Ref & ref() const;
+ const Stored<Signed<IdentityData>> & base() const;
+
+ vector<StoredIdentityPart> previous() const;
+ vector<Digest> roots() const;
+ optional<string> name() const;
+ optional<StoredIdentityPart> owner() const;
+ bool isSignedBy(const Stored<PublicKey> &) const;
+
+ Part part;
+};
+
DECLARE_SHARED_TYPE(optional<Identity>)
}