pEpCOMServerAdapter.idl
author Volker Birk <vb@pep-project.org>
Mon, 22 Feb 2016 16:30:19 +0100
changeset 61 d5bf2b6538f8
parent 60 a91c51e4f42b
child 62 e01f81c9c881
permissions -rw-r--r--
switching from BOOL to VARIANT_BOOL for compatibility
vb@0
     1
// pEpCOMServerAdapter.idl : IDL source for pEpCOMServerAdapter
vb@0
     2
//
vb@0
     3
vb@0
     4
// This file will be processed by the MIDL tool to
vb@0
     5
// produce the type library (pEpCOMServerAdapter.tlb) and marshalling code.
vb@0
     6
vb@0
     7
import "oaidl.idl";
vb@0
     8
import "ocidl.idl";
vb@0
     9
vb@0
    10
[
vb@0
    11
    object,
vb@0
    12
    uuid(9A9F4422-CF0A-45D7-90CD-1D1B7B2A4540),
vb@0
    13
    oleautomation,
vb@0
    14
    nonextensible,
vb@0
    15
    pointer_default(unique)
vb@0
    16
]
vb@0
    17
interface IpEpEngine : IUnknown {
vb@60
    18
    // runtime config of the adapter
vb@60
    19
vb@61
    20
    HRESULT verbose_logging([in] VARIANT_BOOL enable);
vb@51
    21
vb@60
    22
    // runtime config of the engine
vb@60
    23
vb@61
    24
    HRESULT passive_mode([in] VARIANT_BOOL enable);
vb@61
    25
    HRESULT unencrypted_subject([in] VARIANT_BOOL enable);
vb@60
    26
vb@60
    27
    // basic API
vb@60
    28
vb@60
    29
    typedef enum _pEp_STATUS {
vb@0
    30
        pEp_STATUS_OK = 0,
vb@0
    31
vb@0
    32
        pEp_KEY_NOT_FOUND = 0x0201,
vb@0
    33
        pEp_KEY_HAS_AMBIG_NAME = 0x0202,
vb@0
    34
        pEp_GET_KEY_FAILED = 0x0203,
vb@0
    35
vb@0
    36
        pEp_UNENCRYPTED = 0x0400,
vb@0
    37
        pEp_VERIFIED = 0x0401,
vb@0
    38
        pEp_DECRYPTED = 0x0402,
vb@0
    39
        pEp_DECRYPTED_AND_VERIFIED = 0x0403,
vb@0
    40
        pEp_DECRYPT_WRONG_FORMAT = 0x0404,
vb@0
    41
        pEp_DECRYPT_NO_KEY = 0x0405,
vb@0
    42
        pEp_DECRYPT_SIGNATURE_DOES_NOT_MATCH = 0x0406,
vb@0
    43
        pEp_VERIFY_NO_KEY = 0x0407,
vb@0
    44
        pEp_VERIFIED_AND_TRUSTED = 0x0408,
vb@0
    45
vb@0
    46
        pEp_ILLEGAL_VALUE = -4,
vb@0
    47
        pEp_BUFFER_TOO_SMALL = -3,
vb@0
    48
        pEp_OUT_OF_MEMORY = -2,
vb@0
    49
        pEp_UNKNOWN_ERROR = -1
vb@0
    50
    } pEp_STATUS;
vb@0
    51
vb@4
    52
    HRESULT log([in] BSTR title, [in] BSTR entity, [in, defaultvalue("")] BSTR description, [in, defaultvalue("")] BSTR comment);
vb@4
    53
    HRESULT decrypt([in] BSTR ctext, [out] BSTR * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
vb@4
    54
    HRESULT decrypt_b([in] BSTR ctext, [out] SAFEARRAY(BYTE) * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
vb@4
    55
    HRESULT encrypt([in] SAFEARRAY(BSTR) key_list, [in] BSTR ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
vb@4
    56
    HRESULT encrypt_b([in] SAFEARRAY(BSTR) key_list, [in] SAFEARRAY(BYTE) ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
vb@4
    57
    HRESULT verify([in] BSTR text, [in] BSTR signature, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * verify_status);
vb@17
    58
    HRESULT trustword([in] LONG value, [in, defaultvalue("en")] BSTR lang, [out, retval] BSTR * word);
vb@17
    59
    HRESULT trustwords([in] BSTR fpr, [in, defaultvalue("en")] BSTR lang, [in, defaultvalue(0)] LONG max_words, [out, retval] BSTR * words);
vb@58
    60
    HRESULT get_crashdump_log([in, defaultvalue(0)] LONG maxlines, [out, retval] BSTR * log);
vb@59
    61
    HRESULT get_languagelist([out, retval] BSTR * languages);
vb@59
    62
    HRESULT get_phrase([in] BSTR lang, [in] LONG phrase_id, [out, retval] BSTR * phrase);
vb@0
    63
vb@0
    64
    typedef enum _pEp_comm_type {
vb@0
    65
        pEp_ct_unknown = 0,
vb@0
    66
vb@0
    67
        // range 0x01 to 0x09: no encryption, 0x0a to 0x0e: nothing reasonable
vb@0
    68
vb@0
    69
        pEp_ct_no_encryption = 0x01,                // generic
vb@0
    70
        pEp_ct_no_encrypted_channel = 0x02,
vb@0
    71
        pEp_ct_key_not_found = 0x03,
vb@0
    72
        pEp_ct_key_expired = 0x04,
vb@0
    73
        pEp_ct_key_revoked = 0x05,
vb@0
    74
        pEp_ct_key_b0rken = 0x06,
vb@0
    75
        pEp_ct_my_key_not_included = 0x09,
vb@0
    76
vb@0
    77
        pEp_ct_security_by_obscurity = 0x0a,
vb@0
    78
        pEp_ct_b0rken_crypto = 0x0b,
vb@0
    79
        pEp_ct_key_too_short = 0x0e,
vb@0
    80
vb@0
    81
        pEp_ct_compromized = 0x0f,                  // known compromized connection
vb@0
    82
vb@0
    83
        // range 0x10 to 0x3f: unconfirmed encryption
vb@0
    84
vb@0
    85
        pEp_ct_unconfirmed_encryption = 0x10,       // generic
vb@0
    86
        pEp_ct_OpenPGP_1024_RSA_unconfirmed = 0x11,	// RSA 1024 is weak
vb@0
    87
        pEp_ct_OpenPGP_unconfirmed = 0x3f,          // key at least 2048 bit RSA
vb@0
    88
        // or 1024 bit DSA
vb@0
    89
vb@0
    90
        // range 0x40 to 0x7f: unconfirmed encryption and anonymization
vb@0
    91
vb@0
    92
        pEp_ct_unconfirmed_enc_anon = 0x40,         // generic
vb@0
    93
        pEp_ct_pEp_unconfirmed = 0x7f,
vb@0
    94
vb@0
    95
        pEp_ct_confirmed = 0x80,                    // this bit decides if trust is confirmed
vb@0
    96
vb@0
    97
        // range 0x81 to 0x8f: reserved
vb@0
    98
        // range 0x90 to 0xbf: confirmed encryption
vb@0
    99
vb@0
   100
        pEp_ct_confirmed_encryption = 0x90,         // generic
vb@0
   101
        pEp_ct_OpenPGP_1024_RSA = 0x91, // RSA 1024 is weak
vb@0
   102
        pEp_ct_OpenPGP = 0xbf, // key at least 2048 bit RSA or 1024 bit DSA
vb@0
   103
vb@0
   104
        // range 0xc0 to 0xff: confirmed encryption and anonymization
vb@0
   105
vb@0
   106
        pEp_ct_confirmed_enc_anon = 0xc0,           // generic
vb@0
   107
        pEp_ct_pEp = 0xff
vb@0
   108
    } pEp_comm_type;
vb@0
   109
vb@22
   110
    [uuid(0CB90E62-8A6A-4CA0-99D7-481704051FF0)] struct pEp_identity_s {
vb@0
   111
        BSTR address;
vb@0
   112
        BSTR fpr;
vb@0
   113
        BSTR user_id;
vb@0
   114
        BSTR username;
vb@0
   115
        pEp_comm_type comm_type;
vb@0
   116
        BSTR lang;
vb@0
   117
    };
vb@0
   118
vb@4
   119
    HRESULT get_identity([in] BSTR address, [out, retval] struct pEp_identity_s * ident);
vb@4
   120
    HRESULT set_identity([in] struct pEp_identity_s * ident);
vb@4
   121
    HRESULT generate_keypair([in] struct pEp_identity_s * ident, [out, retval] BSTR * fpr);
vb@4
   122
    HRESULT delete_keypair([in] BSTR fpr);
vb@4
   123
    HRESULT import_key([in] BSTR key_data);
vb@4
   124
    HRESULT import_key_b([in] SAFEARRAY(BYTE) key_data);
vb@4
   125
    HRESULT export_key([in] BSTR fpr, [out, retval] BSTR * key_data);
vb@4
   126
    HRESULT recv_key([in] BSTR pattern);
vb@4
   127
    HRESULT find_keys([in] BSTR pattern, [out, retval] SAFEARRAY(BSTR) * key_list);
vb@4
   128
    HRESULT send_key([in] BSTR pattern);
vb@0
   129
vb@24
   130
    HRESULT start_keyserver_lookup();
vb@24
   131
    HRESULT stop_keyserver_lookup();
vb@24
   132
vb@4
   133
    HRESULT examine_identity([in] struct pEp_identity_s * ident);
vb@4
   134
    HRESULT myself([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
vb@4
   135
    HRESULT update_identity([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
vb@49
   136
    HRESULT key_compromized([in] struct pEp_identity_s *ident);
Edouard@55
   137
    HRESULT key_reset_trust([in] struct pEp_identity_s *ident);
vb@50
   138
    HRESULT trust_personal_key([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
vb@4
   139
vb@15
   140
    // Message API
vb@12
   141
vb@15
   142
    typedef enum _pEp_color {
vb@18
   143
        pEp_rating_undefined = 0,
vb@20
   144
        pEp_rating_cannot_decrypt,
vb@20
   145
        pEp_rating_have_no_key,
vb@18
   146
        pEp_rating_unencrypted,
vb@18
   147
        pEp_rating_unreliable,
vb@18
   148
        pEp_rating_reliable,
vb@18
   149
        pEp_rating_yellow = pEp_rating_reliable,
vb@18
   150
        pEp_rating_trusted,
vb@18
   151
        pEp_rating_green = pEp_rating_trusted,
vb@18
   152
        pEp_rating_trusted_and_anonymized,
vb@18
   153
        pEp_rating_fully_anonymous,
vb@12
   154
vb@56
   155
        pEp_rating_mistrust = -1,
vb@56
   156
        pEp_rating_red = pEp_rating_mistrust,
vb@56
   157
        pEp_rating_b0rken = -2,
vb@56
   158
        pEp_rating_under_attack = -3
vb@15
   159
    } pEp_color;
vb@13
   160
vb@33
   161
    typedef enum _pEp_text_format {
vb@33
   162
        pEp_text_format_plain = 0,
vb@33
   163
        pEp_text_format_html,
vb@33
   164
        pEp_text_format_other = 0xff
vb@33
   165
    } pEp_text_format;
vb@33
   166
vb@41
   167
    typedef  enum _pEp_msg_direction {
vb@33
   168
        pEp_dir_incoming = 0,
vb@33
   169
        pEp_dir_outgoing
vb@33
   170
    } pEp_msg_direction;
vb@33
   171
vb@41
   172
    typedef  enum _pEp_MIME_format {
vb@33
   173
        pEp_MIME_none = 0,                      // message is not MIME encoded
vb@33
   174
        pEp_MIME_fields_omitted,                // message content but no fields
vb@33
   175
        pEp_MIME                                // message is fully MIME encoded
vb@33
   176
    } pEp_MIME_format;
vb@33
   177
vb@41
   178
    typedef  enum _pEp_enc_format {
vb@33
   179
        pEp_enc_none = 0,                       // message is not encrypted
vb@33
   180
        pEp_enc_pieces,                         // inline PGP + PGP extensions
vb@33
   181
        pEp_enc_S_MIME,                         // RFC5751
vb@33
   182
        pEp_enc_PGP_MIME,                       // RFC3156
vb@33
   183
        pEp_enc_pEp                             // pEp encryption format
vb@33
   184
    } pEp_enc_format;
vb@33
   185
vb@33
   186
    [uuid(3A8A4F13-3402-4C4C-94AB-598D87869380)] struct opt_field {
vb@33
   187
        BSTR name;
vb@33
   188
        BSTR value;
vb@33
   189
    };
vb@33
   190
vb@33
   191
    [uuid(61DA7AD4-192E-4616-8678-B19AEFB45B45)] struct blob {
vb@33
   192
        SAFEARRAY(BYTE) value;
vb@33
   193
        BSTR mime_type;
vb@33
   194
        BSTR filename;
vb@33
   195
    };
vb@33
   196
vb@33
   197
    [uuid(D763A8F3-BA23-4229-A037-1BB7BDC3E0C8)] struct text_message {
vb@33
   198
        pEp_msg_direction dir;
vb@33
   199
        BSTR id;
vb@33
   200
        BSTR shortmsg;
vb@33
   201
        BSTR longmsg;
vb@33
   202
        BSTR longmsg_formatted;
vb@33
   203
        SAFEARRAY(struct blob) attachments;
vb@33
   204
        hyper sent;
vb@33
   205
        hyper recv;
vb@33
   206
        struct pEp_identity_s from;
vb@33
   207
        SAFEARRAY(struct pEp_identity_s) to;
vb@33
   208
        struct pEp_identity_s recv_by;
vb@33
   209
        SAFEARRAY(struct pEp_identity_s) cc;
vb@33
   210
        SAFEARRAY(struct pEp_identity_s) bcc;
vb@33
   211
        SAFEARRAY(struct pEp_identity_s) reply_to;
vb@33
   212
        SAFEARRAY(BSTR) references;
vb@33
   213
        SAFEARRAY(BSTR) keywords;
vb@33
   214
        BSTR comments;
vb@33
   215
        SAFEARRAY(struct opt_field) opt_fields;
vb@33
   216
    };
vb@33
   217
vb@37
   218
    HRESULT encrypt_message([in] struct text_message *src, [out] struct text_message * dst, [in] SAFEARRAY(BSTR) extra);
vb@37
   219
    HRESULT decrypt_message([in] struct text_message *src, [out] struct text_message * dst, [out] SAFEARRAY(BSTR) *keylist, [out, retval] pEp_color *rating);
vb@33
   220
    HRESULT outgoing_message_color([in] struct text_message *msg, [out, retval] pEp_color * pVal);
vb@18
   221
    HRESULT identity_color([in] struct pEp_identity_s * ident, [out, retval] pEp_color * pVal);
vb@8
   222
};
vb@4
   223
vb@8
   224
[
vb@0
   225
    uuid(3EC2E1A4-40E8-48E4-A7B0-1876D34F9462),
vb@0
   226
    version(1.0),
vb@0
   227
]
vb@0
   228
library pEpCOMServerAdapterLib
vb@0
   229
{
vb@0
   230
    importlib("stdole2.tlb");
vb@0
   231
    [
vb@0
   232
        uuid(B6BC9B8E-D9E2-4419-A3A4-7B4B58175549)
vb@0
   233
    ]
vb@0
   234
    dispinterface _IpEpEngineEvents
vb@0
   235
    {
vb@0
   236
    properties:
vb@0
   237
    methods:
vb@0
   238
    };
vb@0
   239
    [
vb@0
   240
        uuid(EF1B073D-5058-4E0E-829E-B4D22CA21EA2)
vb@0
   241
    ]
vb@0
   242
    coclass pEpEngine {
vb@0
   243
        [default] interface IpEpEngine;
vb@0
   244
        [default, source] dispinterface _IpEpEngineEvents;
vb@0
   245
    };
vb@0
   246
};