[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gnupg-users
Subject:    Sign a multipart/alternative mail
From:       Pascal Nitsche <pascal.nitsche () fansubcode ! org>
Date:       2011-10-26 9:18:35
Message-ID: 4EA7D06B.60601 () fansubcode ! org
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hello folks,

I'm trying to sign a mail of the mime type "multipart/alternative" using
pgp in PHP.
The generation of the signature and the correct boundaries works just
fine, but I can't bring it to generate a valid signature.

I think I'm missing something important here.

First of all I encode the text and html portions of the mail as
quoted-printable and replace every new line character with <CR><LF> as
to be found in the RFCs (which seem not to state anything about multipart).

Now I generate the signature of the complete mime part and put it into
its own mime part.

So now the mail looks like this (text, html and signature were replaced
by placeholders for readablility and not all of the mail headers are
shown since only the Content-Type should matter here):

    |Content-Type: multipart/signed; micalg=pgp-sha1; \
protocol="application/pgp-signature"; boundary="=_1b5364229a82b654fad7cf2aa969f02e"  \
MIME-Version: 1.0

    This is a message in Mime Format.  If you see this, your mail reader does not \
support this format.

    --=_1b5364229a82b654fad7cf2aa969f02e
    Content-Type: multipart/alternative;
      boundary="=_53ba9ef8c471e6c8d72f215feaad8033"
    Content-Transfer-Encoding: 7bit


    &--=_53ba9ef8c471e6c8d72f215feaad8033
    &Content-Type: text/plain; charset=UTF-8
    &Content-Transfer-Encoding: quoted-printable
    &
    &PLAIN TEXT CONTENT ENCODED IN QUOTED PRINTABLE
    & 
    &--=_53ba9ef8c471e6c8d72f215feaad8033
    &Content-Type: text/html; charset=UTF-8
    &Content-Transfer-Encoding: quoted-printable
    & 
    &HTML CONTENT ENCODED IN QUOTED PRINTABLE
    &
    &--=_53ba9ef8c471e6c8d72f215feaad8033--

    --=_1b5364229a82b654fad7cf2aa969f02e
    Content-Type: application/pgp-signature; name="signature.asc"
    Content-Disposition: attachment; filename="signature.asc"
    Content-Description: OpenPGP digital signature

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.11 (GNU/Linux)

    PGP SIGNATURE HERE
    -----END PGP SIGNATURE-----

    --=_1b5364229a82b654fad7cf2aa969f02e--

    |

The lines starting with the &-sign were used to generate the signature.

As stated I think I missed something or did not understand something
correctly so please light it up for me ;)

Thanks for your help in advance.

> > 
> > 

> > 


