#ifndef PRIVACY_H
#define PRIVACY_H
-typedef struct _PrivacySystem PrivacySystem;
typedef struct _PrivacyData PrivacyData;
typedef enum {
#include "procmime.h"
#include "prefs_account.h"
-void privacy_register_system (PrivacySystem *system);
-void privacy_unregister_system (PrivacySystem *system);
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
void privacy_free_privacydata (PrivacyData *);
MimeInfo *mimeinfo,
const gchar *encdata);
-struct _PrivacySystem {
- /** Identifier for the PrivacySystem that can use in config files */
- gchar *id;
- /** Human readable name for the PrivacySystem for the user interface */
- gchar *name;
+struct _PrivacyData {
+ void *system;
+};
- void (*free_privacydata) (PrivacyData *data);
+#ifdef __cplusplus
+}
- gboolean (*is_signed) (MimeInfo *mimeinfo);
- gint (*check_signature) (MimeInfo *mimeinfo);
- SignatureStatus (*get_sig_status) (MimeInfo *mimeinfo);
- gchar *(*get_sig_info_short) (MimeInfo *mimeinfo);
- gchar *(*get_sig_info_full) (MimeInfo *mimeinfo);
+class PrivacySystem {
+ public:
+ virtual const gchar *getId() = 0;
+ virtual const gchar *getName() = 0;
- gboolean (*is_encrypted) (MimeInfo *mimeinfo);
- MimeInfo *(*decrypt) (MimeInfo *mimeinfo);
+ virtual void freePrivacyData (PrivacyData *);
- gboolean can_sign;
- gboolean (*sign) (MimeInfo *mimeinfo,
- PrefsAccount *account);
+ virtual gboolean isSigned (MimeInfo *);
+ virtual gint checkSignature (MimeInfo *);
+ virtual SignatureStatus getSigStatus (MimeInfo *);
+ virtual gchar *getSigInfoShort (MimeInfo *);
+ virtual gchar *getSigInfoFull (MimeInfo *);
- gboolean can_encrypt;
- gchar *(*get_encrypt_data) (GSList *recp_names);
- gboolean (*encrypt) (MimeInfo *mimeinfo,
- const gchar *encrypt_data);
-};
+ virtual gboolean isEncrypted (MimeInfo *);
+ virtual MimeInfo *decrypt (MimeInfo *);
-struct _PrivacyData {
- PrivacySystem *system;
+ virtual gboolean canSign ();
+ virtual gboolean sign (MimeInfo *mimeinfo,
+ PrefsAccount *account);
+
+ virtual gboolean canEncrypt ();
+ virtual gchar *getEncryptData (GSList *recp_names);
+ virtual gboolean encrypt (MimeInfo *mimeinfo,
+ const gchar *encrypt_data);
};
+void privacy_register_system (PrivacySystem *system);
+void privacy_unregister_system (PrivacySystem *system);
+
+#endif /* __cplusplus */
+
#endif /* PRIVACY_H */