From: Andrew Engelbrecht Date: Thu, 23 Jul 2015 16:06:08 +0000 (-0400) Subject: split up prepare_for_reply_pieces X-Git-Url: https://vcs.fsf.org/?a=commitdiff_plain;h=056837683f986f582a203261b04ac1ab46d3c785;p=edward.git split up prepare_for_reply_pieces also made changes to the way message blocks are handled. --- diff --git a/edward b/edward index b790a2a..625c9b9 100755 --- a/edward +++ b/edward @@ -334,38 +334,65 @@ def prepare_for_reply_pieces (eddymsg_obj, replyinfo_obj): pass elif piece.piece_type == "message": - if piece.gpg_data == None: - replyinfo_obj.failed_decrypt = True - else: - replyinfo_obj.success_decrypt = True + prepare_for_reply_message(piece, replyinfo_obj) - if replyinfo_obj.target_key != None: - continue - if piece.gpg_data.sigs != []: - replyinfo_obj.target_key = piece.gpg_data.sigs[0] - replyinfo_obj.msg_to_quote = flatten_payloads(piece.gpg_data.plainobj) + elif piece.piece_type == "pubkey": + prepare_for_reply_pubkey(piece, replyinfo_obj) - # to catch public keys in encrypted blocks - prepare_for_reply(piece.gpg_data.plainobj, replyinfo_obj) + elif (piece.piece_type == "clearsign") \ + or (piece.piece_type == "detachedsig"): + prepare_for_reply_sig(piece, replyinfo_obj) - elif piece.piece_type == "pubkey": - if piece.gpg_data == None or piece.gpg_data.keys == []: - replyinfo_obj.no_public_key = True - else: - replyinfo_obj.public_key_received = True - if replyinfo_obj.fallback_target_key == None: - replyinfo_obj.fallback_target_key = piece.gpg_data.keys[0] +def prepare_for_reply_message (piece, replyinfo_obj): - elif (piece.piece_type == "clearsign") \ - or (piece.piece_type == "detachedsig"): - if piece.gpg_data == None or piece.gpg_data.sigs == []: - replyinfo_obj.sig_failure = True - else: - replyinfo_obj.sig_success = True - - if replyinfo_obj.fallback_target_key == None: - replyinfo_obj.fallback_target_key = piece.gpg_data.sigs[0] + if piece.gpg_data == None: + replyinfo_obj.failed_decrypt = True + return + + if piece.gpg_data.decrypted == False: + prepare_for_reply_sig(piece, replyinfo_obj) + return + else: + replyinfo_obj.success_decrypt = True + + # we already have a key (and a message) + if replyinfo_obj.target_key != None: + return + + if piece.gpg_data.sigs != []: + replyinfo_obj.target_key = piece.gpg_data.sigs[0] + get_signed_part = False + else: + # only include a signed message in the reply. + get_signed_part = True + + replyinfo_obj.msg_to_quote = flatten_decrypted_payloads(piece.gpg_data.plainobj, get_signed_part) + + # to catch public keys in encrypted blocks + prepare_for_reply(piece.gpg_data.plainobj, replyinfo_obj) + + +def prepare_for_reply_pubkey (piece, replyinfo_obj): + + if piece.gpg_data == None or piece.gpg_data.keys == []: + replyinfo_obj.no_public_key = True + else: + replyinfo_obj.public_key_received = True + + if replyinfo_obj.fallback_target_key == None: + replyinfo_obj.fallback_target_key = piece.gpg_data.keys[0] + + +def prepare_for_reply_sig (piece, replyinfo_obj): + + if piece.gpg_data == None or piece.gpg_data.sigs == []: + replyinfo_obj.sig_failure = True + else: + replyinfo_obj.sig_success = True + + if replyinfo_obj.fallback_target_key == None: + replyinfo_obj.fallback_target_key = piece.gpg_data.sigs[0]