pEpCOMServerAdapter.idl
author Volker Birk <vb@pep-project.org>
Thu, 16 Apr 2015 20:43:31 +0200
changeset 0 0aa9866d751c
child 4 fdd8cf02d2cc
permissions -rw-r--r--
initial commit
     1 // pEpCOMServerAdapter.idl : IDL source for pEpCOMServerAdapter
     2 //
     3 
     4 // This file will be processed by the MIDL tool to
     5 // produce the type library (pEpCOMServerAdapter.tlb) and marshalling code.
     6 
     7 import "oaidl.idl";
     8 import "ocidl.idl";
     9 
    10 
    11 [
    12     object,
    13     uuid(9A9F4422-CF0A-45D7-90CD-1D1B7B2A4540),
    14     oleautomation,
    15     nonextensible,
    16     pointer_default(unique)
    17 ]
    18 interface IpEpEngine : IUnknown {
    19     typedef enum _pEp_STATUS {
    20         pEp_STATUS_OK = 0,
    21 
    22         pEp_KEY_NOT_FOUND = 0x0201,
    23         pEp_KEY_HAS_AMBIG_NAME = 0x0202,
    24         pEp_GET_KEY_FAILED = 0x0203,
    25 
    26         pEp_UNENCRYPTED = 0x0400,
    27         pEp_VERIFIED = 0x0401,
    28         pEp_DECRYPTED = 0x0402,
    29         pEp_DECRYPTED_AND_VERIFIED = 0x0403,
    30         pEp_DECRYPT_WRONG_FORMAT = 0x0404,
    31         pEp_DECRYPT_NO_KEY = 0x0405,
    32         pEp_DECRYPT_SIGNATURE_DOES_NOT_MATCH = 0x0406,
    33         pEp_VERIFY_NO_KEY = 0x0407,
    34         pEp_VERIFIED_AND_TRUSTED = 0x0408,
    35 
    36         pEp_ILLEGAL_VALUE = -4,
    37         pEp_BUFFER_TOO_SMALL = -3,
    38         pEp_OUT_OF_MEMORY = -2,
    39         pEp_UNKNOWN_ERROR = -1
    40     } pEp_STATUS;
    41 
    42     [id(1)] HRESULT log([in] BSTR title, [in] BSTR entity, [in, defaultvalue("")] BSTR description, [in, defaultvalue("")] BSTR comment);
    43     [id(2)] HRESULT decrypt([in] BSTR ctext, [out] BSTR * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    44     [id(3)] HRESULT decrypt_b([in] BSTR ctext, [out] SAFEARRAY(BYTE) * ptext, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * decrypt_status);
    45     [id(4)] HRESULT encrypt([in] SAFEARRAY(BSTR) key_list, [in] BSTR ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    46     [id(5)] HRESULT encrypt_b([in] SAFEARRAY(BSTR) key_list, [in] SAFEARRAY(BYTE) ptext, [out] BSTR * ctext, [out, retval] pEp_STATUS * status);
    47     [id(21)] HRESULT verify([in] BSTR text, [in] BSTR signature, [out] SAFEARRAY(BSTR) * key_list, [out, retval] pEp_STATUS * verify_status);
    48     [id(6)] HRESULT safeword([in] LONG value, [in, defaultvalue("en")] BSTR lang, [out, retval] BSTR * word);
    49     [id(7)] HRESULT safewords([in] BSTR fpr, [in, defaultvalue("en")] BSTR lang, [in, defaultvalue(0)] LONG max_words, [out, retval] BSTR * words);
    50 
    51     typedef enum _pEp_comm_type {
    52         pEp_ct_unknown = 0,
    53 
    54         // range 0x01 to 0x09: no encryption, 0x0a to 0x0e: nothing reasonable
    55 
    56         pEp_ct_no_encryption = 0x01,                // generic
    57         pEp_ct_no_encrypted_channel = 0x02,
    58         pEp_ct_key_not_found = 0x03,
    59         pEp_ct_key_expired = 0x04,
    60         pEp_ct_key_revoked = 0x05,
    61         pEp_ct_key_b0rken = 0x06,
    62         pEp_ct_my_key_not_included = 0x09,
    63 
    64         pEp_ct_security_by_obscurity = 0x0a,
    65         pEp_ct_b0rken_crypto = 0x0b,
    66         pEp_ct_key_too_short = 0x0e,
    67 
    68         pEp_ct_compromized = 0x0f,                  // known compromized connection
    69 
    70         // range 0x10 to 0x3f: unconfirmed encryption
    71 
    72         pEp_ct_unconfirmed_encryption = 0x10,       // generic
    73         pEp_ct_OpenPGP_1024_RSA_unconfirmed = 0x11,	// RSA 1024 is weak
    74         pEp_ct_OpenPGP_unconfirmed = 0x3f,          // key at least 2048 bit RSA
    75         // or 1024 bit DSA
    76 
    77         // range 0x40 to 0x7f: unconfirmed encryption and anonymization
    78 
    79         pEp_ct_unconfirmed_enc_anon = 0x40,         // generic
    80         pEp_ct_pEp_unconfirmed = 0x7f,
    81 
    82         pEp_ct_confirmed = 0x80,                    // this bit decides if trust is confirmed
    83 
    84         // range 0x81 to 0x8f: reserved
    85         // range 0x90 to 0xbf: confirmed encryption
    86 
    87         pEp_ct_confirmed_encryption = 0x90,         // generic
    88         pEp_ct_OpenPGP_1024_RSA = 0x91, // RSA 1024 is weak
    89         pEp_ct_OpenPGP = 0xbf, // key at least 2048 bit RSA or 1024 bit DSA
    90 
    91         // range 0xc0 to 0xff: confirmed encryption and anonymization
    92 
    93         pEp_ct_confirmed_enc_anon = 0xc0,           // generic
    94         pEp_ct_pEp = 0xff
    95     } pEp_comm_type;
    96 
    97     struct pEp_identity_s {
    98         BSTR address;
    99         BSTR fpr;
   100         BSTR user_id;
   101         BSTR username;
   102         pEp_comm_type comm_type;
   103         BSTR lang;
   104     };
   105 
   106     [id(8)] HRESULT get_identity([in] BSTR address, [out, retval] struct pEp_identity_s * ident);
   107     [id(9)] HRESULT set_identity([in] struct pEp_identity_s * ident);
   108     [id(10)] HRESULT generate_keypair([in] struct pEp_identity_s * ident, [out, retval] BSTR * fpr);
   109     [id(11)] HRESULT delete_keypair([in] BSTR fpr);
   110     [id(12)] HRESULT import_key([in] BSTR key_data);
   111     [id(13)] HRESULT import_key_b([in] SAFEARRAY(BYTE) key_data);
   112     [id(14)] HRESULT export_key([in] BSTR fpr, [out, retval] BSTR * key_data);
   113     [id(15)] HRESULT recv_key([in] BSTR pattern);
   114     [id(16)] HRESULT find_keys([in] BSTR pattern, [out, retval] SAFEARRAY(BSTR) * key_list);
   115     [id(17)] HRESULT send_key([in] BSTR pattern);
   116 
   117     [id(19)] HRESULT examine_identity([in] struct pEp_identity_s * ident);
   118     [id(20)] HRESULT examine_myself([in] struct pEp_identity_s * myself);
   119     [id(22)] HRESULT myself([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
   120     [id(23)] HRESULT update_identity([in] struct pEp_identity_s *ident, [out, retval] struct pEp_identity_s *result);
   121 };
   122 [
   123     uuid(3EC2E1A4-40E8-48E4-A7B0-1876D34F9462),
   124     version(1.0),
   125 ]
   126 library pEpCOMServerAdapterLib
   127 {
   128     importlib("stdole2.tlb");
   129     [
   130         uuid(B6BC9B8E-D9E2-4419-A3A4-7B4B58175549)
   131     ]
   132     dispinterface _IpEpEngineEvents
   133     {
   134     properties:
   135     methods:
   136     };
   137     [
   138         uuid(EF1B073D-5058-4E0E-829E-B4D22CA21EA2)
   139     ]
   140     coclass pEpEngine {
   141         [default] interface IpEpEngine;
   142         [default, source] dispinterface _IpEpEngineEvents;
   143     };
   144 };
   145