Ticket #933: pkcs7-change-pad-char.patch
File pkcs7-change-pad-char.patch, 2.2 KB (added by , 5 years ago) |
---|
-
xpra/net/protocol.py
old new 318 318 proto_flags |= FLAGS_CIPHER 319 319 #note: since we are padding: l!=len(data) 320 320 padding_size = self.cipher_out_block_size - (len(data) % self.cipher_out_block_size) 321 padded = data+(" "*padding_size) 321 # pad byte value is number of padding bytes added 322 padded = data+(chr(padding_size)*padding_size) 322 323 actual_size = payload_size + padding_size 323 324 assert len(padded)==actual_size, "expected padded size to be %i, but got %i" % (len(padded), actual_size) 324 325 data = self.cipher_out.encrypt(padded) … … 741 742 return list(bytearray(s)) 742 743 except: 743 744 return list(str(s)) 744 padtext = " "*padding_size 745 # pad byte value is number of padding bytes added 746 padtext = chr(padding_size)*padding_size 745 747 if not data.endswith(padtext): 746 log("decryption failed: string does not end with '%s': %s (%s) -> %s (%s)", 747 padtext, debug_str(raw_string), type(raw_string), debug_str(data), type(data)) 748 self._internal_error("encryption error (wrong key?)") 749 return 748 old_padding = (self.cipher_in_block_size - data_size % self.cipher_in_block_size) * " " 749 if not data.endswith(old_padding): 750 log("decryption failed: string does not end with '%s' or '%s': %s (%s) -> %s (%s)", 751 padtext, old_padding, debug_str(raw_string), type(raw_string), debug_str(data), type(data)) 752 self._internal_error("encryption error (wrong key?)") 753 return 750 754 data = data[:-padding_size] 751 755 #uncompress if needed: 752 756 if compression_level>0: