def run(self, edit, encode_type='b64encode'): fix_base32_padding = sublime.load_settings(SETTINGS_FILE).get("base32_fix_padding", False) print("Codec: fix base32 padding? %s" % str(fix_base32_padding)) fix_base64_padding = sublime.load_settings(SETTINGS_FILE).get("base64_fix_padding", False) print("Codec: fix base64 padding? %s" % str(fix_base64_padding)) for region in selected_regions(self.view): if not region.empty(): original_string = self.view.substr(region) # print("string: " + original_string) if 'b64encode' == encode_type: encoded_string = base64.b64encode(original_string.encode("UTF-8")) elif 'b64decode' == encode_type: encoded_string = codec_base64.b64decode(original_string.encode("UTF-8"), add_padding=fix_base64_padding) elif 'urlsafe_b64encode' == encode_type: encoded_string = base64.urlsafe_b64encode(original_string.encode("UTF-8")) elif 'urlsafe_b64decode' == encode_type: encoded_string = codec_base64.urlsafe_b64decode(original_string.encode("UTF-8"), add_padding=fix_base64_padding) elif 'b32encode' == encode_type: encoded_string = base64.b32encode(original_string.encode("UTF-8")) elif 'b32decode' == encode_type: encoded_string = codec_base64.b32decode(original_string.encode("UTF-8"), add_padding=fix_base32_padding) elif 'b16encode' == encode_type: encoded_string = base64.b16encode(original_string.encode("UTF-8")) elif 'b16decode' == encode_type: encoded_string = base64.b16decode(original_string.encode("UTF-8")) else: print("unsupported operation %s" % (encode_type,)) break # print("string encoded: " + str(encoded_string.decode("UTF-8"))) self.view.replace(edit, region, encoded_string.decode("UTF-8"))
def test_b64decode_correct_bad_padding(self): # fix the bad padding bad_padded_s = ' YWJjZGVmZ2g\n\n\n'.encode('UTF-8') expected = 'abcdefgh'.encode('UTF-8') self.assertEquals( expected, codec_base64.b64decode(bad_padded_s, add_padding=True))
def run(self, edit, encode_type='b64encode'): fix_base32_padding = sublime.load_settings(SETTINGS_FILE).get( "base32_fix_padding", False) print("Codec: fix base32 padding? %s" % str(fix_base32_padding)) fix_base64_padding = sublime.load_settings(SETTINGS_FILE).get( "base64_fix_padding", False) print("Codec: fix base64 padding? %s" % str(fix_base64_padding)) for region in selected_regions(self.view): if not region.empty(): original_string = self.view.substr(region) # print("string: " + original_string) if 'b64encode' == encode_type: encoded_string = base64.b64encode( original_string.encode("UTF-8")) elif 'b64decode' == encode_type: encoded_string = codec_base64.b64decode( original_string.encode("UTF-8"), add_padding=fix_base64_padding) elif 'urlsafe_b64encode' == encode_type: encoded_string = base64.urlsafe_b64encode( original_string.encode("UTF-8")) elif 'urlsafe_b64decode' == encode_type: encoded_string = codec_base64.urlsafe_b64decode( original_string.encode("UTF-8"), add_padding=fix_base64_padding) elif 'b32encode' == encode_type: encoded_string = base64.b32encode( original_string.encode("UTF-8")) elif 'b32decode' == encode_type: encoded_string = codec_base64.b32decode( original_string.encode("UTF-8"), add_padding=fix_base32_padding) elif 'b16encode' == encode_type: encoded_string = base64.b16encode( original_string.encode("UTF-8")) elif 'b16decode' == encode_type: encoded_string = base64.b16decode( original_string.encode("UTF-8")) else: print("unsupported operation %s" % (encode_type, )) break # print("string encoded: " + str(encoded_string.decode("UTF-8"))) self.view.replace(edit, region, encoded_string.decode("UTF-8"))
def test_b64decode_padding_is_none(self): # Pass None as the value for padding. The padding method should default back to None bad_padded_s = 'YWJjZGVmZ2hpamtsbW5vcHJzdHV2d3h5eg' with self.assertRaises(TypeError): codec_base64.b64decode(bad_padded_s, add_padding=None)
def test_b64decode_correct_bad_padding(self): # fix the bad padding bad_padded_s = ' YWJjZGVmZ2g\n\n\n' self.assertEquals('abcdefgh', codec_base64.b64decode(bad_padded_s, add_padding=True))
def test_b64decode_bad_padding(self): # don't fix the padding bad_padded_s = 'YWJjZGVmZ2hpamtsbW5vcHJzdHV2d3h5eg' with self.assertRaises(TypeError): codec_base64.b64decode(bad_padded_s)
def test_b64decode_padding_is_none(self): # Pass None as the value for padding. The padding method should default back to None bad_padded_s = 'YWJjZGVmZ2hpamtsbW5vcHJzdHV2d3h5eg'.encode('UTF-8') with self.assertRaises(Exception): codec_base64.b64decode(bad_padded_s, add_padding=None)
def test_b64decode_bad_padding(self): # don't fix the padding bad_padded_s = 'YWJjZGVmZ2hpamtsbW5vcHJzdHV2d3h5eg'.encode('UTF-8') with self.assertRaises(Exception): codec_base64.b64decode(bad_padded_s)