| from __future__ import (absolute_import, division, | |
| print_function, unicode_literals) | |
| from pyotp.hotp import HOTP # noqa | |
| from pyotp.otp import OTP # noqa | |
| from pyotp.totp import TOTP # noqa | |
| from . import utils # noqa | |
| def random_base32(length=16, random=None, | |
| chars=list('ABCDEFGHIJKLMNOPQRSTUVWXYZ234567')): | |
| # Use secrets module if available (Python version >= 3.6) per PEP 506 | |
| try: | |
| import secrets | |
| random = secrets.SystemRandom() | |
| except ImportError: | |
| import random as _random | |
| random = _random.SystemRandom() | |
| return ''.join( | |
| random.choice(chars) | |
| for _ in range(length) | |
| ) | |