/* * Copyright (c) 2013-2022, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * * See full license text in LICENSE file at top of project tree */ #ifndef FAMILY_H__ #define FAMILY_H__ #include #include #include #include "Signature.h" #include "Identity.h" namespace i2p { namespace data { typedef int FamilyID; class Families { public: Families(); ~Families(); void LoadCertificates(); bool VerifyFamily(const std::string &family, const IdentHash &ident, const char *signature, const char *key = nullptr) const; FamilyID GetFamilyID(const std::string &family) const; private: void LoadCertificate(const std::string &filename); private: std::map, FamilyID> > m_SigningKeys; // family -> (verifier, id) }; std::string CreateFamilySignature(const std::string &family, const IdentHash &ident); // return base64 signature of empty string in case of failure } } #endif