#pragma once #include #include "pubkey.h" #include using std::function; using std::optional; using std::shared_future; using std::string; using std::vector; namespace erebos { struct IdentityData { static IdentityData load(const Ref &); Ref store(const Storage & st) const; const vector>> prev; const optional name; const optional>> owner; const Stored keyIdentity; const optional> keyMessage; }; struct Identity::Priv { vector>> data; vector>> updates; shared_future> name; optional owner; Stored keyMessage; static bool verifySignatures(const Stored> & sdata); static shared_ptr validate(const vector>> & sdata); static optional> lookupProperty( const vector>> & data, function sel); }; struct Identity::Builder::Priv { Storage storage; vector>> prev = {}; optional name = nullopt; optional owner = nullopt; Stored keyIdentity; optional> keyMessage; }; }