Tôi hiện đang cố gắng thêm hỗ trợ ký PGP vào my small e-mail sending script (sử dụng mô-đun Python 3.x và python-gnupg).e-mail nhiều PGP ký với Python
Các mã ký thông điệp là:
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!')
(Ở đây basemsg
là email.message.Message
loại.)
Và messageFromSignature
chức năng là:
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
Sau đó, tôi thêm tất cả các tiêu đề cần thiết gửi tin nhắn (msg
) và gửi tin nhắn.
Tính năng này hoạt động tốt đối với các thư không phải đa phần, nhưng không thành công khi basemsg
là nhiều phần (multipart/alternative
hoặc multipart/mixed
).
Xác minh chữ ký theo cách thủ công đối với phần văn bản tương ứng, nhưng Evolution và Mutt báo cáo chữ ký là xấu.
Ai có thể vui lòng cho tôi biết nhầm lẫn của tôi không?
Bạn đã sửa chữa nó như thế nào? Có một nơi để thêm một dòng mới một cách dễ dàng, hoặc bạn đã phải monkeypatch email.generator? Tôi đang gặp vấn đề tương tự. – micah
@MicahLee Tôi đã không tìm thấy bất kỳ cách nào ngoài (khỉ-) vá 'email.generator'. –