Renamed to olgpgmain and olgpgcore. Added fucntion to retrieve the
[gpgol.git] / src / MapiGPGME.h
1 /* MapiGPGME.h - Mapi support with GPGME
2  *      Copyright (C) 2005 g10 Code GmbH
3  *
4  * This file is part of GPGME Dialogs.
5  *
6  * GPGME Dialogs is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public License
8  * as published by the Free Software Foundation; either version 2.1 
9  * of the License, or (at your option) any later version.
10  *  
11  * GPGME Dialogs is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public License
17  * along with GPGME Dialogs; if not, write to the Free Software Foundation, 
18  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
19  */
20 #ifndef MAPI_GPGME_H
21 #define MAPI_GPGME_H
22
23 typedef enum {
24     GPG_TYPE_NONE = 0,
25     GPG_TYPE_MSG,
26     GPG_TYPE_SIG,
27     GPG_TYPE_CLEARSIG,
28     GPG_TYPE_PUBKEY,    /* the key types are recognized but nut supported */
29     GPG_TYPE_SECKEY     /* by this implementaiton. */
30 } outlgpg_type_t;
31
32 typedef enum {
33     GPG_ATTACH_NONE = 0,
34     GPG_ATTACH_DECRYPT = 1,
35     GPG_ATTACH_ENCRYPT = 2,
36     GPG_ATTACH_SIGN = 4,
37     GPG_ATTACH_SIGNENCRYPT = GPG_ATTACH_SIGN|GPG_ATTACH_ENCRYPT,
38 } outlgpg_attachment_action_t;
39
40 typedef enum {
41     GPG_FMT_NONE = 0,       /* do not encrypt attachments */
42     GPG_FMT_CLASSIC = 1,    /* encrypt attachments without any encoding */
43     GPG_FMT_PGP_PEF = 2     /* use the PGP partioned encoding format (PEF) */
44 } outlgpg_format_t;
45
46
47 class MapiGPGME
48 {
49 public:    
50   virtual void __stdcall destroy () = 0;
51
52   virtual const char * __stdcall versionString (void) = 0;
53
54   virtual int __stdcall encrypt (void) = 0;
55   virtual int __stdcall decrypt (void) = 0;
56   virtual int __stdcall sign (void) = 0;
57   virtual int __stdcall verify (void) = 0;
58   virtual int __stdcall signEncrypt (void) = 0;
59   virtual int __stdcall attachPublicKey (const char *keyid) = 0;
60
61   virtual int __stdcall doCmd (int doEncrypt, int doSign) = 0;
62   virtual int __stdcall doCmdAttach (int action) = 0;
63   virtual int __stdcall doCmdFile (int action,
64                                    const char *in, const char *out) = 0;
65
66   virtual const char* __stdcall getAttachmentExtension (const char *fname) = 0;
67   virtual void __stdcall freeAttachments (void) = 0;
68   virtual int __stdcall getAttachments (void) = 0;
69   virtual int __stdcall countAttachments (void) = 0;
70   virtual bool __stdcall hasAttachments (void) = 0;
71   virtual bool __stdcall deleteAttachment (int pos) = 0;
72   virtual LPATTACH __stdcall createAttachment (int &pos) = 0;
73
74   virtual outlgpg_type_t __stdcall getMessageType (const char *body) = 0;
75   virtual void __stdcall setMessage (LPMESSAGE msg) = 0;
76   virtual void __stdcall setWindow (HWND hwnd) = 0;
77
78   virtual const char * __stdcall getPassphrase (const char *keyid) = 0;
79   virtual void __stdcall storePassphrase (void *itm) = 0;
80   virtual void __stdcall clearPassphrase (void) = 0;
81
82   virtual void __stdcall logDebug (const char *fmt, ...) = 0;
83   virtual void __stdcall logDebug (const char *fmt, va_list a) = 0;
84
85   virtual int __stdcall readOptions (void) = 0;
86   virtual int __stdcall writeOptions (void) = 0;
87
88   virtual int  __stdcall getStorePasswdTime (void) = 0;
89   virtual void __stdcall setStorePasswdTime (int nCacheTime) = 0;
90   virtual bool __stdcall getEncryptDefault (void) = 0;
91   virtual void __stdcall setEncryptDefault (bool doEncrypt) = 0;
92   virtual bool __stdcall getSignDefault (void) = 0;
93   virtual void __stdcall setSignDefault (bool doSign) = 0;
94   virtual bool __stdcall getEncryptWithDefaultKey (void) = 0;
95   virtual void __stdcall setEncryptWithDefaultKey (bool encryptDefault) = 0;
96   virtual bool __stdcall getSaveDecryptedAttachments (void) = 0;
97   virtual void __stdcall setSaveDecryptedAttachments (bool saveDecrAtt) = 0;
98   virtual void __stdcall setEncodingFormat (int fmt) = 0;
99   virtual int  __stdcall getEncodingFormat (void) = 0;
100   virtual void __stdcall setSignAttachments (bool signAtt) = 0;
101   virtual bool __stdcall getSignAttachments (void) = 0;
102   virtual void __stdcall setEnableLogging (bool val) = 0;
103   virtual bool __stdcall getEnableLogging (void) = 0;
104   virtual const char * __stdcall getLogFile (void) = 0;
105   virtual void __stdcall setLogFile (const char *logfile) = 0;
106   virtual void __stdcall setDefaultKey (const char *key) = 0;
107   virtual char * __stdcall getDefaultKey (void) = 0;
108
109   virtual void  __stdcall showVersion (void) = 0;
110
111   virtual int __stdcall startKeyManager () = 0;
112   virtual void __stdcall startConfigDialog (HWND parent) = 0;
113
114
115   void operator delete (void *p)
116     {
117       if (p)
118         {
119           MapiGPGME *m = (MapiGPGME*)(p);
120           m->destroy();
121         }
122     }
123
124 };
125
126
127 extern "C" {
128
129 MapiGPGME * __stdcall CreateMapiGPGME (LPMESSAGE msg);
130
131 }
132
133 #endif /*MAPI_GPGME_H*/