Hik*_*ndo 5 php email mime pgp signature
我正在尝试在 php 中使用 PGP 签署邮件。我可以使边界和标题正常工作,但邮件签名无效(如 Thunderbirds Enigmail 所述)。
我的问题是要签署哪些部分以及在签署时要注意什么。
目前生成的邮件的来源如下(文本和签名由占位符替换以使其易于阅读):
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--
Run Code Online (Sandbox Code Playgroud)
目前,以 & 开头的行用于生成签名。换行符只是换行(PHP_EOL)。
我尝试遵循 RFC2015 但这似乎不适用于多部分/替代内容。
请帮我解决这个问题,这样我才能完成。
我发现我自己...
首先,我需要将所有换行符转换为 CRLF,就像 RFC 状态一样。然后我需要将整个多部分/替代方案(包括其标头)视为要签名的消息。所以应该是:
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--
Run Code Online (Sandbox Code Playgroud)
其中以 & 开头的行是要签名的行。