diff options
author | Victor Stinner <vstinner@python.org> | 2020-04-17 15:47:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-17 15:47:20 (GMT) |
commit | 1ae035b7e847064d09df01ca62b8a761e9b5aae3 (patch) | |
tree | c19d137bda77399ba49996f69a14fce4029c8120 /Modules/sha256module.c | |
parent | 485e715cb1ff92bc9882cd51ec32589f9cb30503 (diff) | |
download | cpython-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.c | 17 |
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 |