2424#include "hashlib.h"
2525#include "pycore_strhex.h" // _Py_strhex()
2626
27- /*[clinic input]
28- module _md5
29- class MD5Type "MD5object *" "&PyType_Type"
30- [clinic start generated code]*/
31- /*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
32-
3327/* The MD5 block size and message digest sizes, in bytes */
3428
3529#define MD5_BLOCKSIZE 64
3630#define MD5_DIGESTSIZE 16
3731
3832#include "_hacl/Hacl_Hash_MD5.h"
3933
40-
4134typedef struct {
4235 HASHLIB_OBJECT_HEAD
43- Hacl_Hash_MD5_state_t * hash_state ;
36+ Hacl_Hash_MD5_state_t * state ;
4437} MD5object ;
4538
4639#define _MD5object_CAST (op ) ((MD5object *)(op))
4740
48- #include "clinic/md5module.c.h"
49-
50-
5141typedef struct {
52- PyTypeObject * md5_type ;
53- } MD5State ;
42+ PyTypeObject * md5_type ;
43+ } md5module_state ;
5444
55- static inline MD5State *
56- md5_get_state (PyObject * module )
45+ static inline md5module_state *
46+ get_md5module_state (PyObject * module )
5747{
5848 void * state = PyModule_GetState (module );
5949 assert (state != NULL );
60- return (MD5State * )state ;
50+ return (md5module_state * )state ;
6151}
6252
53+ /*[clinic input]
54+ module _md5
55+ class MD5Type "MD5object *" "&PyType_Type"
56+ [clinic start generated code]*/
57+ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
58+
59+ #include "clinic/md5module.c.h"
60+
6361static MD5object *
64- newMD5object (MD5State * st )
62+ newMD5object (md5module_state * st )
6563{
66- MD5object * md5 = PyObject_GC_New (MD5object , st -> md5_type );
67- if (! md5 ) {
64+ MD5object * self = PyObject_GC_New (MD5object , st -> md5_type );
65+ if (self == NULL ) {
6866 return NULL ;
6967 }
70- HASHLIB_INIT_MUTEX (md5 );
71-
72- PyObject_GC_Track (md5 );
73- return md5 ;
68+ HASHLIB_INIT_MUTEX (self );
69+ PyObject_GC_Track (self );
70+ return self ;
7471}
7572
7673/* Internal methods for a hash object */
7774static int
78- MD5_traverse (PyObject * ptr , visitproc visit , void * arg )
75+ MD5_traverse (PyObject * op , visitproc visit , void * arg )
7976{
80- Py_VISIT (Py_TYPE (ptr ));
77+ Py_VISIT (Py_TYPE (op ));
8178 return 0 ;
8279}
8380
8481static void
8582MD5_dealloc (PyObject * op )
8683{
87- MD5object * ptr = _MD5object_CAST (op );
88- Hacl_Hash_MD5_free (ptr -> hash_state );
84+ MD5object * self = _MD5object_CAST (op );
85+ Hacl_Hash_MD5_free (self -> state );
8986 PyTypeObject * tp = Py_TYPE (op );
90- PyObject_GC_UnTrack (ptr );
91- PyObject_GC_Del (ptr );
87+ PyObject_GC_UnTrack (self );
88+ PyObject_GC_Del (self );
9289 Py_DECREF (tp );
9390}
9491
95-
9692/* External methods for a hash object */
9793
9894/*[clinic input]
@@ -107,28 +103,28 @@ static PyObject *
107103MD5Type_copy_impl (MD5object * self , PyTypeObject * cls )
108104/*[clinic end generated code: output=bf055e08244bf5ee input=d89087dcfb2a8620]*/
109105{
110- MD5State * st = PyType_GetModuleState (cls );
106+ md5module_state * st = PyType_GetModuleState (cls );
111107
112- MD5object * newobj ;
113- if (( newobj = newMD5object ( st )) == NULL ) {
108+ MD5object * copy = newMD5object ( st ) ;
109+ if (copy == NULL ) {
114110 return NULL ;
115111 }
116112
117113 ENTER_HASHLIB (self );
118- newobj -> hash_state = Hacl_Hash_MD5_copy (self -> hash_state );
114+ copy -> state = Hacl_Hash_MD5_copy (self -> state );
119115 LEAVE_HASHLIB (self );
120- if (newobj -> hash_state == NULL ) {
121- Py_DECREF (self );
116+ if (copy -> state == NULL ) {
117+ Py_DECREF (copy );
122118 return PyErr_NoMemory ();
123119 }
124- return (PyObject * )newobj ;
120+ return (PyObject * )copy ;
125121}
126122
127123static void
128124md5_digest_compute_cond_lock (MD5object * self , uint8_t * digest )
129125{
130126 ENTER_HASHLIB (self );
131- Hacl_Hash_MD5_digest (self -> hash_state , digest );
127+ Hacl_Hash_MD5_digest (self -> state , digest );
132128 LEAVE_HASHLIB (self );
133129}
134130
@@ -186,7 +182,7 @@ md5_update_state_with_lock(MD5object *self, uint8_t *buf, Py_ssize_t len)
186182{
187183 Py_BEGIN_ALLOW_THREADS
188184 PyMutex_Lock (& self -> mutex ); // unconditionally acquire a lock
189- _hacl_md5_update (self -> hash_state , buf , len );
185+ _hacl_md5_update (self -> state , buf , len );
190186 PyMutex_Unlock (& self -> mutex );
191187 Py_END_ALLOW_THREADS
192188}
@@ -195,7 +191,7 @@ static void
195191md5_update_state_cond_lock (MD5object * self , uint8_t * buf , Py_ssize_t len )
196192{
197193 ENTER_HASHLIB (self ); // conditionally acquire a lock
198- _hacl_md5_update (self -> hash_state , buf , len );
194+ _hacl_md5_update (self -> state , buf , len );
199195 LEAVE_HASHLIB (self );
200196}
201197
@@ -237,7 +233,7 @@ static PyMethodDef MD5_methods[] = {
237233 MD5TYPE_DIGEST_METHODDEF
238234 MD5TYPE_HEXDIGEST_METHODDEF
239235 MD5TYPE_UPDATE_METHODDEF
240- {NULL , NULL } /* sentinel */
236+ {NULL , NULL } /* sentinel */
241237};
242238
243239static PyObject *
@@ -262,20 +258,20 @@ static PyGetSetDef MD5_getseters[] = {
262258 {"block_size" , MD5_get_block_size , NULL , NULL , NULL },
263259 {"name" , MD5_get_name , NULL , NULL , NULL },
264260 {"digest_size" , md5_get_digest_size , NULL , NULL , NULL },
265- {NULL } /* Sentinel */
261+ {NULL } /* sentinel */
266262};
267263
268264static PyType_Slot md5_type_slots [] = {
269265 {Py_tp_dealloc , MD5_dealloc },
270266 {Py_tp_methods , MD5_methods },
271267 {Py_tp_getset , MD5_getseters },
272268 {Py_tp_traverse , MD5_traverse },
273- {0 ,0 }
269+ {0 , 0 }
274270};
275271
276272static PyType_Spec md5_type_spec = {
277273 .name = "_md5.md5" ,
278- .basicsize = sizeof (MD5object ),
274+ .basicsize = sizeof (MD5object ),
279275 .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_DISALLOW_INSTANTIATION |
280276 Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_HAVE_GC ),
281277 .slots = md5_type_slots
@@ -304,15 +300,15 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
304300 return NULL ;
305301 }
306302
307- MD5object * new ;
308- MD5State * st = md5_get_state ( module );
309- if (( new = newMD5object ( st )) == NULL ) {
303+ md5module_state * st = get_md5module_state ( module ) ;
304+ MD5object * self = newMD5object ( st );
305+ if (self == NULL ) {
310306 return NULL ;
311307 }
312308
313- new -> hash_state = Hacl_Hash_MD5_malloc ();
314- if (new -> hash_state == NULL ) {
315- Py_DECREF (new );
309+ self -> state = Hacl_Hash_MD5_malloc ();
310+ if (self -> state == NULL ) {
311+ Py_DECREF (self );
316312 return PyErr_NoMemory ();
317313 }
318314
@@ -323,19 +319,19 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
323319 /* We do not initialize self->lock here as this is the constructor
324320 * where it is not yet possible to have concurrent access. */
325321 Py_BEGIN_ALLOW_THREADS
326- _hacl_md5_update (new -> hash_state , buf .buf , buf .len );
322+ _hacl_md5_update (self -> state , buf .buf , buf .len );
327323 Py_END_ALLOW_THREADS
328324 }
329325 else {
330- _hacl_md5_update (new -> hash_state , buf .buf , buf .len );
326+ _hacl_md5_update (self -> state , buf .buf , buf .len );
331327 }
332328 PyBuffer_Release (& buf );
333329 }
334330
335- return (PyObject * )new ;
331+ return (PyObject * )self ;
336332
337333error :
338- Py_XDECREF (new );
334+ Py_XDECREF (self );
339335 return NULL ;
340336}
341337
@@ -344,21 +340,21 @@ _md5_md5_impl(PyObject *module, PyObject *data, int usedforsecurity,
344340
345341static struct PyMethodDef MD5_functions [] = {
346342 _MD5_MD5_METHODDEF
347- {NULL , NULL } /* Sentinel */
343+ {NULL , NULL } /* sentinel */
348344};
349345
350346static int
351347_md5_traverse (PyObject * module , visitproc visit , void * arg )
352348{
353- MD5State * state = md5_get_state (module );
349+ md5module_state * state = get_md5module_state (module );
354350 Py_VISIT (state -> md5_type );
355351 return 0 ;
356352}
357353
358354static int
359355_md5_clear (PyObject * module )
360356{
361- MD5State * state = md5_get_state (module );
357+ md5module_state * state = get_md5module_state (module );
362358 Py_CLEAR (state -> md5_type );
363359 return 0 ;
364360}
@@ -373,7 +369,7 @@ _md5_free(void *module)
373369static int
374370md5_exec (PyObject * m )
375371{
376- MD5State * st = md5_get_state (m );
372+ md5module_state * st = get_md5module_state (m );
377373
378374 st -> md5_type = (PyTypeObject * )PyType_FromModuleAndSpec (
379375 m , & md5_type_spec , NULL );
@@ -399,7 +395,7 @@ static PyModuleDef_Slot _md5_slots[] = {
399395static struct PyModuleDef _md5module = {
400396 PyModuleDef_HEAD_INIT ,
401397 .m_name = "_md5" ,
402- .m_size = sizeof (MD5State ),
398+ .m_size = sizeof (md5module_state ),
403399 .m_methods = MD5_functions ,
404400 .m_slots = _md5_slots ,
405401 .m_traverse = _md5_traverse ,
0 commit comments