+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
+