https://github.com/python/cpython/commit/621a8bd6a8d97cf4c628f8a0b869ff0e83930319
commit: 621a8bd6a8d97cf4c628f8a0b869ff0e83930319
branch: main
author: Bénédikt Tran <10796600+picn...@users.noreply.github.com>
committer: picnixz <10796600+picn...@users.noreply.github.com>
date: 2025-06-22T20:04:38Z
summary:

gh-135532: cleanup clinic `module` directives for cryptographic modules 
(#135822)

files:
M Modules/_hashopenssl.c
M Modules/blake2module.c
M Modules/md5module.c
M Modules/sha1module.c
M Modules/sha2module.c
M Modules/sha3module.c

diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 0fe69ee8fac835..90a7391ebb09af 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -255,7 +255,8 @@ py_hashentry_table_new(void) {
     return NULL;
 }
 
-/* Module state */
+// --- Module state -----------------------------------------------------------
+
 static PyModuleDef _hashlibmodule;
 
 typedef struct {
@@ -277,6 +278,8 @@ get_hashlib_state(PyObject *module)
     return (_hashlibstate *)state;
 }
 
+// --- Module objects ---------------------------------------------------------
+
 typedef struct {
     HASHLIB_OBJECT_HEAD
     EVP_MD_CTX *ctx;    /* OpenSSL message digest context */
@@ -291,15 +294,17 @@ typedef struct {
 
 #define HMACobject_CAST(op) ((HMACobject *)(op))
 
-#include "clinic/_hashopenssl.c.h"
+// --- Module clinic configuration --------------------------------------------
+
 /*[clinic input]
 module _hashlib
-class _hashlib.HASH "HASHobject *" "((_hashlibstate 
*)PyModule_GetState(module))->HASH_type"
-class _hashlib.HASHXOF "HASHobject *" "((_hashlibstate 
*)PyModule_GetState(module))->HASHXOF_type"
-class _hashlib.HMAC "HMACobject *" "((_hashlibstate 
*)PyModule_GetState(module))->HMAC_type"
+class _hashlib.HASH "HASHobject *" "&PyType_Type"
+class _hashlib.HASHXOF "HASHobject *" "&PyType_Type"
+class _hashlib.HMAC "HMACobject *" "&PyType_Type"
 [clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=eb805ce4b90b1b31]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6b5c9ce5c28bdc58]*/
 
+#include "clinic/_hashopenssl.c.h"
 
 /* LCOV_EXCL_START */
 
diff --git a/Modules/blake2module.c b/Modules/blake2module.c
index 295bca07650916..6c4349ac06bb8a 100644
--- a/Modules/blake2module.c
+++ b/Modules/blake2module.c
@@ -2,6 +2,7 @@
  * Written in 2013 by Dmitry Chestnykh <dmi...@codingrobots.com>
  * Modified for CPython by Christian Heimes <christ...@python.org>
  * Updated to use HACL* by Jonathan Protzenko <jonat...@protzenko.fr>
+ * Additional work by Bénédikt Tran <10796600+picn...@users.noreply.github.com>
  *
  * To the extent possible under law, the author have dedicated all
  * copyright and related and neighboring rights to this software to
@@ -368,15 +369,18 @@ typedef struct {
 
 #define _Blake2Object_CAST(op)  ((Blake2Object *)(op))
 
-#include "clinic/blake2module.c.h"
+// --- Module clinic configuration --------------------------------------------
 
 /*[clinic input]
 module _blake2
-class _blake2.blake2b "Blake2Object *" "&PyBlake2_BLAKE2bType"
-class _blake2.blake2s "Blake2Object *" "&PyBlake2_BLAKE2sType"
+class _blake2.blake2b "Blake2Object *" "&PyType_Type"
+class _blake2.blake2s "Blake2Object *" "&PyType_Type"
 [clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b7526666bd18af83]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=86b0972b0c41b3d0]*/
+
+#include "clinic/blake2module.c.h"
 
+// --- BLAKE-2 object interface -----------------------------------------------
 
 static Blake2Object *
 new_Blake2Object(PyTypeObject *type)
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 5dac3a91f4f09d..8b6dd4a8195dfb 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -8,6 +8,7 @@
    Andrew Kuchling (a...@amk.ca)
    Greg Stein (gst...@lyra.org)
    Trevor Perrin (tr...@trevp.net)
+   Bénédikt Tran (10796600+picn...@users.noreply.github.com)
 
    Copyright (C) 2005-2007   Gregory P. Smith (g...@krypto.org)
    Licensed to PSF under a Contributor Agreement.
@@ -25,18 +26,14 @@
 
 #include "hashlib.h"
 
-/*[clinic input]
-module _md5
-class MD5Type "MD5object *" "&PyType_Type"
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
+#include "_hacl/Hacl_Hash_MD5.h"
 
 /* The MD5 block size and message digest sizes, in bytes */
 
 #define MD5_BLOCKSIZE    64
 #define MD5_DIGESTSIZE   16
 
-#include "_hacl/Hacl_Hash_MD5.h"
+// --- Module objects ---------------------------------------------------------
 
 typedef struct {
     HASHLIB_OBJECT_HEAD
@@ -45,8 +42,7 @@ typedef struct {
 
 #define _MD5object_CAST(op)     ((MD5object *)(op))
 
-#include "clinic/md5module.c.h"
-
+// --- Module state -----------------------------------------------------------
 
 typedef struct {
     PyTypeObject* md5_type;
@@ -60,6 +56,18 @@ md5_get_state(PyObject *module)
     return (MD5State *)state;
 }
 
+// --- Module clinic configuration --------------------------------------------
+
+/*[clinic input]
+module _md5
+class MD5Type "MD5object *" "&PyType_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
+
+#include "clinic/md5module.c.h"
+
+// --- MD5 object interface ---------------------------------------------------
+
 static MD5object *
 newMD5object(MD5State * st)
 {
diff --git a/Modules/sha1module.c b/Modules/sha1module.c
index 3bc83b674f1bc1..faa9dcccc5755b 100644
--- a/Modules/sha1module.c
+++ b/Modules/sha1module.c
@@ -8,13 +8,13 @@
    Andrew Kuchling (a...@amk.ca)
    Greg Stein (gst...@lyra.org)
    Trevor Perrin (tr...@trevp.net)
+   Bénédikt Tran (10796600+picn...@users.noreply.github.com)
 
    Copyright (C) 2005-2007   Gregory P. Smith (g...@krypto.org)
    Licensed to PSF under a Contributor Agreement.
 
 */
 
-/* SHA1 objects */
 #ifndef Py_BUILD_CORE_BUILTIN
 #  define Py_BUILD_CORE_MODULE 1
 #endif
@@ -24,18 +24,14 @@
 #include "pycore_strhex.h"        // _Py_strhex()
 #include "pycore_typeobject.h"    // _PyType_GetModuleState()
 
-/*[clinic input]
-module _sha1
-class SHA1Type "SHA1object *" "&PyType_Type"
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3dc9a20d1becb759]*/
+#include "_hacl/Hacl_Hash_SHA1.h"
 
 /* The SHA1 block size and message digest sizes, in bytes */
 
 #define SHA1_BLOCKSIZE    64
 #define SHA1_DIGESTSIZE   20
 
-#include "_hacl/Hacl_Hash_SHA1.h"
+// --- Module objects ---------------------------------------------------------
 
 typedef struct {
     HASHLIB_OBJECT_HEAD
@@ -44,8 +40,7 @@ typedef struct {
 
 #define _SHA1object_CAST(op)    ((SHA1object *)(op))
 
-#include "clinic/sha1module.c.h"
-
+// --- Module state -----------------------------------------------------------
 
 typedef struct {
     PyTypeObject* sha1_type;
@@ -59,6 +54,18 @@ sha1_get_state(PyObject *module)
     return (SHA1State *)state;
 }
 
+// --- Module clinic configuration --------------------------------------------
+
+/*[clinic input]
+module _sha1
+class SHA1Type "SHA1object *" "&PyType_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3dc9a20d1becb759]*/
+
+#include "clinic/sha1module.c.h"
+
+// --- SHA-1 object interface configuration -----------------------------------
+
 static SHA1object *
 newSHA1object(SHA1State *st)
 {
diff --git a/Modules/sha2module.c b/Modules/sha2module.c
index 6643b7e6b02654..36300ba899fd44 100644
--- a/Modules/sha2module.c
+++ b/Modules/sha2module.c
@@ -9,32 +9,25 @@
    Greg Stein (gst...@lyra.org)
    Trevor Perrin (tr...@trevp.net)
    Jonathan Protzenko (jonat...@protzenko.fr)
+   Bénédikt Tran (10796600+picn...@users.noreply.github.com)
 
    Copyright (C) 2005-2007   Gregory P. Smith (g...@krypto.org)
    Licensed to PSF under a Contributor Agreement.
 
 */
 
-/* SHA objects */
 #ifndef Py_BUILD_CORE_BUILTIN
 #  define Py_BUILD_CORE_MODULE 1
 #endif
 
 #include "Python.h"
-#include "pycore_bitutils.h"      // _Py_bswap32()
 #include "pycore_moduleobject.h"  // _PyModule_GetState()
 #include "pycore_typeobject.h"    // _PyType_GetModuleState()
 #include "pycore_strhex.h"        // _Py_strhex()
 
 #include "hashlib.h"
 
-/*[clinic input]
-module _sha2
-class SHA256Type "SHA256object *" "&PyType_Type"
-class SHA512Type "SHA512object *" "&PyType_Type"
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b5315a7b611c9afc]*/
-
+#include "_hacl/Hacl_Hash_SHA2.h"
 
 /* The SHA block sizes and maximum message digest sizes, in bytes */
 
@@ -43,9 +36,7 @@ class SHA512Type "SHA512object *" "&PyType_Type"
 #define SHA512_BLOCKSIZE   128
 #define SHA512_DIGESTSIZE  64
 
-/* Our SHA2 implementations defer to the HACL* verified library. */
-
-#include "_hacl/Hacl_Hash_SHA2.h"
+// --- Module objects ---------------------------------------------------------
 
 // TODO: Get rid of int digestsize in favor of Hacl state info?
 
@@ -64,7 +55,7 @@ typedef struct {
 #define _SHA256object_CAST(op)  ((SHA256object *)(op))
 #define _SHA512object_CAST(op)  ((SHA512object *)(op))
 
-#include "clinic/sha2module.c.h"
+// --- Module state -----------------------------------------------------------
 
 /* We shall use run-time type information in the remainder of this module to
  * tell apart SHA2-224 and SHA2-256 */
@@ -83,6 +74,19 @@ sha2_get_state(PyObject *module)
     return (sha2_state *)state;
 }
 
+// --- Module clinic configuration --------------------------------------------
+
+/*[clinic input]
+module _sha2
+class SHA256Type "SHA256object *" "&PyType_Type"
+class SHA512Type "SHA512object *" "&PyType_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b5315a7b611c9afc]*/
+
+#include "clinic/sha2module.c.h"
+
+// --- SHA-2 object interface -------------------------------------------------
+
 static int
 SHA256copy(SHA256object *src, SHA256object *dest)
 {
diff --git a/Modules/sha3module.c b/Modules/sha3module.c
index 68b239352769a1..face90a6094beb 100644
--- a/Modules/sha3module.c
+++ b/Modules/sha3module.c
@@ -9,6 +9,7 @@
  *  Greg Stein (gst...@lyra.org)
  *  Trevor Perrin (tr...@trevp.net)
  *  Gregory P. Smith (g...@krypto.org)
+ *  Bénédikt Tran (10796600+picn...@users.noreply.github.com)
  *
  * Copyright (C) 2012-2022  Christian Heimes (christ...@python.org)
  * Licensed to PSF under a Contributor Agreement.
@@ -24,6 +25,8 @@
 #include "pycore_typeobject.h"    // _PyType_GetModuleState()
 #include "hashlib.h"
 
+#include "_hacl/Hacl_Hash_SHA3.h"
+
 /*
  * Assert that 'LEN' can be safely casted to uint32_t.
  *
@@ -37,6 +40,8 @@
 
 #define SHA3_MAX_DIGESTSIZE 64 /* 64 Bytes (512 Bits) for 224 to 512 */
 
+// --- Module state -----------------------------------------------------------
+
 typedef struct {
     PyTypeObject *sha3_224_type;
     PyTypeObject *sha3_256_type;
@@ -54,21 +59,10 @@ sha3_get_state(PyObject *module)
     return (SHA3State *)state;
 }
 
-/*[clinic input]
-module _sha3
-class _sha3.sha3_224 "SHA3object *" "&SHA3_224typ"
-class _sha3.sha3_256 "SHA3object *" "&SHA3_256typ"
-class _sha3.sha3_384 "SHA3object *" "&SHA3_384typ"
-class _sha3.sha3_512 "SHA3object *" "&SHA3_512typ"
-class _sha3.shake_128 "SHA3object *" "&SHAKE128type"
-class _sha3.shake_256 "SHA3object *" "&SHAKE256type"
-[clinic start generated code]*/
-/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b8a53680f370285a]*/
+// --- Module objects ---------------------------------------------------------
 
 /* The structure for storing SHA3 info */
 
-#include "_hacl/Hacl_Hash_SHA3.h"
-
 typedef struct {
     HASHLIB_OBJECT_HEAD
     Hacl_Hash_SHA3_state_t *hash_state;
@@ -76,8 +70,23 @@ typedef struct {
 
 #define _SHA3object_CAST(op)    ((SHA3object *)(op))
 
+// --- Module clinic configuration --------------------------------------------
+
+/*[clinic input]
+module _sha3
+class _sha3.sha3_224 "SHA3object *" "&PyType_Type"
+class _sha3.sha3_256 "SHA3object *" "&PyType_Type"
+class _sha3.sha3_384 "SHA3object *" "&PyType_Type"
+class _sha3.sha3_512 "SHA3object *" "&PyType_Type"
+class _sha3.shake_128 "SHA3object *" "&PyType_Type"
+class _sha3.shake_256 "SHA3object *" "&PyType_Type"
+[clinic start generated code]*/
+/*[clinic end generated code: output=da39a3ee5e6b4b0d input=ccd22550c7fb99bf]*/
+
 #include "clinic/sha3module.c.h"
 
+// --- SHA-3 object interface -------------------------------------------------
+
 static SHA3object *
 newSHA3object(PyTypeObject *type)
 {

_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-le...@python.org
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: arch...@mail-archive.com

Reply via email to