OXIESEC PANEL
- Current Dir:
/
/
usr
/
lib
/
python3
/
dist-packages
/
twisted
/
python
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
__init__.py
674 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📁
__pycache__
-
03/31/2022 06:22:39 AM
rwxr-xr-x
📄
_appdirs.py
788 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
_inotify.py
3.37 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_oldstyle.py
2.53 KB
09/08/2017 10:38:35 AM
rw-r--r--
📁
_pydoctortemplates
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
_release.py
18.03 KB
09/08/2017 10:38:35 AM
rw-r--r--
📄
_sendmsg.c
15.42 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_setup.py
12.6 KB
09/23/2017 05:51:46 AM
rw-r--r--
📄
_shellcomp.py
23.76 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_textattributes.py
8.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_tzhelper.py
3.12 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
_url.py
253 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
compat.py
21.91 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
components.py
13.96 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
constants.py
544 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
context.py
3.93 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
deprecate.py
26.15 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
failure.py
23.38 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
fakepwd.py
5.99 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
filepath.py
57.51 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
formmethod.py
11.19 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
htmlizer.py
3.27 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
lockfile.py
7.54 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
log.py
21.95 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
logfile.py
9.85 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
modules.py
26.5 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
monkey.py
2.17 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
procutils.py
1.39 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
randbytes.py
3.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
rebuild.py
9.04 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
reflect.py
19.02 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
release.py
1.16 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
roots.py
7.23 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
runtime.py
6.13 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
sendmsg.py
3.34 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
shortcut.py
2.2 KB
09/08/2017 10:38:35 AM
rw-r--r--
📄
syslog.py
3.64 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
systemd.py
2.77 KB
09/08/2017 10:38:36 AM
rw-r--r--
📁
test
-
03/31/2022 06:22:38 AM
rwxr-xr-x
📄
text.py
5.35 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
threadable.py
3.22 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
threadpool.py
9.61 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
twisted-completion.zsh
1.33 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
url.py
244 bytes
09/08/2017 10:38:36 AM
rw-r--r--
📄
urlpath.py
8.87 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
usage.py
34.19 KB
03/22/2022 11:03:56 AM
rw-r--r--
📄
util.py
27.29 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
versions.py
322 bytes
09/08/2017 10:38:35 AM
rw-r--r--
📄
win32.py
5.42 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
zippath.py
9.02 KB
09/08/2017 10:38:36 AM
rw-r--r--
📄
zipstream.py
9.53 KB
09/08/2017 10:38:36 AM
rw-r--r--
Editing: randbytes.py
Close
# -*- test-case-name: twisted.test.test_randbytes -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Cryptographically secure random implementation, with fallback on normal random. """ from __future__ import division, absolute_import import warnings, os, random, string from twisted.python.compat import _PY3 getrandbits = getattr(random, 'getrandbits', None) if _PY3: _fromhex = bytes.fromhex else: def _fromhex(hexBytes): return hexBytes.decode('hex') class SecureRandomNotAvailable(RuntimeError): """ Exception raised when no secure random algorithm is found. """ class SourceNotAvailable(RuntimeError): """ Internal exception used when a specific random source is not available. """ class RandomFactory(object): """ Factory providing L{secureRandom} and L{insecureRandom} methods. You shouldn't have to instantiate this class, use the module level functions instead: it is an implementation detail and could be removed or changed arbitrarily. """ # This variable is no longer used, and will eventually be removed. randomSources = () getrandbits = getrandbits def _osUrandom(self, nbytes): """ Wrapper around C{os.urandom} that cleanly manage its absence. """ try: return os.urandom(nbytes) except (AttributeError, NotImplementedError) as e: raise SourceNotAvailable(e) def secureRandom(self, nbytes, fallback=False): """ Return a number of secure random bytes. @param nbytes: number of bytes to generate. @type nbytes: C{int} @param fallback: Whether the function should fallback on non-secure random or not. Default to C{False}. @type fallback: C{bool} @return: a string of random bytes. @rtype: C{str} """ try: return self._osUrandom(nbytes) except SourceNotAvailable: pass if fallback: warnings.warn( "urandom unavailable - " "proceeding with non-cryptographically secure random source", category=RuntimeWarning, stacklevel=2) return self.insecureRandom(nbytes) else: raise SecureRandomNotAvailable("No secure random source available") def _randBits(self, nbytes): """ Wrapper around C{os.getrandbits}. """ if self.getrandbits is not None: n = self.getrandbits(nbytes * 8) hexBytes = ("%%0%dx" % (nbytes * 2)) % n return _fromhex(hexBytes) raise SourceNotAvailable("random.getrandbits is not available") if _PY3: _maketrans = bytes.maketrans def _randModule(self, nbytes): """ Wrapper around the C{random} module. """ return b"".join([ bytes([random.choice(self._BYTES)]) for i in range(nbytes)]) else: _maketrans = string.maketrans def _randModule(self, nbytes): """ Wrapper around the C{random} module. """ return b"".join([ random.choice(self._BYTES) for i in range(nbytes)]) _BYTES = _maketrans(b'', b'') def insecureRandom(self, nbytes): """ Return a number of non secure random bytes. @param nbytes: number of bytes to generate. @type nbytes: C{int} @return: a string of random bytes. @rtype: C{str} """ for src in ("_randBits", "_randModule"): try: return getattr(self, src)(nbytes) except SourceNotAvailable: pass factory = RandomFactory() secureRandom = factory.secureRandom insecureRandom = factory.insecureRandom del factory __all__ = ["secureRandom", "insecureRandom", "SecureRandomNotAvailable"]