summaryrefslogtreecommitdiff
path: root/Python/random.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/random.c')
-rw-r--r--Python/random.c24
1 files changed, 9 insertions, 15 deletions
diff --git a/Python/random.c b/Python/random.c
index 825260f36b..337be86087 100644
--- a/Python/random.c
+++ b/Python/random.c
@@ -165,8 +165,12 @@ dev_urandom_python(char *buffer, Py_ssize_t size)
Py_END_ALLOW_THREADS
if (fd < 0)
{
- PyErr_SetString(PyExc_NotImplementedError,
- "/dev/urandom (or equivalent) not found");
+ if (errno == ENOENT || errno == ENXIO ||
+ errno == ENODEV || errno == EACCES)
+ PyErr_SetString(PyExc_NotImplementedError,
+ "/dev/urandom (or equivalent) not found");
+ else
+ PyErr_SetFromErrno(PyExc_OSError);
return -1;
}
@@ -220,8 +224,9 @@ lcg_urandom(unsigned int x0, unsigned char *buffer, size_t size)
}
}
-/* Fill buffer with size pseudo-random bytes, not suitable for cryptographic
- use, from the operating random number generator (RNG).
+/* Fill buffer with size pseudo-random bytes from the operating system random
+ number generator (RNG). It is suitable for for most cryptographic purposes
+ except long living private keys for asymmetric encryption.
Return 0 on success, raise an exception and return -1 on error. */
int
@@ -258,17 +263,6 @@ _PyRandom_Init(void)
_Py_HashSecret_Initialized = 1;
/*
- By default, hash randomization is disabled, and only
- enabled if PYTHONHASHSEED is set to non-empty or if
- "-R" is provided at the command line:
- */
- if (!Py_HashRandomizationFlag) {
- /* Disable the randomized hash: */
- memset(secret, 0, secret_size);
- return;
- }
-
- /*
Hash randomization is enabled. Generate a per-process secret,
using PYTHONHASHSEED if provided.
*/