Add C bindings.
[fides] / lib / privatekey.h
index a648604..6270a2a 100644 (file)
 #ifndef __FIDES_PRIVATEKEY_H__
 #define __FIDES_PRIVATEKEY_H__
 
+#include "publickey.h"
+
+#ifdef __cplusplus
 #include <string>
 #include <botan/botan.h>
 #include <botan/ecdsa.h>
-#include "publickey.h"
 
 namespace Fides {
        class PrivateKey: public PublicKey {
@@ -41,4 +43,24 @@ namespace Fides {
        };
 }
 
+extern "C" {
+typedef Fides::PrivateKey fides_privatekey;
+#else
+typedef struct fides_privatekey fides_privatekey;
+#endif
+
+extern fides_privatekey *fides_privatekey_new();
+extern void fides_privatekey_free(fides_privatekey *k);
+
+extern void fides_privatekey_load_public(fides_privatekey *k, const char *filename);
+extern void fides_privatekey_save_public(fides_privatekey *k, const char *filename);
+extern void fides_privatekey_load(fides_privatekey *k, const char *filename);
+extern void fides_privatekey_save(fides_privatekey *k, const char *filename);
+extern void fides_privatekey_generate_field(fides_privatekey *k, const char *field);
+extern void fides_privatekey_generate(fides_privatekey *k, unsigned int bits);
+extern char *fides_privatekey_sign(fides_privatekey *k, const char *data);
+#ifdef __cplusplus
+}
+#endif
+
 #endif