

* 暗号化

[[multipart/encrypted媒体型]]で、 protocol パラメーターと
最初の部分を媒体型 application/pgp-encrypted とします。
その本文は、「Version: 1」とだけ書きます。
(と書かれてるけど、その後に *CRLF があっていいみたい。)

2番目の部分が、実際の暗号化データになります。
実質的なデータは全てこちらに含まれます。
'-----BEGIN PGP MESSAGE-----' で始まります。

See also [[PGPメッセージ交換形式]] (RFC 1991/2440)


* 署名

[[multipart/signed媒体型]]で、
protocol パラメーターと 2番目の部分を application/pgp-signature
にします。 '-----BEGIN PGP MESSAGE-----' で始まるデータです。

micalg パラメーターは、 "pgp-<hash-symbol>" と定義されてます。
RFC 2015 では <hash-symbol> は md5 と sha1 が定義されてます。
RFC 3156 は OpenPGP を参照しています。
See [[PGPメッセージ交換形式]]


** 署名する

1. データを用意する。 [[text/plain媒体型]]では CRLF 正規形で
適切な charset にする。 (たぶん、他の [[text/*媒体型]]でも
正規形にする必要がある。)

2. 必要なら CTE で 7bit データにする。この結果、改行は
CRLF 正規形になってなきゃあかん。

3. MIME 頭を追加。改行は CRLF だよ。 (しつこいね。)

4. 頭・本文の署名を計算。

5. 署名は署名したデータとは別個に生成され'''なければならず'''、
よって過程はいかなる方法でも署名したデータを
替えては'''いけません'''。


** 検証

1. CRLF 正規形に改行を変換

2. 頭・本文と PGP 署名を検証サービスに渡す


* 暗号化と署名

multipart/encrypted と multipart/signed を組み合わせてもいいし、
PGP にまとめてやらせてもいいらしい。


* 参考

RFC 2015 は PGP 公開鍵用の [[application/pgp-keys媒体型]]を定義しています。

- PGP/MIME 入門 by 山本和彦さん <http://pgp.iijlab.net/pgpmime/>

"PGP", "Pretty Good", "Pretty Good Privacy"
は幾つかの地域では Network Associates, Inc. の登録商標です。

[2]
[CITE[S/Mime and PGP Products and Interoperability]] ([CODE[1998-11-11 03:18:36 +09:00]] 版) <http://www.strom.com/places/smime.html>
([[名無しさん]])

[3]
[CITE[secure email-clients with PGP/MIME]] ([[Martin Bretschneider]] 著, [TIME[2007-01-08 06:55:41 +09:00]] 版) <http://www.bretschneidernet.de/tips/secmua.html.en>

[4] [CITE[MUA supported PGP and PGP/MIME]]
([TIME[2013-09-16 20:19:59 +09:00]] 版)
<http://www.cla-ri.net/pgp/pgp04.html>

[5] [CITE[Code Probrem]]
([TIME[2013-09-16 20:19:58 +09:00]] 版)
<http://www.cla-ri.net/pgp/pgp02.html>

[1] [CITE@ja[PGP/MIME 入門]]
([TIME[2014-06-17 15:23:25 +09:00]] 版)
<http://www.mew.org/~kazu/doc/pgpmime.html>