key_compromized() added into IMessageAPI_Outlook
authorVolker Birk <vb@pep-project.org>
Thu, 23 Apr 2015 22:26:12 +0200
changeset 4fdd8cf02d2cc
parent 3 a81ac65b3f71
child 5 d959f594e4f7
key_compromized() added into IMessageAPI_Outlook
CpEpEngine.cpp
CpEpEngine.h
dlldata.c
pEpCOMServerAdapter.idl
pEpCOMServerAdapter_i.c
pEpCOMServerAdapter_i.h
     1.1 --- a/CpEpEngine.cpp	Thu Apr 16 21:09:40 2015 +0200
     1.2 +++ b/CpEpEngine.cpp	Thu Apr 23 22:26:12 2015 +0200
     1.3 @@ -896,6 +896,31 @@
     1.4      }
     1.5  }
     1.6  
     1.7 +STDMETHODIMP CpEpEngine::key_compromized(BSTR fpr)
     1.8 +{
     1.9 +    assert(fpr);
    1.10 +
    1.11 +    if (fpr == NULL)
    1.12 +        return E_INVALIDARG;
    1.13 +
    1.14 +    string _fpr = utf8_string(fpr);
    1.15 +    if (_fpr.length() == 0)
    1.16 +        return E_INVALIDARG;
    1.17 +
    1.18 +    PEP_STATUS status = ::key_compromized(get_session(), _fpr.c_str());
    1.19 +    assert(status != PEP_OUT_OF_MEMORY);
    1.20 +    if (status == PEP_OUT_OF_MEMORY)
    1.21 +        return E_OUTOFMEMORY;
    1.22 +
    1.23 +    if (status == PEP_KEY_NOT_FOUND)
    1.24 +        return FAIL(L"key not found");
    1.25 +
    1.26 +    if (status != ::PEP_STATUS_OK)
    1.27 +        return FAIL(L"revoke compromized key");
    1.28 +
    1.29 +    return S_OK;
    1.30 +}
    1.31 +
    1.32  ::pEp_identity * CpEpEngine::retrieve_next_identity(void *management)
    1.33  {
    1.34      assert(management);
     2.1 --- a/CpEpEngine.h	Thu Apr 16 21:09:40 2015 +0200
     2.2 +++ b/CpEpEngine.h	Thu Apr 23 22:26:12 2015 +0200
     2.3 @@ -28,7 +28,8 @@
     2.4  	public ISupportErrorInfo,
     2.5  	public IConnectionPointContainerImpl<CpEpEngine>,
     2.6  	public CProxy_IpEpEngineEvents<CpEpEngine>,
     2.7 -	public IpEpEngine
     2.8 +	public IpEpEngine,
     2.9 +    public IMessageAPI_Outlook
    2.10  {
    2.11  public:
    2.12  	CpEpEngine()
    2.13 @@ -192,6 +193,9 @@
    2.14      STDMETHOD(verify)(BSTR text, BSTR signature, LPSAFEARRAY * key_list, pEp_STATUS * verify_status);
    2.15      STDMETHOD(myself)(struct pEp_identity_s *ident, struct pEp_identity_s *result);
    2.16      STDMETHOD(update_identity)(struct pEp_identity_s *ident, struct pEp_identity_s *result);
    2.17 +
    2.18 +    // IMessageAPI_Outlook
    2.19 +    STDMETHOD(key_compromized)(BSTR fpr);
    2.20  };
    2.21  
    2.22  OBJECT_ENTRY_AUTO(__uuidof(pEpEngine), CpEpEngine)
     3.1 --- a/dlldata.c	Thu Apr 16 21:09:40 2015 +0200
     3.2 +++ b/dlldata.c	Thu Apr 23 22:26:12 2015 +0200
     3.3 @@ -18,11 +18,13 @@
     3.4  extern "C"   {
     3.5  #endif
     3.6  
     3.7 +EXTERN_PROXY_FILE( MessageAPI )
     3.8  EXTERN_PROXY_FILE( pEpCOMServerAdapter )
     3.9  
    3.10  
    3.11  PROXYFILE_LIST_START
    3.12  /* Start of list */
    3.13 +  REFERENCE_PROXY_FILE( MessageAPI ),
    3.14    REFERENCE_PROXY_FILE( pEpCOMServerAdapter ),
    3.15  /* End of list */
    3.16  PROXYFILE_LIST_END
     4.1 --- a/pEpCOMServerAdapter.idl	Thu Apr 16 21:09:40 2015 +0200
     4.2 +++ b/pEpCOMServerAdapter.idl	Thu Apr 23 22:26:12 2015 +0200
     4.3 @@ -7,7 +7,6 @@
     4.4  import "oaidl.idl";
     4.5  import "ocidl.idl";
     4.6  
     4.7 -
     4.8  [
     4.9      object,
    4.10      uuid(9A9F4422-CF0A-45D7-90CD-1D1B7B2A4540),
    4.11 @@ -39,14 +38,14 @@
    4.12          pEp_UNKNOWN_ERROR = -1
    4.13      } pEp_STATUS;
    4.14  
    4.15 -    [id(1)] HRESULT log([in] BSTR title, [in] BSTR entity, [in, defaultvalue("")] BSTR description, [in, defaultvalue("")] BSTR comment);
    4.16 -    [id(2)] HRESULT decrypt([in] BSTR ctext, [out] BSTR * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    4.17 -    [id(3)] HRESULT decrypt_b([in] BSTR ctext, [out] SAFEARRAY(BYTE) * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    4.18 -    [id(4)] HRESULT encrypt([in] SAFEARRAY(BSTR) key_list, [in] BSTR ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    4.19 -    [id(5)] HRESULT encrypt_b([in] SAFEARRAY(BSTR) key_list, [in] SAFEARRAY(BYTE) ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    4.20 -    [id(21)] HRESULT verify([in] BSTR text, [in] BSTR signature, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * verify_status);
    4.21 -    [id(6)] HRESULT safeword([in] LONG value, [in, defaultvalue("en")] BSTR lang, [out, retval] BSTR * word);
    4.22 -    [id(7)] HRESULT safewords([in] BSTR fpr, [in, defaultvalue("en")] BSTR lang, [in, defaultvalue(0)] LONG max_words, [out, retval] BSTR * words);
    4.23 +    HRESULT log([in] BSTR title, [in] BSTR entity, [in, defaultvalue("")] BSTR description, [in, defaultvalue("")] BSTR comment);
    4.24 +    HRESULT decrypt([in] BSTR ctext, [out] BSTR * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    4.25 +    HRESULT decrypt_b([in] BSTR ctext, [out] SAFEARRAY(BYTE) * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    4.26 +    HRESULT encrypt([in] SAFEARRAY(BSTR) key_list, [in] BSTR ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    4.27 +    HRESULT encrypt_b([in] SAFEARRAY(BSTR) key_list, [in] SAFEARRAY(BYTE) ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    4.28 +    HRESULT verify([in] BSTR text, [in] BSTR signature, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * verify_status);
    4.29 +    HRESULT safeword([in] LONG value, [in, defaultvalue("en")] BSTR lang, [out, retval] BSTR * word);
    4.30 +    HRESULT safewords([in] BSTR fpr, [in, defaultvalue("en")] BSTR lang, [in, defaultvalue(0)] LONG max_words, [out, retval] BSTR * words);
    4.31  
    4.32      typedef enum _pEp_comm_type {
    4.33          pEp_ct_unknown = 0,
    4.34 @@ -103,22 +102,59 @@
    4.35          BSTR lang;
    4.36      };
    4.37  
    4.38 -    [id(8)] HRESULT get_identity([in] BSTR address, [out, retval] struct pEp_identity_s * ident);
    4.39 -    [id(9)] HRESULT set_identity([in] struct pEp_identity_s * ident);
    4.40 -    [id(10)] HRESULT generate_keypair([in] struct pEp_identity_s * ident, [out, retval] BSTR * fpr);
    4.41 -    [id(11)] HRESULT delete_keypair([in] BSTR fpr);
    4.42 -    [id(12)] HRESULT import_key([in] BSTR key_data);
    4.43 -    [id(13)] HRESULT import_key_b([in] SAFEARRAY(BYTE) key_data);
    4.44 -    [id(14)] HRESULT export_key([in] BSTR fpr, [out, retval] BSTR * key_data);
    4.45 -    [id(15)] HRESULT recv_key([in] BSTR pattern);
    4.46 -    [id(16)] HRESULT find_keys([in] BSTR pattern, [out, retval] SAFEARRAY(BSTR) * key_list);
    4.47 -    [id(17)] HRESULT send_key([in] BSTR pattern);
    4.48 +    HRESULT get_identity([in] BSTR address, [out, retval] struct pEp_identity_s * ident);
    4.49 +    HRESULT set_identity([in] struct pEp_identity_s * ident);
    4.50 +    HRESULT generate_keypair([in] struct pEp_identity_s * ident, [out, retval] BSTR * fpr);
    4.51 +    HRESULT delete_keypair([in] BSTR fpr);
    4.52 +    HRESULT import_key([in] BSTR key_data);
    4.53 +    HRESULT import_key_b([in] SAFEARRAY(BYTE) key_data);
    4.54 +    HRESULT export_key([in] BSTR fpr, [out, retval] BSTR * key_data);
    4.55 +    HRESULT recv_key([in] BSTR pattern);
    4.56 +    HRESULT find_keys([in] BSTR pattern, [out, retval] SAFEARRAY(BSTR) * key_list);
    4.57 +    HRESULT send_key([in] BSTR pattern);
    4.58  
    4.59 -    [id(19)] HRESULT examine_identity([in] struct pEp_identity_s * ident);
    4.60 -    [id(20)] HRESULT examine_myself([in] struct pEp_identity_s * myself);
    4.61 -    [id(22)] HRESULT myself([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
    4.62 -    [id(23)] HRESULT update_identity([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
    4.63 +    HRESULT examine_identity([in] struct pEp_identity_s * ident);
    4.64 +    HRESULT examine_myself([in] struct pEp_identity_s * myself);
    4.65 +    HRESULT myself([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
    4.66 +    HRESULT update_identity([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
    4.67  };
    4.68 +
    4.69 +[
    4.70 +    object,
    4.71 +    uuid(BC9AB54D-2CDA-47A5-AB40-64857B9E9555),
    4.72 +    oleautomation,
    4.73 +    nonextensible,
    4.74 +    pointer_default(unique)
    4.75 +]
    4.76 +interface IMessageAPI_Outlook : IUnknown {
    4.77 +    typedef enum _pEp_text_format {
    4.78 +        pEp_text_format_plain = 0,
    4.79 +        pEp_text_format_html,
    4.80 +        pEp_text_format_other = 0xff
    4.81 +    } pEp_text_format;
    4.82 +
    4.83 +    typedef enum _pEp_msg_direction {
    4.84 +        pEp_dir_incoming = 0,
    4.85 +        pEp_dir_outgoing
    4.86 +    } pEp_msg_direction;
    4.87 +
    4.88 +    typedef enum _pEp_MIME_format {
    4.89 +        pEp_MIME_none = 0,                      // message is not MIME encoded
    4.90 +        pEp_MIME_fields_omitted,                // message content but no fields
    4.91 +        pEp_MIME                                // message is fully MIME encoded
    4.92 +    } pEp_MIME_format;
    4.93 +
    4.94 +    typedef enum _pEp_enc_format {
    4.95 +        pEp_enc_none = 0,                       // message is not encrypted
    4.96 +        pEp_enc_pieces,                         // inline PGP + PGP extensions
    4.97 +        pEp_enc_S_MIME,                         // RFC5751
    4.98 +        pEp_enc_PGP_MIME,                       // RFC3156
    4.99 +        pEp_enc_pEp                             // pEp encryption format
   4.100 +    } pEp_enc_format;
   4.101 +
   4.102 +    HRESULT key_compromized([in] BSTR fpr);
   4.103 +};
   4.104 +
   4.105  [
   4.106      uuid(3EC2E1A4-40E8-48E4-A7B0-1876D34F9462),
   4.107      version(1.0),
   4.108 @@ -140,6 +176,7 @@
   4.109      coclass pEpEngine {
   4.110          [default] interface IpEpEngine;
   4.111          [default, source] dispinterface _IpEpEngineEvents;
   4.112 +        interface IMessageAPI_Outlook;
   4.113      };
   4.114  };
   4.115  
     5.1 --- a/pEpCOMServerAdapter_i.c	Thu Apr 16 21:09:40 2015 +0200
     5.2 +++ b/pEpCOMServerAdapter_i.c	Thu Apr 23 22:26:12 2015 +0200
     5.3 @@ -6,7 +6,7 @@
     5.4  
     5.5  
     5.6   /* File created by MIDL compiler version 8.00.0603 */
     5.7 -/* at Thu Apr 16 16:43:32 2015
     5.8 +/* at Thu Apr 23 19:17:16 2015
     5.9   */
    5.10  /* Compiler settings for pEpCOMServerAdapter.idl:
    5.11      Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 
    5.12 @@ -70,6 +70,9 @@
    5.13  MIDL_DEFINE_GUID(IID, IID_IpEpEngine,0x9A9F4422,0xCF0A,0x45D7,0x90,0xCD,0x1D,0x1B,0x7B,0x2A,0x45,0x40);
    5.14  
    5.15  
    5.16 +MIDL_DEFINE_GUID(IID, IID_IMessageAPI_Outlook,0xBC9AB54D,0x2CDA,0x47A5,0xAB,0x40,0x64,0x85,0x7B,0x9E,0x95,0x55);
    5.17 +
    5.18 +
    5.19  MIDL_DEFINE_GUID(IID, LIBID_pEpCOMServerAdapterLib,0x3EC2E1A4,0x40E8,0x48E4,0xA7,0xB0,0x18,0x76,0xD3,0x4F,0x94,0x62);
    5.20  
    5.21  
     6.1 --- a/pEpCOMServerAdapter_i.h	Thu Apr 16 21:09:40 2015 +0200
     6.2 +++ b/pEpCOMServerAdapter_i.h	Thu Apr 23 22:26:12 2015 +0200
     6.3 @@ -4,7 +4,7 @@
     6.4  
     6.5  
     6.6   /* File created by MIDL compiler version 8.00.0603 */
     6.7 -/* at Thu Apr 16 16:43:32 2015
     6.8 +/* at Thu Apr 23 19:17:16 2015
     6.9   */
    6.10  /* Compiler settings for pEpCOMServerAdapter.idl:
    6.11      Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 8.00.0603 
    6.12 @@ -52,6 +52,13 @@
    6.13  #endif 	/* __IpEpEngine_FWD_DEFINED__ */
    6.14  
    6.15  
    6.16 +#ifndef __IMessageAPI_Outlook_FWD_DEFINED__
    6.17 +#define __IMessageAPI_Outlook_FWD_DEFINED__
    6.18 +typedef interface IMessageAPI_Outlook IMessageAPI_Outlook;
    6.19 +
    6.20 +#endif 	/* __IMessageAPI_Outlook_FWD_DEFINED__ */
    6.21 +
    6.22 +
    6.23  #ifndef ___IpEpEngineEvents_FWD_DEFINED__
    6.24  #define ___IpEpEngineEvents_FWD_DEFINED__
    6.25  typedef interface _IpEpEngineEvents _IpEpEngineEvents;
    6.26 @@ -154,98 +161,98 @@
    6.27      IpEpEngine : public IUnknown
    6.28      {
    6.29      public:
    6.30 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE log( 
    6.31 +        virtual HRESULT STDMETHODCALLTYPE log( 
    6.32              /* [in] */ BSTR title,
    6.33              /* [in] */ BSTR entity,
    6.34              /* [defaultvalue][in] */ BSTR description = L"",
    6.35              /* [defaultvalue][in] */ BSTR comment = L"") = 0;
    6.36          
    6.37 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE decrypt( 
    6.38 +        virtual HRESULT STDMETHODCALLTYPE decrypt( 
    6.39              /* [in] */ BSTR ctext,
    6.40              /* [out] */ BSTR *ptext,
    6.41              /* [out] */ SAFEARRAY * *key_list,
    6.42              /* [retval][out] */ pEp_STATUS *decrypt_status) = 0;
    6.43          
    6.44 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE decrypt_b( 
    6.45 +        virtual HRESULT STDMETHODCALLTYPE decrypt_b( 
    6.46              /* [in] */ BSTR ctext,
    6.47              /* [out] */ SAFEARRAY * *ptext,
    6.48              /* [out] */ SAFEARRAY * *key_list,
    6.49              /* [retval][out] */ pEp_STATUS *decrypt_status) = 0;
    6.50          
    6.51 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE encrypt( 
    6.52 +        virtual HRESULT STDMETHODCALLTYPE encrypt( 
    6.53              /* [in] */ SAFEARRAY * key_list,
    6.54              /* [in] */ BSTR ptext,
    6.55              /* [out] */ BSTR *ctext,
    6.56              /* [retval][out] */ pEp_STATUS *status) = 0;
    6.57          
    6.58 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE encrypt_b( 
    6.59 +        virtual HRESULT STDMETHODCALLTYPE encrypt_b( 
    6.60              /* [in] */ SAFEARRAY * key_list,
    6.61              /* [in] */ SAFEARRAY * ptext,
    6.62              /* [out] */ BSTR *ctext,
    6.63              /* [retval][out] */ pEp_STATUS *status) = 0;
    6.64          
    6.65 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE verify( 
    6.66 +        virtual HRESULT STDMETHODCALLTYPE verify( 
    6.67              /* [in] */ BSTR text,
    6.68              /* [in] */ BSTR signature,
    6.69              /* [out] */ SAFEARRAY * *key_list,
    6.70              /* [retval][out] */ pEp_STATUS *verify_status) = 0;
    6.71          
    6.72 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE safeword( 
    6.73 +        virtual HRESULT STDMETHODCALLTYPE safeword( 
    6.74              /* [in] */ LONG value,
    6.75              /* [defaultvalue][in] */ BSTR lang,
    6.76              /* [retval][out] */ BSTR *word) = 0;
    6.77          
    6.78 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE safewords( 
    6.79 +        virtual HRESULT STDMETHODCALLTYPE safewords( 
    6.80              /* [in] */ BSTR fpr,
    6.81              /* [defaultvalue][in] */ BSTR lang,
    6.82              /* [defaultvalue][in] */ LONG max_words,
    6.83              /* [retval][out] */ BSTR *words) = 0;
    6.84          
    6.85 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE get_identity( 
    6.86 +        virtual HRESULT STDMETHODCALLTYPE get_identity( 
    6.87              /* [in] */ BSTR address,
    6.88              /* [retval][out] */ struct pEp_identity_s *ident) = 0;
    6.89          
    6.90 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE set_identity( 
    6.91 +        virtual HRESULT STDMETHODCALLTYPE set_identity( 
    6.92              /* [in] */ struct pEp_identity_s *ident) = 0;
    6.93          
    6.94 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE generate_keypair( 
    6.95 +        virtual HRESULT STDMETHODCALLTYPE generate_keypair( 
    6.96              /* [in] */ struct pEp_identity_s *ident,
    6.97              /* [retval][out] */ BSTR *fpr) = 0;
    6.98          
    6.99 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE delete_keypair( 
   6.100 +        virtual HRESULT STDMETHODCALLTYPE delete_keypair( 
   6.101              /* [in] */ BSTR fpr) = 0;
   6.102          
   6.103 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE import_key( 
   6.104 +        virtual HRESULT STDMETHODCALLTYPE import_key( 
   6.105              /* [in] */ BSTR key_data) = 0;
   6.106          
   6.107 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE import_key_b( 
   6.108 +        virtual HRESULT STDMETHODCALLTYPE import_key_b( 
   6.109              /* [in] */ SAFEARRAY * key_data) = 0;
   6.110          
   6.111 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE export_key( 
   6.112 +        virtual HRESULT STDMETHODCALLTYPE export_key( 
   6.113              /* [in] */ BSTR fpr,
   6.114              /* [retval][out] */ BSTR *key_data) = 0;
   6.115          
   6.116 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE recv_key( 
   6.117 +        virtual HRESULT STDMETHODCALLTYPE recv_key( 
   6.118              /* [in] */ BSTR pattern) = 0;
   6.119          
   6.120 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE find_keys( 
   6.121 +        virtual HRESULT STDMETHODCALLTYPE find_keys( 
   6.122              /* [in] */ BSTR pattern,
   6.123              /* [retval][out] */ SAFEARRAY * *key_list) = 0;
   6.124          
   6.125 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE send_key( 
   6.126 +        virtual HRESULT STDMETHODCALLTYPE send_key( 
   6.127              /* [in] */ BSTR pattern) = 0;
   6.128          
   6.129 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE examine_identity( 
   6.130 +        virtual HRESULT STDMETHODCALLTYPE examine_identity( 
   6.131              /* [in] */ struct pEp_identity_s *ident) = 0;
   6.132          
   6.133 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE examine_myself( 
   6.134 +        virtual HRESULT STDMETHODCALLTYPE examine_myself( 
   6.135              /* [in] */ struct pEp_identity_s *myself) = 0;
   6.136          
   6.137 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE myself( 
   6.138 +        virtual HRESULT STDMETHODCALLTYPE myself( 
   6.139              /* [in] */ struct pEp_identity_s *ident,
   6.140              /* [retval][out] */ struct pEp_identity_s *result) = 0;
   6.141          
   6.142 -        virtual /* [id] */ HRESULT STDMETHODCALLTYPE update_identity( 
   6.143 +        virtual HRESULT STDMETHODCALLTYPE update_identity( 
   6.144              /* [in] */ struct pEp_identity_s *ident,
   6.145              /* [retval][out] */ struct pEp_identity_s *result) = 0;
   6.146          
   6.147 @@ -270,119 +277,119 @@
   6.148          ULONG ( STDMETHODCALLTYPE *Release )( 
   6.149              IpEpEngine * This);
   6.150          
   6.151 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *log )( 
   6.152 +        HRESULT ( STDMETHODCALLTYPE *log )( 
   6.153              IpEpEngine * This,
   6.154              /* [in] */ BSTR title,
   6.155              /* [in] */ BSTR entity,
   6.156              /* [defaultvalue][in] */ BSTR description,
   6.157              /* [defaultvalue][in] */ BSTR comment);
   6.158          
   6.159 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *decrypt )( 
   6.160 +        HRESULT ( STDMETHODCALLTYPE *decrypt )( 
   6.161              IpEpEngine * This,
   6.162              /* [in] */ BSTR ctext,
   6.163              /* [out] */ BSTR *ptext,
   6.164              /* [out] */ SAFEARRAY * *key_list,
   6.165              /* [retval][out] */ pEp_STATUS *decrypt_status);
   6.166          
   6.167 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *decrypt_b )( 
   6.168 +        HRESULT ( STDMETHODCALLTYPE *decrypt_b )( 
   6.169              IpEpEngine * This,
   6.170              /* [in] */ BSTR ctext,
   6.171              /* [out] */ SAFEARRAY * *ptext,
   6.172              /* [out] */ SAFEARRAY * *key_list,
   6.173              /* [retval][out] */ pEp_STATUS *decrypt_status);
   6.174          
   6.175 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *encrypt )( 
   6.176 +        HRESULT ( STDMETHODCALLTYPE *encrypt )( 
   6.177              IpEpEngine * This,
   6.178              /* [in] */ SAFEARRAY * key_list,
   6.179              /* [in] */ BSTR ptext,
   6.180              /* [out] */ BSTR *ctext,
   6.181              /* [retval][out] */ pEp_STATUS *status);
   6.182          
   6.183 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *encrypt_b )( 
   6.184 +        HRESULT ( STDMETHODCALLTYPE *encrypt_b )( 
   6.185              IpEpEngine * This,
   6.186              /* [in] */ SAFEARRAY * key_list,
   6.187              /* [in] */ SAFEARRAY * ptext,
   6.188              /* [out] */ BSTR *ctext,
   6.189              /* [retval][out] */ pEp_STATUS *status);
   6.190          
   6.191 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *verify )( 
   6.192 +        HRESULT ( STDMETHODCALLTYPE *verify )( 
   6.193              IpEpEngine * This,
   6.194              /* [in] */ BSTR text,
   6.195              /* [in] */ BSTR signature,
   6.196              /* [out] */ SAFEARRAY * *key_list,
   6.197              /* [retval][out] */ pEp_STATUS *verify_status);
   6.198          
   6.199 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *safeword )( 
   6.200 +        HRESULT ( STDMETHODCALLTYPE *safeword )( 
   6.201              IpEpEngine * This,
   6.202              /* [in] */ LONG value,
   6.203              /* [defaultvalue][in] */ BSTR lang,
   6.204              /* [retval][out] */ BSTR *word);
   6.205          
   6.206 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *safewords )( 
   6.207 +        HRESULT ( STDMETHODCALLTYPE *safewords )( 
   6.208              IpEpEngine * This,
   6.209              /* [in] */ BSTR fpr,
   6.210              /* [defaultvalue][in] */ BSTR lang,
   6.211              /* [defaultvalue][in] */ LONG max_words,
   6.212              /* [retval][out] */ BSTR *words);
   6.213          
   6.214 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *get_identity )( 
   6.215 +        HRESULT ( STDMETHODCALLTYPE *get_identity )( 
   6.216              IpEpEngine * This,
   6.217              /* [in] */ BSTR address,
   6.218              /* [retval][out] */ struct pEp_identity_s *ident);
   6.219          
   6.220 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *set_identity )( 
   6.221 +        HRESULT ( STDMETHODCALLTYPE *set_identity )( 
   6.222              IpEpEngine * This,
   6.223              /* [in] */ struct pEp_identity_s *ident);
   6.224          
   6.225 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *generate_keypair )( 
   6.226 +        HRESULT ( STDMETHODCALLTYPE *generate_keypair )( 
   6.227              IpEpEngine * This,
   6.228              /* [in] */ struct pEp_identity_s *ident,
   6.229              /* [retval][out] */ BSTR *fpr);
   6.230          
   6.231 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *delete_keypair )( 
   6.232 +        HRESULT ( STDMETHODCALLTYPE *delete_keypair )( 
   6.233              IpEpEngine * This,
   6.234              /* [in] */ BSTR fpr);
   6.235          
   6.236 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *import_key )( 
   6.237 +        HRESULT ( STDMETHODCALLTYPE *import_key )( 
   6.238              IpEpEngine * This,
   6.239              /* [in] */ BSTR key_data);
   6.240          
   6.241 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *import_key_b )( 
   6.242 +        HRESULT ( STDMETHODCALLTYPE *import_key_b )( 
   6.243              IpEpEngine * This,
   6.244              /* [in] */ SAFEARRAY * key_data);
   6.245          
   6.246 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *export_key )( 
   6.247 +        HRESULT ( STDMETHODCALLTYPE *export_key )( 
   6.248              IpEpEngine * This,
   6.249              /* [in] */ BSTR fpr,
   6.250              /* [retval][out] */ BSTR *key_data);
   6.251          
   6.252 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *recv_key )( 
   6.253 +        HRESULT ( STDMETHODCALLTYPE *recv_key )( 
   6.254              IpEpEngine * This,
   6.255              /* [in] */ BSTR pattern);
   6.256          
   6.257 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *find_keys )( 
   6.258 +        HRESULT ( STDMETHODCALLTYPE *find_keys )( 
   6.259              IpEpEngine * This,
   6.260              /* [in] */ BSTR pattern,
   6.261              /* [retval][out] */ SAFEARRAY * *key_list);
   6.262          
   6.263 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *send_key )( 
   6.264 +        HRESULT ( STDMETHODCALLTYPE *send_key )( 
   6.265              IpEpEngine * This,
   6.266              /* [in] */ BSTR pattern);
   6.267          
   6.268 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *examine_identity )( 
   6.269 +        HRESULT ( STDMETHODCALLTYPE *examine_identity )( 
   6.270              IpEpEngine * This,
   6.271              /* [in] */ struct pEp_identity_s *ident);
   6.272          
   6.273 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *examine_myself )( 
   6.274 +        HRESULT ( STDMETHODCALLTYPE *examine_myself )( 
   6.275              IpEpEngine * This,
   6.276              /* [in] */ struct pEp_identity_s *myself);
   6.277          
   6.278 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *myself )( 
   6.279 +        HRESULT ( STDMETHODCALLTYPE *myself )( 
   6.280              IpEpEngine * This,
   6.281              /* [in] */ struct pEp_identity_s *ident,
   6.282              /* [retval][out] */ struct pEp_identity_s *result);
   6.283          
   6.284 -        /* [id] */ HRESULT ( STDMETHODCALLTYPE *update_identity )( 
   6.285 +        HRESULT ( STDMETHODCALLTYPE *update_identity )( 
   6.286              IpEpEngine * This,
   6.287              /* [in] */ struct pEp_identity_s *ident,
   6.288              /* [retval][out] */ struct pEp_identity_s *result);
   6.289 @@ -487,6 +494,119 @@
   6.290  #endif 	/* __IpEpEngine_INTERFACE_DEFINED__ */
   6.291  
   6.292  
   6.293 +#ifndef __IMessageAPI_Outlook_INTERFACE_DEFINED__
   6.294 +#define __IMessageAPI_Outlook_INTERFACE_DEFINED__
   6.295 +
   6.296 +/* interface IMessageAPI_Outlook */
   6.297 +/* [unique][nonextensible][oleautomation][uuid][object] */ 
   6.298 +
   6.299 +typedef 
   6.300 +enum _pEp_text_format
   6.301 +    {
   6.302 +        pEp_text_format_plain	= 0,
   6.303 +        pEp_text_format_html	= ( pEp_text_format_plain + 1 ) ,
   6.304 +        pEp_text_format_other	= 0xff
   6.305 +    } 	pEp_text_format;
   6.306 +
   6.307 +typedef 
   6.308 +enum _pEp_msg_direction
   6.309 +    {
   6.310 +        pEp_dir_incoming	= 0,
   6.311 +        pEp_dir_outgoing	= ( pEp_dir_incoming + 1 ) 
   6.312 +    } 	pEp_msg_direction;
   6.313 +
   6.314 +typedef 
   6.315 +enum _pEp_MIME_format
   6.316 +    {
   6.317 +        pEp_MIME_none	= 0,
   6.318 +        pEp_MIME_fields_omitted	= ( pEp_MIME_none + 1 ) ,
   6.319 +        pEp_MIME	= ( pEp_MIME_fields_omitted + 1 ) 
   6.320 +    } 	pEp_MIME_format;
   6.321 +
   6.322 +typedef 
   6.323 +enum _pEp_enc_format
   6.324 +    {
   6.325 +        pEp_enc_none	= 0,
   6.326 +        pEp_enc_pieces	= ( pEp_enc_none + 1 ) ,
   6.327 +        pEp_enc_S_MIME	= ( pEp_enc_pieces + 1 ) ,
   6.328 +        pEp_enc_PGP_MIME	= ( pEp_enc_S_MIME + 1 ) ,
   6.329 +        pEp_enc_pEp	= ( pEp_enc_PGP_MIME + 1 ) 
   6.330 +    } 	pEp_enc_format;
   6.331 +
   6.332 +
   6.333 +EXTERN_C const IID IID_IMessageAPI_Outlook;
   6.334 +
   6.335 +#if defined(__cplusplus) && !defined(CINTERFACE)
   6.336 +    
   6.337 +    MIDL_INTERFACE("BC9AB54D-2CDA-47A5-AB40-64857B9E9555")
   6.338 +    IMessageAPI_Outlook : public IUnknown
   6.339 +    {
   6.340 +    public:
   6.341 +        virtual HRESULT STDMETHODCALLTYPE key_compromized( 
   6.342 +            /* [in] */ BSTR fpr) = 0;
   6.343 +        
   6.344 +    };
   6.345 +    
   6.346 +    
   6.347 +#else 	/* C style interface */
   6.348 +
   6.349 +    typedef struct IMessageAPI_OutlookVtbl
   6.350 +    {
   6.351 +        BEGIN_INTERFACE
   6.352 +        
   6.353 +        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
   6.354 +            IMessageAPI_Outlook * This,
   6.355 +            /* [in] */ REFIID riid,
   6.356 +            /* [annotation][iid_is][out] */ 
   6.357 +            _COM_Outptr_  void **ppvObject);
   6.358 +        
   6.359 +        ULONG ( STDMETHODCALLTYPE *AddRef )( 
   6.360 +            IMessageAPI_Outlook * This);
   6.361 +        
   6.362 +        ULONG ( STDMETHODCALLTYPE *Release )( 
   6.363 +            IMessageAPI_Outlook * This);
   6.364 +        
   6.365 +        HRESULT ( STDMETHODCALLTYPE *key_compromized )( 
   6.366 +            IMessageAPI_Outlook * This,
   6.367 +            /* [in] */ BSTR fpr);
   6.368 +        
   6.369 +        END_INTERFACE
   6.370 +    } IMessageAPI_OutlookVtbl;
   6.371 +
   6.372 +    interface IMessageAPI_Outlook
   6.373 +    {
   6.374 +        CONST_VTBL struct IMessageAPI_OutlookVtbl *lpVtbl;
   6.375 +    };
   6.376 +
   6.377 +    
   6.378 +
   6.379 +#ifdef COBJMACROS
   6.380 +
   6.381 +
   6.382 +#define IMessageAPI_Outlook_QueryInterface(This,riid,ppvObject)	\
   6.383 +    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
   6.384 +
   6.385 +#define IMessageAPI_Outlook_AddRef(This)	\
   6.386 +    ( (This)->lpVtbl -> AddRef(This) ) 
   6.387 +
   6.388 +#define IMessageAPI_Outlook_Release(This)	\
   6.389 +    ( (This)->lpVtbl -> Release(This) ) 
   6.390 +
   6.391 +
   6.392 +#define IMessageAPI_Outlook_key_compromized(This,fpr)	\
   6.393 +    ( (This)->lpVtbl -> key_compromized(This,fpr) ) 
   6.394 +
   6.395 +#endif /* COBJMACROS */
   6.396 +
   6.397 +
   6.398 +#endif 	/* C style interface */
   6.399 +
   6.400 +
   6.401 +
   6.402 +
   6.403 +#endif 	/* __IMessageAPI_Outlook_INTERFACE_DEFINED__ */
   6.404 +
   6.405 +
   6.406  
   6.407  #ifndef __pEpCOMServerAdapterLib_LIBRARY_DEFINED__
   6.408  #define __pEpCOMServerAdapterLib_LIBRARY_DEFINED__