X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=userdir_gpg.py;fp=userdir_gpg.py;h=b84a76d8fda2524aecac95d283a4caae2449e330;hp=a6bfa550b1ae1de1802d184a94e0fdb72442038b;hb=b00b7eec003232f689b194f8d2ab7d03c74cc78d;hpb=04828a224154b398e86c5d4800735ebe24658c74 diff --git a/userdir_gpg.py b/userdir_gpg.py index a6bfa55..b84a76d 100644 --- a/userdir_gpg.py +++ b/userdir_gpg.py @@ -77,13 +77,23 @@ def SetKeyrings(Rings): # # Paranoid will check the message text to make sure that all the plaintext is # in fact signed (bounded by a PGP packet) -def GetClearSig(Msg,Paranoid = 0): +# +# lax_multipart: treat multipart bodies other than multipart/signed +# as one big plain text body +def GetClearSig(Msg, Paranoid = 0, lax_multipart = False): if not Msg.__class__ == email.message.Message: raise RuntimeError, "GetClearSign() not called with a email.message.Message" + if Paranoid and lax_multipart: + raise RuntimeError, "Paranoid and lax_multipart don't mix well" + # See if this is a MIME encoded multipart signed message if Msg.is_multipart(): if not Msg.get_content_type() == "multipart/signed": + if lax_multipart: + payloads = Msg.get_payload() + msg = "\n".join(map( lambda p: p.get_payload(decode=True), payloads)) + return (msg, 0) raise UDFormatError, "Cannot handle multipart messages not of type multipart/signed"; if Paranoid: