Attualmente sto cercando di aggiungere il supporto per la firma PGP a my small e-mail sending script (che utilizza il modulo Python 3.xe python-gnupg).E-mail multiparte con firma PGP con Python
Il codice che firma messaggio è:
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!')
(Qui basemsg
è di email.message.Message
tipo.)
E messageFromSignature
funzione è:
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
poi aggiungo tutti gli header necessari al messaggio (msg
) e inviarlo.
Questo funziona bene per messaggi non multipart, ma non riesce quando basemsg
è multipart (multipart/alternative
o multipart/mixed
).
Verificare manualmente la firma rispetto alla parte di testo corrispondente, ma Evolution e Mutt riportano che la firma è errata.
Qualcuno può indicarmi il mio errore?
Come hai fatto a risolverlo? C'è un posto per aggiungere facilmente una nuova riga, o hai dovuto monkeypatch email.generator? Sto avendo lo stesso problema. – micah
@MicahLee Non ho trovato alcun modo oltre a (scimmia-) patching 'email.generator'. –