[Attachment #5 (text/html)]

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hello folks,<br>
    <br>
    I'm trying to sign a mail of the mime type "multipart/alternative"
    using pgp in PHP.<br>
    The generation of the signature and the correct boundaries works
    just fine, but I can't bring it to generate a valid signature.<br>
    <br>
    I think I'm missing something important here.<br>
    <br>
    First of all I encode the text and html portions of the mail as
    quoted-printable and replace every new line character with
    &lt;CR&gt;&lt;LF&gt; as to be found in the RFCs (which seem not to
    state anything about multipart).<br>
    <br>
    Now I generate the signature of the complete mime part and put it
    into its own mime part.<br>
    <br>
    So now the mail looks like this (text, html and signature were
    replaced by placeholders for readablility and not all of the mail
    headers are shown since only the Content-Type should matter here):<br>
    <br>
    <blockquote>
      <pre class="default prettyprint"><code><span class="typ">Content</span><span \
class="pun">-</span><span class="typ">Type</span><span class="pun">:</span><span \
class="pln"> multipart</span><span class="pun">/</span><span \
class="kwd">signed</span><span class="pun">;</span><span class="pln"> \
micalg</span><span class="pun">=</span><span class="pln">pgp</span><span \
class="pun">-</span><span class="pln">sha1</span><span class="pun">;</span><span \
class="pln"> protocol</span><span class="pun">=</span><span \
class="str">"application/pgp-signature"</span><span class="pun">;</span><span \
class="pln"> boundary</span><span class="pun">=</span><span \
class="str">"=_1b5364229a82b654fad7cf2aa969f02e"</span><span class="pln"> \
MIME</span><span class="pun">-</span><span class="typ">Version</span><span \
class="pun">:</span><span class="pln"> </span><span class="lit">1.0</span><span \
class="pln">

</span><span class="typ">This</span><span class="pln"> </span><span \
class="kwd">is</span><span class="pln"> a message </span><span \
class="kwd">in</span><span class="pln"> </span><span class="typ">Mime</span><span \
class="pln"> </span><span class="typ">Format</span><span class="pun">.</span><span \
class="pln">  </span><span class="typ">If</span><span class="pln"> you see \
</span><span class="kwd">this</span><span class="pun">,</span><span class="pln"> your \
mail reader does </span><span class="kwd">not</span><span class="pln"> support \
</span><span class="kwd">this</span><span class="pln"> format</span><span \
class="pun">.</span><span class="pln">

</span><span class="pun">--=</span><span \
class="pln">_1b5364229a82b654fad7cf2aa969f02e </span><span \
class="typ">Content</span><span class="pun">-</span><span \
class="typ">Type</span><span class="pun">:</span><span class="pln"> \
multipart</span><span class="pun">/</span><span class="pln">alternative</span><span \
class="pun">;</span><span class="pln">  boundary</span><span \
class="pun">=</span><span \
class="str">"=_53ba9ef8c471e6c8d72f215feaad8033"</span><span class="pln"> \
</span><span class="typ">Content</span><span class="pun">-</span><span \
class="typ">Transfer</span><span class="pun">-</span><span \
class="typ">Encoding</span><span class="pun">:</span><span class="pln"> </span><span \
class="lit">7bit</span><span class="pln">


</span><span class="pun">&amp;--=</span><span \
class="pln">_53ba9ef8c471e6c8d72f215feaad8033 </span><span \
class="pun">&amp;</span><span class="typ">Content</span><span \
class="pun">-</span><span class="typ">Type</span><span class="pun">:</span><span \
class="pln"> text</span><span class="pun">/</span><span class="pln">plain</span><span \
class="pun">;</span><span class="pln"> charset</span><span class="pun">=</span><span \
class="pln">UTF</span><span class="pun">-</span><span class="lit">8</span><span \
class="pln"> </span><span class="pun">&amp;</span><span \
class="typ">Content</span><span class="pun">-</span><span \
class="typ">Transfer</span><span class="pun">-</span><span \
class="typ">Encoding</span><span class="pun">:</span><span class="pln"> \
quoted</span><span class="pun">-</span><span class="pln">printable </span><span \
class="pun">&amp;</span><span class="pln"> </span><span class="pun">&amp;</span><span \
class="pln">PLAIN TEXT CONTENT ENCODED IN QUOTED PRINTABLE </span><span \
class="pun">&amp;</span><span class="pln">  </span><span \
class="pun">&amp;--=</span><span class="pln">_53ba9ef8c471e6c8d72f215feaad8033 \
</span><span class="pun">&amp;</span><span class="typ">Content</span><span \
class="pun">-</span><span class="typ">Type</span><span class="pun">:</span><span \
class="pln"> text</span><span class="pun">/</span><span class="pln">html</span><span \
class="pun">;</span><span class="pln"> charset</span><span class="pun">=</span><span \
class="pln">UTF</span><span class="pun">-</span><span class="lit">8</span><span \
class="pln"> </span><span class="pun">&amp;</span><span \
class="typ">Content</span><span class="pun">-</span><span \
class="typ">Transfer</span><span class="pun">-</span><span \
class="typ">Encoding</span><span class="pun">:</span><span class="pln"> \
quoted</span><span class="pun">-</span><span class="pln">printable </span><span \
class="pun">&amp;</span><span class="pln">  </span><span \
class="pun">&amp;</span><span class="pln">HTML CONTENT ENCODED IN QUOTED PRINTABLE \
&amp; </span><span class="pun">&amp;--=</span><span \
class="pln">_53ba9ef8c471e6c8d72f215feaad8033</span><span class="pun">--</span><span \
class="pln">

</span><span class="pun">--=</span><span \
class="pln">_1b5364229a82b654fad7cf2aa969f02e </span><span \
class="typ">Content</span><span class="pun">-</span><span \
class="typ">Type</span><span class="pun">:</span><span class="pln"> \
application</span><span class="pun">/</span><span class="pln">pgp</span><span \
class="pun">-</span><span class="pln">signature</span><span class="pun">;</span><span \
class="pln"> name</span><span class="pun">=</span><span \
class="str">"signature.asc"</span><span class="pln"> </span><span \
class="typ">Content</span><span class="pun">-</span><span \
class="typ">Disposition</span><span class="pun">:</span><span class="pln"> \
attachment</span><span class="pun">;</span><span class="pln"> filename</span><span \
class="pun">=</span><span class="str">"signature.asc"</span><span class="pln"> \
</span><span class="typ">Content</span><span class="pun">-</span><span \
class="typ">Description</span><span class="pun">:</span><span class="pln"> \
</span><span class="typ">OpenPGP</span><span class="pln"> digital signature

</span><span class="pun">-----</span><span class="kwd">BEGIN</span><span class="pln"> \
PGP SIGNATURE</span><span class="pun">-----</span><span class="pln"> </span><span \
class="typ">Version</span><span class="pun">:</span><span class="pln"> </span><span \
class="typ">GnuPG</span><span class="pln"> v1</span><span class="pun">.</span><span \
class="lit">4.11</span><span class="pln"> </span><span class="pun">(</span><span \
class="pln">GNU</span><span class="pun">/</span><span class="typ">Linux</span><span \
class="pun">)</span><span class="pln">

PGP SIGNATURE HERE
</span><span class="pun">-----</span><span class="kwd">END</span><span class="pln"> \
PGP SIGNATURE</span><span class="pun">-----</span><span class="pln">

</span><span class="pun">--=</span><span \
class="pln">_1b5364229a82b654fad7cf2aa969f02e</span><span class="pun">--

</span></code></pre>
    </blockquote>
    The lines starting with the &amp;-sign were used to generate the
    signature.<br>
    <br>
    As stated I think I missed something or did not understand something
    correctly so please light it up for me ;)<br>
    <br>
    Thanks for your help in advance.<br>
    <pre class="default prettyprint"><code><span class="pun"></span></code>
<code><span class="pun"></span></code></pre>
    <code><span class="pun"></span></code>
  </body>
</html>



_______________________________________________
Gnupg-users mailing list
Gnupg-users@gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-users


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic