mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
#1466065: add validate option to base64.b64decode
Patch by Neil Tallim. This provides a mechanism for module users to achieve RFC 3548 compliance in the cases where ignoring non-base64-alphabet input characters is *not* mandated by the RFC that references RFC 3548.
This commit is contained in:
parent
49afa380fd
commit
6495136e40
4 changed files with 37 additions and 9 deletions
|
|
@ -138,9 +138,25 @@ class BaseXYTestCase(unittest.TestCase):
|
|||
eq(base64.urlsafe_b64decode(b'01a-b_cd'), b'\xd3V\xbeo\xf7\x1d')
|
||||
self.assertRaises(TypeError, base64.urlsafe_b64decode, "")
|
||||
|
||||
def test_b64decode_error(self):
|
||||
def test_b64decode_padding_error(self):
|
||||
self.assertRaises(binascii.Error, base64.b64decode, b'abc')
|
||||
|
||||
def test_b64decode_invalid_chars(self):
|
||||
# issue 1466065: Test some invalid characters.
|
||||
tests = ((b'%3d==', b'\xdd'),
|
||||
(b'$3d==', b'\xdd'),
|
||||
(b'[==', b''),
|
||||
(b'YW]3=', b'am'),
|
||||
(b'3{d==', b'\xdd'),
|
||||
(b'3d}==', b'\xdd'),
|
||||
(b'@@', b''),
|
||||
(b'!', b''),
|
||||
(b'YWJj\nYWI=', b'abcab'))
|
||||
for bstr, res in tests:
|
||||
self.assertEquals(base64.b64decode(bstr), res)
|
||||
with self.assertRaises(binascii.Error):
|
||||
base64.b64decode(bstr, validate=True)
|
||||
|
||||
def test_b32encode(self):
|
||||
eq = self.assertEqual
|
||||
eq(base64.b32encode(b''), b'')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue