/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsIMailChannel.idl" #include "nsIStreamListener.idl" #include "nsIURI.idl" %{C++ typedef int (*MimeDecodeCallbackFun)(const char *buf, int32_t buf_size, int output_closure_type, void *output_closure); #define NS_PGPMIMEPROXY_CONTRACTID "@mozilla.org/mime/pgp-mime-decrypt;1" %} native MimeDecodeCallbackFun(MimeDecodeCallbackFun); /** * nsIPgpMimeProxy is a proxy for a (JS-)addon for OpenPGP/MIME decryption */ [scriptable, builtinclass, uuid(815c4fbe-0e7c-45b6-8324-f7044c7252ac)] interface nsIPgpMimeProxy : nsIStreamListener { /** * set the decoder callback into mimelib */ [noscript] void setMimeCallback(in MimeDecodeCallbackFun outputFun, in int32_t outputClosureType, in voidPtr outputClosure, in nsIURI myUri, in nsIMailChannel mailChannel); [noscript] void removeMimeCallback(); /** * init function */ void init(); /** * process encoded data received from mimelib */ void write(in string buf, in unsigned long count); /** * finish writing (EOF) from mimelib */ void finish(); /** * the listener that receives the OpenPGP/MIME data stream and decrypts * the message */ attribute nsIStreamListener decryptor; attribute ACString contentType; /** * holds the URI of the message currently being processed */ readonly attribute nsIURI messageURI; /** * The particular part number of the multipart object we are working on. The * numbering is the same as in URLs that use the form "...?part=1.1.2". * * The value stored in mimePart is only the number, e.g. "1" or "1.1.2" */ attribute ACString mimePart; /** * The application may restrict automatic decryption to the top level * MIME part ("1"). In certain scenarios the application may allow * a MIME part at another level ("nested") in the MIME tree to be * decrypted, too. If the current MIME part is a nested MIME part, * then this flag indicates whether automatic decryption is allowed. */ attribute boolean allowNestedDecrypt; /** * Pass the decrypted data back from the decryptor and onto to libMime. */ void outputDecryptedData(in string buf, in unsigned long count); readonly attribute nsIMailChannel mailChannel; }; ///////////////////////////////////////////////////////////////////////////////