mirror of
https://github.com/python/cpython.git
synced 2025-10-10 08:53:14 +00:00
gh-94199: Remove ssl.RAND_pseudo_bytes() function (#94202)
Remove the ssl.RAND_pseudo_bytes() function, deprecated in Python 3.6: use os.urandom() or ssl.RAND_bytes() instead.
This commit is contained in:
parent
6e33ba114f
commit
d435a18c53
7 changed files with 11 additions and 81 deletions
|
@ -311,27 +311,6 @@ Random generation
|
||||||
|
|
||||||
.. versionadded:: 3.3
|
.. versionadded:: 3.3
|
||||||
|
|
||||||
.. function:: RAND_pseudo_bytes(num)
|
|
||||||
|
|
||||||
Return (bytes, is_cryptographic): bytes are *num* pseudo-random bytes,
|
|
||||||
is_cryptographic is ``True`` if the bytes generated are cryptographically
|
|
||||||
strong. Raises an :class:`SSLError` if the operation is not supported by the
|
|
||||||
current RAND method.
|
|
||||||
|
|
||||||
Generated pseudo-random byte sequences will be unique if they are of
|
|
||||||
sufficient length, but are not necessarily unpredictable. They can be used
|
|
||||||
for non-cryptographic purposes and for certain purposes in cryptographic
|
|
||||||
protocols, but usually not for key generation etc.
|
|
||||||
|
|
||||||
For almost all applications :func:`os.urandom` is preferable.
|
|
||||||
|
|
||||||
.. versionadded:: 3.3
|
|
||||||
|
|
||||||
.. deprecated:: 3.6
|
|
||||||
|
|
||||||
OpenSSL has deprecated :func:`ssl.RAND_pseudo_bytes`, use
|
|
||||||
:func:`ssl.RAND_bytes` instead.
|
|
||||||
|
|
||||||
.. function:: RAND_status()
|
.. function:: RAND_status()
|
||||||
|
|
||||||
Return ``True`` if the SSL pseudo-random number generator has been seeded
|
Return ``True`` if the SSL pseudo-random number generator has been seeded
|
||||||
|
@ -2717,8 +2696,8 @@ for example the :mod:`multiprocessing` or :mod:`concurrent.futures` modules),
|
||||||
be aware that OpenSSL's internal random number generator does not properly
|
be aware that OpenSSL's internal random number generator does not properly
|
||||||
handle forked processes. Applications must change the PRNG state of the
|
handle forked processes. Applications must change the PRNG state of the
|
||||||
parent process if they use any SSL feature with :func:`os.fork`. Any
|
parent process if they use any SSL feature with :func:`os.fork`. Any
|
||||||
successful call of :func:`~ssl.RAND_add`, :func:`~ssl.RAND_bytes` or
|
successful call of :func:`~ssl.RAND_add` or :func:`~ssl.RAND_bytes` is
|
||||||
:func:`~ssl.RAND_pseudo_bytes` is sufficient.
|
sufficient.
|
||||||
|
|
||||||
|
|
||||||
.. _ssl-tlsv1_3:
|
.. _ssl-tlsv1_3:
|
||||||
|
|
|
@ -214,6 +214,10 @@ Removed
|
||||||
also a static method.
|
also a static method.
|
||||||
(Contributed by Victor Stinner in :gh:`94169`.)
|
(Contributed by Victor Stinner in :gh:`94169`.)
|
||||||
|
|
||||||
|
* Remove the :func:`ssl.RAND_pseudo_bytes` function, deprecated in Python 3.6:
|
||||||
|
use :func:`os.urandom` or :func:`ssl.RAND_bytes` instead.
|
||||||
|
(Contributed by Victor Stinner in :gh:`94199`.)
|
||||||
|
|
||||||
|
|
||||||
Porting to Python 3.12
|
Porting to Python 3.12
|
||||||
======================
|
======================
|
||||||
|
|
|
@ -106,7 +106,7 @@ from _ssl import (
|
||||||
SSLSyscallError, SSLEOFError, SSLCertVerificationError
|
SSLSyscallError, SSLEOFError, SSLCertVerificationError
|
||||||
)
|
)
|
||||||
from _ssl import txt2obj as _txt2obj, nid2obj as _nid2obj
|
from _ssl import txt2obj as _txt2obj, nid2obj as _nid2obj
|
||||||
from _ssl import RAND_status, RAND_add, RAND_bytes, RAND_pseudo_bytes
|
from _ssl import RAND_status, RAND_add, RAND_bytes
|
||||||
try:
|
try:
|
||||||
from _ssl import RAND_egd
|
from _ssl import RAND_egd
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|
|
@ -382,10 +382,6 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
% (v, (v and "sufficient randomness") or
|
% (v, (v and "sufficient randomness") or
|
||||||
"insufficient randomness"))
|
"insufficient randomness"))
|
||||||
|
|
||||||
with warnings_helper.check_warnings():
|
|
||||||
data, is_cryptographic = ssl.RAND_pseudo_bytes(16)
|
|
||||||
self.assertEqual(len(data), 16)
|
|
||||||
self.assertEqual(is_cryptographic, v == 1)
|
|
||||||
if v:
|
if v:
|
||||||
data = ssl.RAND_bytes(16)
|
data = ssl.RAND_bytes(16)
|
||||||
self.assertEqual(len(data), 16)
|
self.assertEqual(len(data), 16)
|
||||||
|
@ -394,8 +390,6 @@ class BasicSocketTests(unittest.TestCase):
|
||||||
|
|
||||||
# negative num is invalid
|
# negative num is invalid
|
||||||
self.assertRaises(ValueError, ssl.RAND_bytes, -5)
|
self.assertRaises(ValueError, ssl.RAND_bytes, -5)
|
||||||
with warnings_helper.check_warnings():
|
|
||||||
self.assertRaises(ValueError, ssl.RAND_pseudo_bytes, -5)
|
|
||||||
|
|
||||||
ssl.RAND_add("this is a random string", 75.0)
|
ssl.RAND_add("this is a random string", 75.0)
|
||||||
ssl.RAND_add(b"this is a random bytes object", 75.0)
|
ssl.RAND_add(b"this is a random bytes object", 75.0)
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
Remove the :func:`ssl.RAND_pseudo_bytes` function, deprecated in Python 3.6:
|
||||||
|
use :func:`os.urandom` or :func:`ssl.RAND_bytes` instead. Patch by Victor
|
||||||
|
Stinner.
|
|
@ -5158,24 +5158,6 @@ _ssl_RAND_bytes_impl(PyObject *module, int n)
|
||||||
return PySSL_RAND(module, n, 0);
|
return PySSL_RAND(module, n, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*[clinic input]
|
|
||||||
_ssl.RAND_pseudo_bytes
|
|
||||||
n: int
|
|
||||||
/
|
|
||||||
|
|
||||||
Generate n pseudo-random bytes.
|
|
||||||
|
|
||||||
Return a pair (bytes, is_cryptographic). is_cryptographic is True
|
|
||||||
if the bytes generated are cryptographically strong.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
_ssl_RAND_pseudo_bytes_impl(PyObject *module, int n)
|
|
||||||
/*[clinic end generated code: output=b1509e937000e52d input=58312bd53f9bbdd0]*/
|
|
||||||
{
|
|
||||||
PY_SSL_DEPRECATED("ssl.RAND_pseudo_bytes() is deprecated", 1, NULL);
|
|
||||||
return PySSL_RAND(module, n, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
_ssl.RAND_status
|
_ssl.RAND_status
|
||||||
|
@ -5634,7 +5616,6 @@ static PyMethodDef PySSL_methods[] = {
|
||||||
_SSL__TEST_DECODE_CERT_METHODDEF
|
_SSL__TEST_DECODE_CERT_METHODDEF
|
||||||
_SSL_RAND_ADD_METHODDEF
|
_SSL_RAND_ADD_METHODDEF
|
||||||
_SSL_RAND_BYTES_METHODDEF
|
_SSL_RAND_BYTES_METHODDEF
|
||||||
_SSL_RAND_PSEUDO_BYTES_METHODDEF
|
|
||||||
_SSL_RAND_STATUS_METHODDEF
|
_SSL_RAND_STATUS_METHODDEF
|
||||||
_SSL_GET_DEFAULT_VERIFY_PATHS_METHODDEF
|
_SSL_GET_DEFAULT_VERIFY_PATHS_METHODDEF
|
||||||
_SSL_ENUM_CERTIFICATES_METHODDEF
|
_SSL_ENUM_CERTIFICATES_METHODDEF
|
||||||
|
|
33
Modules/clinic/_ssl.c.h
generated
33
Modules/clinic/_ssl.c.h
generated
|
@ -1090,37 +1090,6 @@ exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(_ssl_RAND_pseudo_bytes__doc__,
|
|
||||||
"RAND_pseudo_bytes($module, n, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Generate n pseudo-random bytes.\n"
|
|
||||||
"\n"
|
|
||||||
"Return a pair (bytes, is_cryptographic). is_cryptographic is True\n"
|
|
||||||
"if the bytes generated are cryptographically strong.");
|
|
||||||
|
|
||||||
#define _SSL_RAND_PSEUDO_BYTES_METHODDEF \
|
|
||||||
{"RAND_pseudo_bytes", (PyCFunction)_ssl_RAND_pseudo_bytes, METH_O, _ssl_RAND_pseudo_bytes__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
_ssl_RAND_pseudo_bytes_impl(PyObject *module, int n);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
_ssl_RAND_pseudo_bytes(PyObject *module, PyObject *arg)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
n = _PyLong_AsInt(arg);
|
|
||||||
if (n == -1 && PyErr_Occurred()) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
return_value = _ssl_RAND_pseudo_bytes_impl(module, n);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(_ssl_RAND_status__doc__,
|
PyDoc_STRVAR(_ssl_RAND_status__doc__,
|
||||||
"RAND_status($module, /)\n"
|
"RAND_status($module, /)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -1361,4 +1330,4 @@ exit:
|
||||||
#ifndef _SSL_ENUM_CRLS_METHODDEF
|
#ifndef _SSL_ENUM_CRLS_METHODDEF
|
||||||
#define _SSL_ENUM_CRLS_METHODDEF
|
#define _SSL_ENUM_CRLS_METHODDEF
|
||||||
#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
|
#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
|
||||||
/*[clinic end generated code: output=2a488dd0cbc777df input=a9049054013a1b77]*/
|
/*[clinic end generated code: output=9d806f8ff4a06ed3 input=a9049054013a1b77]*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue