X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=lib%2Ffides.h;h=456ff52437596b97e245142e1ba4810ce0e4bdc6;hb=HEAD;hp=fb54b12b456a8be5b14c4c518ac26656d1c1251b;hpb=401e0b5e1d97ded0e2c7415c6dd0f94ee6bfb470;p=fides diff --git a/lib/fides.h b/lib/fides.h index fb54b12..456ff52 100644 --- a/lib/fides.h +++ b/lib/fides.h @@ -18,18 +18,24 @@ #ifndef __FIDES_H__ #define __FIDES_H__ -#include #include -#include -#include - #include "certificate.h" #include "publickey.h" #include "privatekey.h" #include "utility.h" -namespace fides { - class fides { +#ifdef __cplusplus +#include +#include +#include + +namespace Fides { + class exception: public std::runtime_error { + public: + exception(const std::string reason): runtime_error(reason) {} + }; + + class Manager { std::string homedir; std::string certdir; std::string obsoletedir; @@ -38,26 +44,17 @@ namespace fides { bool firstrun; struct timeval latest; - public: - // Utility functions - - class exception: public std::runtime_error { - public: - exception(const std::string reason): runtime_error(reason) {} - }; - // Fides class itself - private: - privatekey mykey; - std::map keys; - std::map certs; + PrivateKey mykey; + std::map keys; + std::map certs; - void merge(certificate *cert); - void merge(publickey *key); + void merge(Certificate *cert); + void merge(PublicKey *key); public: - fides(const std::string &homedir = ""); - ~fides(); + Manager(const std::string &homedir = ""); + ~Manager(); bool is_firstrun() const; bool fsck() const; @@ -65,39 +62,90 @@ namespace fides { void sign(const std::string &statement); - void allow(const std::string &statement, const publickey *key = 0); - void dontcare(const std::string &statement, const publickey *key = 0); - void deny(const std::string &statement, const publickey *key = 0); - bool is_allowed(const std::string &statement, const publickey *key = 0) const; - bool is_denied(const std::string &statement, const publickey *key = 0) const; + void allow(const std::string &statement, const PublicKey *key = 0); + void dontcare(const std::string &statement, const PublicKey *key = 0); + void deny(const std::string &statement, const PublicKey *key = 0); + bool is_allowed(const std::string &statement, const PublicKey *key = 0) const; + bool is_denied(const std::string &statement, const PublicKey *key = 0) const; void auth_stats(const std::string &statement, int &self, int &trusted, int &all) const; - void trust(const publickey *key); - void dctrust(const publickey *key); - void distrust(const publickey *key); - bool is_trusted(const publickey *key) const; - bool is_distrusted(const publickey *key) const; - publickey *find_key(const std::string &fingerprint) const; + void trust(const PublicKey *key); + void dctrust(const PublicKey *key); + void distrust(const PublicKey *key); + bool is_trusted(const PublicKey *key) const; + bool is_distrusted(const PublicKey *key) const; + PublicKey *find_key(const std::string &fingerprint) const; void update_trust(); - std::vector find_certificates(const publickey *key, const std::string &statement) const; - std::vector find_certificates(const std::string &statement) const; - std::vector find_certificates(const publickey *key) const; + std::vector find_certificates(const PublicKey *key, const std::string &statement) const; + std::vector find_certificates(const std::string &statement) const; + std::vector find_certificates(const PublicKey *key) const; - const certificate *import_certificate(const std::string &certificate); - std::string export_certificate(const certificate *) const; + const Certificate *import_certificate(const std::string &Certificate); + std::string export_certificate(const Certificate *) const; - const publickey *import_key(const std::string &key); - std::string export_key(const publickey *key) const; + const PublicKey *import_key(const std::string &key); + std::string export_key(const PublicKey *key) const; void import_all(std::istream &in); void export_all(std::ostream &out) const; - certificate *certificate_from_string(const std::string &certificate); - certificate *certificate_load(const std::string &filename); - void certificate_save(const certificate *cert, const std::string &filename) const; + Certificate *certificate_from_string(const std::string &Certificate); + Certificate *certificate_load(const std::string &filename); + void certificate_save(const Certificate *cert, const std::string &filename) const; }; } +extern "C" { +typedef Fides::Manager fides_manager; +#else +#include +#include +typedef struct fides_manager fides_manager; +#endif + +extern fides_manager *fides_init_manager(char *homedir); +extern void fides_exit_manager(fides_manager *m); + +extern bool fides_is_firstrun(fides_manager *m); +extern bool fides_fsck(fides_manager *m); +extern char *fides_get_homedir(fides_manager *m); + +extern void fides_sign(fides_manager *m, const char *statement); + +extern void fides_allow(fides_manager *m, const char *statement, const fides_publickey *key); +extern void fides_dontcare(fides_manager *m, const char *statement, const fides_publickey *key); +extern void fides_deny(fides_manager *m, const char *statement, const fides_publickey *key); +extern bool fides_is_allowed(fides_manager *m, const char *statement, const fides_publickey *key); +extern bool fides_is_denied(fides_manager *m, const char *statement, const fides_publickey *key); + +extern void fides_auth_stats(fides_manager *m, const char *statement, int *self, int *trusted, int *all); +extern void fides_trust(fides_manager *m, const fides_publickey *key); +extern void fides_dctrust(fides_manager *m, const fides_publickey *key); +extern void fides_distrust(fides_manager *m, const fides_publickey *key); +extern bool fides_is_trusted(fides_manager *m, const fides_publickey *key); +extern bool fides_is_distrusted(fides_manager *m, const fides_publickey *key); +extern fides_publickey *fides_find_key(fides_manager *m, const char *fingerprint); +extern void fides_update_trust(fides_manager *m); + +extern fides_certificate **find_certificates(fides_manager *m, const fides_publickey *key, const char *statement); + +extern const fides_certificate *fides_import_certificate(fides_manager *m, const char *certificate); +extern char *fides_export_certificate(fides_manager *m, const fides_certificate *certificcate); + +extern const fides_publickey *fides_import_key(fides_manager *m, const char *key); +extern char *fides_export_key(fides_manager *m, const fides_publickey *key); + +extern void fides_import_all(fides_manager *m, FILE *in); +extern void fides_export_all(fides_manager *m, FILE *out); + +extern fides_certificate *fides_certificate_from_string(fides_manager *m, const char *certificate); +extern fides_certificate *fides_certificate_load(fides_manager *m, const char *filename); +extern void fides_certificate_save(fides_manager *m, const fides_certificate *cert, const char *filename); + +#ifdef __cplusplus +} +#endif + #endif