Hi, I'm for the second solution. As roundcube already handle encrypted mail (to display an error), why not patch the core who, if an encryption plugin is available, use it ?
Regards, On Thursday 06 August 2009, Jonas Meurer <[email protected]> wrote : > hey again, > > On 29/07/2009 Thomas Bruederli wrote: > > We would certainly appreciate a plugin-based solution for PGP support. > > Due lack of time we didn't start to code one ourselves but you'll get any > > support you need. I think some more plugin-hooks are required to make > > this work since encrypted message parts are currently just ignored. > > after reading parts of roundcube code (especially rcube_message.php) > several times and thinking about the possibilities to implement a crypt > plugin here are my current ideas: > > i guess it will be very hard to implement a plugin that adds full > support for encrypted and signed messages to roundcube. the reason is, > that rcube_message.php already does a lot of message/mime parsing, and > i doubt that there's _one_ best place in parse_structure() where > potentially encrypted and/or signed message could be given to the > plugin via hook. that's due to the reason that messages with encrypted > and/or signed parts could have any possible structure, with or without > mime parts, with or without attachments and so on. > > so from what i see now, the plugin would have to parse messages the > following way: > > func parse_mime(mime_part): > if (Content-Type == multipart/mixed): > foreach($mime_parts as $part): > parse_mime(mime_part) > else if (Content-Type == multipart/encrypted): > decrypt_mime(mime_part_2) > else if (Content-Type == multipart/signed): > verify_mime(mime_part_1, mime_part_2) > else if (Content-Disposition contains 'attachment'): > if (Content-Type contains 'pgp'): > parse_mime_attachment(mime_part) > > func parse_attachment(mime_part): > if (Content-Transfer-Encoding == 'base64'): > attachment = convert_from_base64(mime_part) > else if (Content-Transfer-Encoding == 'quoted-printable'): > attachment= convert_from_QP(mime_part) > decrypt(attachment) > > func parse_inline(msg): > if (msg contains 'BEGIN PGP MESSAGE'): > crypt_msg = grep_inline_crypt_msg(msg) > decrypt_inline(crypt_msg) > if (msg contains 'BEGIN PGP SIGNED MESSAGE'): > signed_msg = grep_inline_signed_msg(msg) > verify_inline(signed_msg) > > if (mime_message): > parse_mime(msg) > else: > parse_inline(msg) > > > as you can see a lot of this parsing is already implemented in roundcube > [rcube_message.php / parse_structure()]. thus we either would have to > reinvent the wheel in the crypt plugin, or add lots of additional hooks. > > as both are not clean solutions, i see two solutions: > > (1) redesign the whole message parsing code from roundcube > or > (2) implement the missing parsing code to detect and isolate encrypted > and/or signed messages/attachments, regardless whether they're inline or > mime, and only give the pure encrypted/signed text/attachment/whatever > to the plugin. > > i would highly appreciate comments on that thoughts :-) > > greetings, > jonas > > > > --- 8< --- detachments --- 8< --- > The following attachments have been detached and are available for > viewing. http://detached.gigo.com/rc/q9/h3g6iWvS/signature.asc > Only click these links if you trust the sender, as well as this message. > --- 8< --- detachments --- 8< --- -- Maximilien Cuony [The_Glu] http://theglu.org --- 8< --- detachments --- 8< --- The following attachments have been detached and are available for viewing. http://detached.gigo.com/rc/rB/AM0FLYw+/signature.asc Only click these links if you trust the sender, as well as this message. --- 8< --- detachments --- 8< ---
_______________________________________________ List info: http://lists.roundcube.net/dev/
