Actualmente estoy tratando de agregar soporte de firma de PGP al my small e-mail sending script (que usa el módulo Python 3.xy el módulo python-gnupg).PGP-firmando correos electrónicos de varias partes con Python
El código que firma el mensaje es:
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!')
(Aquí basemsg
es de email.message.Message
tipo.)
Y messageFromSignature
función es:
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
Luego añadir todas las cabeceras necesarias al mensaje (msg
) y enviarlo.
Esto funciona bien para mensajes no multiparte, pero falla cuando basemsg
es multiparte (multipart/alternative
o multipart/mixed
).
Verificando manualmente la firma con respecto a la pieza de texto correspondiente funciona, pero Evolution y Mutt informan que la firma es incorrecta.
¿Alguien puede señalarme mi error?
¿Cómo terminaste arreglando? ¿Hay algún lugar para agregar una nueva línea fácilmente o tienes que enviar un correo electrónico a monkey.generator? Estoy teniendo el mismo problema. – micah
@MicahLee No he encontrado ninguna forma además de parche (mono) 'email.generator'. –