-/* privatekey.h - Fides private key class
+/* PrivateKey.h - Fides private key class
Copyright (C) 2008-2009 Guus Sliepen <guus@tinc-vpn.org>
Fides is free software; you can redistribute it and/or modify
#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 {
+namespace Fides {
+ class PrivateKey: public PublicKey {
Botan::ECDSA_PrivateKey *priv;
public:
- privatekey();
- ~privatekey();
+ PrivateKey();
+ ~PrivateKey();
void load_private(std::istream &in);
void save_private(std::ostream &out) const;
};
}
+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