現在、PGP署名のサポートをmy small e-mail sending script(Python 3.xとpython-gnupgモジュールを使用)に追加しようとしています。PGPで複数の電子メールをPythonで購読する
メッセージに署名し、コードされています(ここではbasemsg
email.message.Message
型である。)
gpg = gnupg.GPG()
basetext = basemsg.as_string().replace('\n', '\r\n')
signature = str(gpg.sign(basetext, detach=True))
if signature:
signmsg = messageFromSignature(signature)
msg = MIMEMultipart(_subtype="signed", micalg="pgp-sha1",
protocol="application/pgp-signature")
msg.attach(basemsg)
msg.attach(signmsg)
else:
print('Warning: failed to sign the message!')
そしてmessageFromSignature
機能は次のとおりです。
def messageFromSignature(signature):
message = Message()
message['Content-Type'] = 'application/pgp-signature; name="signature.asc"'
message['Content-Description'] = 'OpenPGP digital signature'
message.set_payload(signature)
return message
その後、私は必要なすべてのヘッダを追加メッセージ(msg
)に送信して送信します。
これはマルチパート以外のメッセージではうまく動作しますが、basemsg
がマルチパート(multipart/alternative
またはmultipart/mixed
)であると失敗します。
対応するテキストとの署名を手動で検証しますが、EvolutionとMuttは署名が悪いと報告します。
誰かが私の間違いを指摘できますか?
どうやってそれを修正しましたか?改行を簡単に追加する場所はありますか、またはemail.generatorをmonkeypatchしなければなりませんでしたか?私は同じ問題を抱えている。 – micah
@MicahLee私は 'email.generator'にパッチを当てる(猿のような)以外の方法はありませんでした。 –