You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trezor-firmware/core/tests/test_trezor.crypto.base32.py

47 lines
1.5 KiB

from common import *
from trezor.crypto import base32
class TestCryptoBase32(unittest.TestCase):
# test vectors from:
# https://tools.ietf.org/html/rfc4648
# https://github.com/emn178/hi-base32/blob/master/tests/test.js
vectors = [
(b'', ''),
(b'f', 'MY======'),
(b'fo', 'MZXQ===='),
(b'foo', 'MZXW6==='),
(b'foob', 'MZXW6YQ='),
(b'fooba', 'MZXW6YTB'),
(b'foobar', 'MZXW6YTBOI======'),
(b'H', 'JA======'),
(b'He', 'JBSQ===='),
(b'Hel', 'JBSWY==='),
(b'Hell', 'JBSWY3A='),
(b'Hello', 'JBSWY3DP'),
(b'zlutoucky kun upel dabelske ody', 'PJWHK5DPOVRWW6JANN2W4IDVOBSWYIDEMFRGK3DTNNSSA33EPE======'),
(b'中文', '4S4K3ZUWQ4======'), # noqa:E999
(b'中文1', '4S4K3ZUWQ4YQ===='), # noqa:E999
(b'中文12', '4S4K3ZUWQ4YTE==='), # noqa:E999
(b'aécio', 'MHB2SY3JN4======'), # noqa:E999
(b'𠜎', '6CQJZDQ='), # noqa:E999
(b'Base64是一種基於64個可列印字元來表示二進制資料的表示方法', # noqa:E999
'IJQXGZJWGTTJRL7EXCAOPKFO4WP3VZUWXQ3DJZMARPSY7L7FRCL6LDNQ4WWZPZMFQPSL5BXIUGUOPJF24S5IZ2MAWLSYRNXIWOD6NFUZ46NIJ2FBVDT2JOXGS246NM4V')
]
def test_encode(self):
for a, b in self.vectors:
self.assertEqual(base32.encode(a), b)
def test_decode(self):
for a, b in self.vectors:
self.assertEqual(base32.decode(b), a)
if __name__ == '__main__':
unittest.main()