X-Git-Url: https://www.tinc-vpn.org/git/browse?p=fides;a=blobdiff_plain;f=lib%2Ffides.h;fp=lib%2Ffides.h;h=456ff52437596b97e245142e1ba4810ce0e4bdc6;hp=4ca088f0707bebe526377f9dd70e9529a504452d;hb=fa1153b4c3237d897a871331f0f9c0f8d30ca5a1;hpb=8f104b8742166c41e395375c1e740d7af6224699 diff --git a/lib/fides.h b/lib/fides.h index 4ca088f..456ff52 100644 --- a/lib/fides.h +++ b/lib/fides.h @@ -18,16 +18,17 @@ #ifndef __FIDES_H__ #define __FIDES_H__ -#include #include -#include -#include - #include "certificate.h" #include "publickey.h" #include "privatekey.h" #include "utility.h" +#ifdef __cplusplus +#include +#include +#include + namespace Fides { class exception: public std::runtime_error { public: @@ -96,4 +97,55 @@ namespace Fides { }; } +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