summaryrefslogtreecommitdiffstats
path: root/Modules/sha256module.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-04-17 15:47:20 (GMT)
committerGitHub <noreply@github.com>2020-04-17 15:47:20 (GMT)
commit1ae035b7e847064d09df01ca62b8a761e9b5aae3 (patch)
treec19d137bda77399ba49996f69a14fce4029c8120 /Modules/sha256module.c
parent485e715cb1ff92bc9882cd51ec32589f9cb30503 (diff)
downloadcpython-1ae035b7e847064d09df01ca62b8a761e9b5aae3.zip
cpython-1ae035b7e847064d09df01ca62b8a761e9b5aae3.tar.gz
cpython-1ae035b7e847064d09df01ca62b8a761e9b5aae3.tar.bz2
bpo-40302: Add pycore_byteswap.h header file (GH-19552)
Add a new internal pycore_byteswap.h header file with the following functions: * _Py_bswap16() * _Py_bswap32() * _Py_bswap64() Use these functions in _ctypes, sha256 and sha512 modules, and also use in the UTF-32 encoder. sha256, sha512 and _ctypes modules are now built with the internal C API.
Diffstat (limited to 'Modules/sha256module.c')
-rw-r--r--Modules/sha256module.c17
1 files changed, 4 insertions, 13 deletions
diff --git a/Modules/sha256module.c b/Modules/sha256module.c
index 7310826..e0ff9b2 100644
--- a/Modules/sha256module.c
+++ b/Modules/sha256module.c
@@ -17,6 +17,7 @@
/* SHA objects */
#include "Python.h"
+#include "pycore_byteswap.h" // _Py_bswap32()
#include "structmember.h" // PyMemberDef
#include "hashlib.h"
#include "pystrhex.h"
@@ -30,12 +31,7 @@ class SHA256Type "SHAobject *" "&PyType_Type"
/* Some useful types */
typedef unsigned char SHA_BYTE;
-
-#if SIZEOF_INT == 4
-typedef unsigned int SHA_INT32; /* 32-bit integer */
-#else
-/* not defined. compilation will die. */
-#endif
+typedef uint32_t SHA_INT32; /* 32-bit integer */
/* The SHA block size and message digest sizes, in bytes */
@@ -61,14 +57,9 @@ typedef struct {
#if PY_LITTLE_ENDIAN
static void longReverse(SHA_INT32 *buffer, int byteCount)
{
- SHA_INT32 value;
-
byteCount /= sizeof(*buffer);
- while (byteCount--) {
- value = *buffer;
- value = ( ( value & 0xFF00FF00L ) >> 8 ) | \
- ( ( value & 0x00FF00FFL ) << 8 );
- *buffer++ = ( value << 16 ) | ( value >> 16 );
+ for (; byteCount--; buffer++) {
+ *buffer = _Py_bswap32(*buffer);
}
}
#endif