2017-12-21 (Thu) [長年日記]
_ PGP/MIME
MournmailにPGP/MIMEを実装した(表示は前から一部実装してあった)。
mail-gpgを使って
m = Mail.new ... m.gpg(sign: true, encrypt: true) m.deliver
とすると、PGP/MIMEで署名・暗号化されたメールが送信されるが、delivery_handlerとして実装されているのでdeliver!
だと署名・暗号化されないので注意。*1
署名と暗号化の両方を行った場合は、multipart/encryptedの中にmultipart/signedを入れる形式*2ではなく、以下のようにOpenPGPで署名と暗号化を同時に行ったものをmultipart/encryptedにする形式*3になる。
Content-Type: multipart/encrypted; boundary="--==_mimepart_5a3b0cf4ac39a_8953ff49d912018280a"; protocol="application/pgp-encrypted" Content-Transfer-Encoding: 7bit This is an OpenPGP/MIME encrypted message (RFC 2440 and 3156) ----==_mimepart_5a3b0cf4ac39a_8953ff49d912018280a Content-Type: application/pgp-encrypted Content-Transfer-Encoding: 7bit Content-Description: PGP/MIME Versions Identification Version: 1 ----==_mimepart_5a3b0cf4ac39a_8953ff49d912018280a Content-Type: application/octet-stream; name=encrypted.asc Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename=encrypted.asc Content-Description: OpenPGP encrypted message Content-ID: <5a3b0cfbd80bc_8953ff49d9120182843b@lexington.mail> -----BEGIN PGP MESSAGE----- Version: GnuPG v2 hQIMA/zS+2ljaqfNARAA2Zh9f6f5Y55AfzRhCzMSe13R5EXBD6uI+R/VtQomhsag ... -----END PGP MESSAGE----- ----==_mimepart_5a3b0cf4ac39a_8953ff49d912018280a--
Mewでは署名を検証できたけど、SEMIだと署名の検証方法がわからなかった(UI的に署名されているかどうかもわからないような)。