Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
501b13c6
Kaydet (Commit)
501b13c6
authored
Tem 27, 2014
tarafından
Martin v. Löwis
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic.
Patch by Vajrasky Kok.
üst
6aef4dc1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
478 additions
and
111 deletions
+478
-111
NEWS
Misc/NEWS
+3
-0
md5module.c
Modules/md5module.c
+144
-32
sha1module.c
Modules/sha1module.c
+144
-32
sha256module.c
Modules/sha256module.c
+187
-47
sha512module.c
Modules/sha512module.c
+0
-0
No files found.
Misc/NEWS
Dosyayı görüntüle @
501b13c6
...
...
@@ -110,6 +110,9 @@ Core and Builtins
Library
-------
- Issue #20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic.
Patch by Vajrasky Kok.
- Fix repr(_socket.socket) on Windows 64-bit: don'
t
fail
with
OverflowError
on
closed
socket
.
repr
(
socket
.
socket
)
already
works
fine
.
...
...
Modules/md5module.c
Dosyayı görüntüle @
501b13c6
...
...
@@ -19,6 +19,11 @@
#include "Python.h"
#include "hashlib.h"
/*[clinic input]
module _md5
class MD5Type "MD5object *" "&PyType_Type"
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6e5261719957a912]*/
/* Some useful types */
...
...
@@ -332,10 +337,33 @@ MD5_dealloc(PyObject *ptr)
/* External methods for a hash object */
PyDoc_STRVAR
(
MD5_copy__doc__
,
"Return a copy of the hash object."
);
/*[clinic input]
MD5Type.copy
Return a copy of the hash object.
[clinic start generated code]*/
PyDoc_STRVAR
(
MD5Type_copy__doc__
,
"copy($self, /)
\n
"
"--
\n
"
"
\n
"
"Return a copy of the hash object."
);
#define MD5TYPE_COPY_METHODDEF \
{"copy", (PyCFunction)MD5Type_copy, METH_NOARGS, MD5Type_copy__doc__},
static
PyObject
*
MD5Type_copy_impl
(
MD5object
*
self
);
static
PyObject
*
MD5Type_copy
(
MD5object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
MD5Type_copy_impl
(
self
);
}
static
PyObject
*
MD5_copy
(
MD5object
*
self
,
PyObject
*
unused
)
MD5Type_copy_impl
(
MD5object
*
self
)
/*[clinic end generated code: output=3b3a88920b3dc7f4 input=2c09e6d2493f3079]*/
{
MD5object
*
newobj
;
...
...
@@ -351,11 +379,33 @@ MD5_copy(MD5object *self, PyObject *unused)
return
(
PyObject
*
)
newobj
;
}
PyDoc_STRVAR
(
MD5_digest__doc__
,
/*[clinic input]
MD5Type.digest
Return the digest value as a string of binary data.
[clinic start generated code]*/
PyDoc_STRVAR
(
MD5Type_digest__doc__
,
"digest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of binary data."
);
#define MD5TYPE_DIGEST_METHODDEF \
{"digest", (PyCFunction)MD5Type_digest, METH_NOARGS, MD5Type_digest__doc__},
static
PyObject
*
MD5_digest
(
MD5object
*
self
,
PyObject
*
unused
)
MD5Type_digest_impl
(
MD5object
*
self
);
static
PyObject
*
MD5Type_digest
(
MD5object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
MD5Type_digest_impl
(
self
);
}
static
PyObject
*
MD5Type_digest_impl
(
MD5object
*
self
)
/*[clinic end generated code: output=7a796b28fa89485f input=7b96e65389412a34]*/
{
unsigned
char
digest
[
MD5_DIGESTSIZE
];
struct
md5_state
temp
;
...
...
@@ -365,11 +415,33 @@ MD5_digest(MD5object *self, PyObject *unused)
return
PyBytes_FromStringAndSize
((
const
char
*
)
digest
,
MD5_DIGESTSIZE
);
}
PyDoc_STRVAR
(
MD5_hexdigest__doc__
,
/*[clinic input]
MD5Type.hexdigest
Return the digest value as a string of hexadecimal digits.
[clinic start generated code]*/
PyDoc_STRVAR
(
MD5Type_hexdigest__doc__
,
"hexdigest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of hexadecimal digits."
);
#define MD5TYPE_HEXDIGEST_METHODDEF \
{"hexdigest", (PyCFunction)MD5Type_hexdigest, METH_NOARGS, MD5Type_hexdigest__doc__},
static
PyObject
*
MD5Type_hexdigest_impl
(
MD5object
*
self
);
static
PyObject
*
MD5_hexdigest
(
MD5object
*
self
,
PyObject
*
unused
)
MD5Type_hexdigest
(
MD5object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
MD5Type_hexdigest_impl
(
self
);
}
static
PyObject
*
MD5Type_hexdigest_impl
(
MD5object
*
self
)
/*[clinic end generated code: output=daa73609f94f92e1 input=b60b19de644798dd]*/
{
unsigned
char
digest
[
MD5_DIGESTSIZE
];
struct
md5_state
temp
;
...
...
@@ -401,18 +473,30 @@ MD5_hexdigest(MD5object *self, PyObject *unused)
return
retval
;
}
PyDoc_STRVAR
(
MD5_update__doc__
,
"Update this hash object's state with the provided string."
);
/*[clinic input]
MD5Type.update
obj: object
/
Update this hash object's state with the provided string.
[clinic start generated code]*/
PyDoc_STRVAR
(
MD5Type_update__doc__
,
"update($self, obj, /)
\n
"
"--
\n
"
"
\n
"
"Update this hash object
\'
s state with the provided string."
);
#define MD5TYPE_UPDATE_METHODDEF \
{"update", (PyCFunction)MD5Type_update, METH_O, MD5Type_update__doc__},
static
PyObject
*
MD5_update
(
MD5object
*
self
,
PyObject
*
args
)
MD5Type_update
(
MD5object
*
self
,
PyObject
*
obj
)
/*[clinic end generated code: output=9d09b6c6cdc6cac3 input=6e1efcd9ecf17032]*/
{
PyObject
*
obj
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTuple
(
args
,
"O:update"
,
&
obj
))
return
NULL
;
GET_BUFFER_VIEW_OR_ERROUT
(
obj
,
&
buf
);
md5_process
(
&
self
->
hash_state
,
buf
.
buf
,
buf
.
len
);
...
...
@@ -423,10 +507,10 @@ MD5_update(MD5object *self, PyObject *args)
}
static
PyMethodDef
MD5_methods
[]
=
{
{
"copy"
,
(
PyCFunction
)
MD5_copy
,
METH_NOARGS
,
MD5_copy__doc__
},
{
"digest"
,
(
PyCFunction
)
MD5_digest
,
METH_NOARGS
,
MD5_digest__doc__
},
{
"hexdigest"
,
(
PyCFunction
)
MD5_hexdigest
,
METH_NOARGS
,
MD5_hexdigest__doc__
},
{
"update"
,
(
PyCFunction
)
MD5_update
,
METH_VARARGS
,
MD5_update__doc__
},
MD5TYPE_COPY_METHODDEF
MD5TYPE_DIGEST_METHODDEF
MD5TYPE_HEXDIGEST_METHODDEF
MD5TYPE_UPDATE_METHODDEF
{
NULL
,
NULL
}
/* sentinel */
};
...
...
@@ -502,27 +586,55 @@ static PyTypeObject MD5type = {
/* The single module-level function: new() */
PyDoc_STRVAR
(
MD5_new__doc__
,
/*[clinic input]
_md5.md5
string: object(c_default="NULL") = b''
Return a new MD5 hash object; optionally initialized with a string.
[clinic start generated code]*/
PyDoc_STRVAR
(
_md5_md5__doc__
,
"md5($module, /, string=b
\'\'
)
\n
"
"--
\n
"
"
\n
"
"Return a new MD5 hash object; optionally initialized with a string."
);
#define _MD5_MD5_METHODDEF \
{"md5", (PyCFunction)_md5_md5, METH_VARARGS|METH_KEYWORDS, _md5_md5__doc__},
static
PyObject
*
_md5_md5_impl
(
PyModuleDef
*
module
,
PyObject
*
string
);
static
PyObject
*
MD5_new
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
_md5_md5
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"string"
,
NULL
};
PyObject
*
string
=
NULL
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
"|O:md5"
,
_keywords
,
&
string
))
goto
exit
;
return_value
=
_md5_md5_impl
(
module
,
string
);
exit:
return
return_value
;
}
static
PyObject
*
_md5_md5_impl
(
PyModuleDef
*
module
,
PyObject
*
string
)
/*[clinic end generated code: output=1039e912d919880e input=d12ef8f72d684f7b]*/
{
static
char
*
kwlist
[]
=
{
"string"
,
NULL
};
MD5object
*
new
;
PyObject
*
data_obj
=
NULL
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"|O:new"
,
kwlist
,
&
data_obj
))
{
return
NULL
;
}
if
(
data_obj
)
GET_BUFFER_VIEW_OR_ERROUT
(
data_obj
,
&
buf
);
if
(
string
)
GET_BUFFER_VIEW_OR_ERROUT
(
string
,
&
buf
);
if
((
new
=
newMD5object
())
==
NULL
)
{
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
...
...
@@ -531,11 +643,11 @@ MD5_new(PyObject *self, PyObject *args, PyObject *kwdict)
if
(
PyErr_Occurred
())
{
Py_DECREF
(
new
);
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
if
(
data_obj
)
{
if
(
string
)
{
md5_process
(
&
new
->
hash_state
,
buf
.
buf
,
buf
.
len
);
PyBuffer_Release
(
&
buf
);
}
...
...
@@ -547,7 +659,7 @@ MD5_new(PyObject *self, PyObject *args, PyObject *kwdict)
/* List of functions exported by this module */
static
struct
PyMethodDef
MD5_functions
[]
=
{
{
"md5"
,
(
PyCFunction
)
MD5_new
,
METH_VARARGS
|
METH_KEYWORDS
,
MD5_new__doc__
},
_MD5_MD5_METHODDEF
{
NULL
,
NULL
}
/* Sentinel */
};
...
...
Modules/sha1module.c
Dosyayı görüntüle @
501b13c6
...
...
@@ -19,6 +19,11 @@
#include "Python.h"
#include "hashlib.h"
/*[clinic input]
module _sha1
class SHA1Type "SHA1object *" "&PyType_Type"
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=3dc9a20d1becb759]*/
/* Some useful types */
...
...
@@ -309,10 +314,33 @@ SHA1_dealloc(PyObject *ptr)
/* External methods for a hash object */
PyDoc_STRVAR
(
SHA1_copy__doc__
,
"Return a copy of the hash object."
);
/*[clinic input]
SHA1Type.copy
Return a copy of the hash object.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA1Type_copy__doc__
,
"copy($self, /)
\n
"
"--
\n
"
"
\n
"
"Return a copy of the hash object."
);
#define SHA1TYPE_COPY_METHODDEF \
{"copy", (PyCFunction)SHA1Type_copy, METH_NOARGS, SHA1Type_copy__doc__},
static
PyObject
*
SHA1Type_copy_impl
(
SHA1object
*
self
);
static
PyObject
*
SHA1Type_copy
(
SHA1object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA1Type_copy_impl
(
self
);
}
static
PyObject
*
SHA1_copy
(
SHA1object
*
self
,
PyObject
*
unused
)
SHA1Type_copy_impl
(
SHA1object
*
self
)
/*[clinic end generated code: output=1a320e75a7444098 input=b7eae10df6f89b36]*/
{
SHA1object
*
newobj
;
...
...
@@ -323,11 +351,33 @@ SHA1_copy(SHA1object *self, PyObject *unused)
return
(
PyObject
*
)
newobj
;
}
PyDoc_STRVAR
(
SHA1_digest__doc__
,
/*[clinic input]
SHA1Type.digest
Return the digest value as a string of binary data.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA1Type_digest__doc__
,
"digest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of binary data."
);
#define SHA1TYPE_DIGEST_METHODDEF \
{"digest", (PyCFunction)SHA1Type_digest, METH_NOARGS, SHA1Type_digest__doc__},
static
PyObject
*
SHA1_digest
(
SHA1object
*
self
,
PyObject
*
unused
)
SHA1Type_digest_impl
(
SHA1object
*
self
);
static
PyObject
*
SHA1Type_digest
(
SHA1object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA1Type_digest_impl
(
self
);
}
static
PyObject
*
SHA1Type_digest_impl
(
SHA1object
*
self
)
/*[clinic end generated code: output=c4920f75228bfbfd input=205d47e1927fd009]*/
{
unsigned
char
digest
[
SHA1_DIGESTSIZE
];
struct
sha1_state
temp
;
...
...
@@ -337,11 +387,33 @@ SHA1_digest(SHA1object *self, PyObject *unused)
return
PyBytes_FromStringAndSize
((
const
char
*
)
digest
,
SHA1_DIGESTSIZE
);
}
PyDoc_STRVAR
(
SHA1_hexdigest__doc__
,
/*[clinic input]
SHA1Type.hexdigest
Return the digest value as a string of hexadecimal digits.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA1Type_hexdigest__doc__
,
"hexdigest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of hexadecimal digits."
);
#define SHA1TYPE_HEXDIGEST_METHODDEF \
{"hexdigest", (PyCFunction)SHA1Type_hexdigest, METH_NOARGS, SHA1Type_hexdigest__doc__},
static
PyObject
*
SHA1Type_hexdigest_impl
(
SHA1object
*
self
);
static
PyObject
*
SHA1_hexdigest
(
SHA1object
*
self
,
PyObject
*
unused
)
SHA1Type_hexdigest
(
SHA1object
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA1Type_hexdigest_impl
(
self
);
}
static
PyObject
*
SHA1Type_hexdigest_impl
(
SHA1object
*
self
)
/*[clinic end generated code: output=6e345aac201887b2 input=97691055c0c74ab0]*/
{
unsigned
char
digest
[
SHA1_DIGESTSIZE
];
struct
sha1_state
temp
;
...
...
@@ -373,18 +445,30 @@ SHA1_hexdigest(SHA1object *self, PyObject *unused)
return
retval
;
}
PyDoc_STRVAR
(
SHA1_update__doc__
,
"Update this hash object's state with the provided string."
);
/*[clinic input]
SHA1Type.update
obj: object
/
Update this hash object's state with the provided string.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA1Type_update__doc__
,
"update($self, obj, /)
\n
"
"--
\n
"
"
\n
"
"Update this hash object
\'
s state with the provided string."
);
#define SHA1TYPE_UPDATE_METHODDEF \
{"update", (PyCFunction)SHA1Type_update, METH_O, SHA1Type_update__doc__},
static
PyObject
*
SHA1_update
(
SHA1object
*
self
,
PyObject
*
args
)
SHA1Type_update
(
SHA1object
*
self
,
PyObject
*
obj
)
/*[clinic end generated code: output=ab20a86a25e7d255 input=aad8e07812edbba3]*/
{
PyObject
*
obj
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTuple
(
args
,
"O:update"
,
&
obj
))
return
NULL
;
GET_BUFFER_VIEW_OR_ERROUT
(
obj
,
&
buf
);
sha1_process
(
&
self
->
hash_state
,
buf
.
buf
,
buf
.
len
);
...
...
@@ -395,10 +479,10 @@ SHA1_update(SHA1object *self, PyObject *args)
}
static
PyMethodDef
SHA1_methods
[]
=
{
{
"copy"
,
(
PyCFunction
)
SHA1_copy
,
METH_NOARGS
,
SHA1_copy__doc__
},
{
"digest"
,
(
PyCFunction
)
SHA1_digest
,
METH_NOARGS
,
SHA1_digest__doc__
},
{
"hexdigest"
,
(
PyCFunction
)
SHA1_hexdigest
,
METH_NOARGS
,
SHA1_hexdigest__doc__
},
{
"update"
,
(
PyCFunction
)
SHA1_update
,
METH_VARARGS
,
SHA1_update__doc__
},
SHA1TYPE_COPY_METHODDEF
SHA1TYPE_DIGEST_METHODDEF
SHA1TYPE_HEXDIGEST_METHODDEF
SHA1TYPE_UPDATE_METHODDEF
{
NULL
,
NULL
}
/* sentinel */
};
...
...
@@ -474,27 +558,55 @@ static PyTypeObject SHA1type = {
/* The single module-level function: new() */
PyDoc_STRVAR
(
SHA1_new__doc__
,
/*[clinic input]
_sha1.sha1
string: object(c_default="NULL") = b''
Return a new SHA1 hash object; optionally initialized with a string.
[clinic start generated code]*/
PyDoc_STRVAR
(
_sha1_sha1__doc__
,
"sha1($module, /, string=b
\'\'
)
\n
"
"--
\n
"
"
\n
"
"Return a new SHA1 hash object; optionally initialized with a string."
);
#define _SHA1_SHA1_METHODDEF \
{"sha1", (PyCFunction)_sha1_sha1, METH_VARARGS|METH_KEYWORDS, _sha1_sha1__doc__},
static
PyObject
*
_sha1_sha1_impl
(
PyModuleDef
*
module
,
PyObject
*
string
);
static
PyObject
*
SHA1_new
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
_sha1_sha1
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"string"
,
NULL
};
PyObject
*
string
=
NULL
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
"|O:sha1"
,
_keywords
,
&
string
))
goto
exit
;
return_value
=
_sha1_sha1_impl
(
module
,
string
);
exit:
return
return_value
;
}
static
PyObject
*
_sha1_sha1_impl
(
PyModuleDef
*
module
,
PyObject
*
string
)
/*[clinic end generated code: output=c9068552f07b8954 input=27ea54281d995ec2]*/
{
static
char
*
kwlist
[]
=
{
"string"
,
NULL
};
SHA1object
*
new
;
PyObject
*
data_obj
=
NULL
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"|O:new"
,
kwlist
,
&
data_obj
))
{
return
NULL
;
}
if
(
data_obj
)
GET_BUFFER_VIEW_OR_ERROUT
(
data_obj
,
&
buf
);
if
(
string
)
GET_BUFFER_VIEW_OR_ERROUT
(
string
,
&
buf
);
if
((
new
=
newSHA1object
())
==
NULL
)
{
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
...
...
@@ -503,11 +615,11 @@ SHA1_new(PyObject *self, PyObject *args, PyObject *kwdict)
if
(
PyErr_Occurred
())
{
Py_DECREF
(
new
);
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
if
(
data_obj
)
{
if
(
string
)
{
sha1_process
(
&
new
->
hash_state
,
buf
.
buf
,
buf
.
len
);
PyBuffer_Release
(
&
buf
);
}
...
...
@@ -519,7 +631,7 @@ SHA1_new(PyObject *self, PyObject *args, PyObject *kwdict)
/* List of functions exported by this module */
static
struct
PyMethodDef
SHA1_functions
[]
=
{
{
"sha1"
,(
PyCFunction
)
SHA1_new
,
METH_VARARGS
|
METH_KEYWORDS
,
SHA1_new__doc__
},
_SHA1_SHA1_METHODDEF
{
NULL
,
NULL
}
/* Sentinel */
};
...
...
Modules/sha256module.c
Dosyayı görüntüle @
501b13c6
...
...
@@ -20,6 +20,11 @@
#include "structmember.h"
#include "hashlib.h"
/*[clinic input]
module _sha256
class SHA256Type "SHAobject *" "&PyType_Type"
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=71a39174d4f0a744]*/
/* Some useful types */
...
...
@@ -393,10 +398,33 @@ SHA_dealloc(PyObject *ptr)
/* External methods for a hash object */
PyDoc_STRVAR
(
SHA256_copy__doc__
,
"Return a copy of the hash object."
);
/*[clinic input]
SHA256Type.copy
Return a copy of the hash object.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA256Type_copy__doc__
,
"copy($self, /)
\n
"
"--
\n
"
"
\n
"
"Return a copy of the hash object."
);
#define SHA256TYPE_COPY_METHODDEF \
{"copy", (PyCFunction)SHA256Type_copy, METH_NOARGS, SHA256Type_copy__doc__},
static
PyObject
*
SHA256Type_copy_impl
(
SHAobject
*
self
);
static
PyObject
*
SHA256_copy
(
SHAobject
*
self
,
PyObject
*
unused
)
SHA256Type_copy
(
SHAobject
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA256Type_copy_impl
(
self
);
}
static
PyObject
*
SHA256Type_copy_impl
(
SHAobject
*
self
)
/*[clinic end generated code: output=f716c39d3f81c27c input=f58840a618d4f2a7]*/
{
SHAobject
*
newobj
;
...
...
@@ -412,11 +440,33 @@ SHA256_copy(SHAobject *self, PyObject *unused)
return
(
PyObject
*
)
newobj
;
}
PyDoc_STRVAR
(
SHA256_digest__doc__
,
/*[clinic input]
SHA256Type.digest
Return the digest value as a string of binary data.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA256Type_digest__doc__
,
"digest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of binary data."
);
#define SHA256TYPE_DIGEST_METHODDEF \
{"digest", (PyCFunction)SHA256Type_digest, METH_NOARGS, SHA256Type_digest__doc__},
static
PyObject
*
SHA256Type_digest_impl
(
SHAobject
*
self
);
static
PyObject
*
SHA256Type_digest
(
SHAobject
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA256Type_digest_impl
(
self
);
}
static
PyObject
*
SHA256_digest
(
SHAobject
*
self
,
PyObject
*
unused
)
SHA256Type_digest_impl
(
SHAobject
*
self
)
/*[clinic end generated code: output=72d34723d7bb694c input=1fb752e58954157d]*/
{
unsigned
char
digest
[
SHA_DIGESTSIZE
];
SHAobject
temp
;
...
...
@@ -426,11 +476,33 @@ SHA256_digest(SHAobject *self, PyObject *unused)
return
PyBytes_FromStringAndSize
((
const
char
*
)
digest
,
self
->
digestsize
);
}
PyDoc_STRVAR
(
SHA256_hexdigest__doc__
,
/*[clinic input]
SHA256Type.hexdigest
Return the digest value as a string of hexadecimal digits.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA256Type_hexdigest__doc__
,
"hexdigest($self, /)
\n
"
"--
\n
"
"
\n
"
"Return the digest value as a string of hexadecimal digits."
);
#define SHA256TYPE_HEXDIGEST_METHODDEF \
{"hexdigest", (PyCFunction)SHA256Type_hexdigest, METH_NOARGS, SHA256Type_hexdigest__doc__},
static
PyObject
*
SHA256Type_hexdigest_impl
(
SHAobject
*
self
);
static
PyObject
*
SHA256_hexdigest
(
SHAobject
*
self
,
PyObject
*
unused
)
SHA256Type_hexdigest
(
SHAobject
*
self
,
PyObject
*
Py_UNUSED
(
ignored
))
{
return
SHA256Type_hexdigest_impl
(
self
);
}
static
PyObject
*
SHA256Type_hexdigest_impl
(
SHAobject
*
self
)
/*[clinic end generated code: output=3687aa6183c7d27f input=0cc4c714693010d1]*/
{
unsigned
char
digest
[
SHA_DIGESTSIZE
];
SHAobject
temp
;
...
...
@@ -462,18 +534,30 @@ SHA256_hexdigest(SHAobject *self, PyObject *unused)
return
retval
;
}
PyDoc_STRVAR
(
SHA256_update__doc__
,
"Update this hash object's state with the provided string."
);
/*[clinic input]
SHA256Type.update
obj: object
/
Update this hash object's state with the provided string.
[clinic start generated code]*/
PyDoc_STRVAR
(
SHA256Type_update__doc__
,
"update($self, obj, /)
\n
"
"--
\n
"
"
\n
"
"Update this hash object
\'
s state with the provided string."
);
#define SHA256TYPE_UPDATE_METHODDEF \
{"update", (PyCFunction)SHA256Type_update, METH_O, SHA256Type_update__doc__},
static
PyObject
*
SHA256_update
(
SHAobject
*
self
,
PyObject
*
args
)
SHA256Type_update
(
SHAobject
*
self
,
PyObject
*
obj
)
/*[clinic end generated code: output=b47f53d7cbeabee4 input=b2d449d5b30f0f5a]*/
{
PyObject
*
obj
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTuple
(
args
,
"O:update"
,
&
obj
))
return
NULL
;
GET_BUFFER_VIEW_OR_ERROUT
(
obj
,
&
buf
);
sha_update
(
self
,
buf
.
buf
,
buf
.
len
);
...
...
@@ -484,10 +568,10 @@ SHA256_update(SHAobject *self, PyObject *args)
}
static
PyMethodDef
SHA_methods
[]
=
{
{
"copy"
,
(
PyCFunction
)
SHA256_copy
,
METH_NOARGS
,
SHA256_copy__doc__
},
{
"digest"
,
(
PyCFunction
)
SHA256_digest
,
METH_NOARGS
,
SHA256_digest__doc__
},
{
"hexdigest"
,
(
PyCFunction
)
SHA256_hexdigest
,
METH_NOARGS
,
SHA256_hexdigest__doc__
},
{
"update"
,
(
PyCFunction
)
SHA256_update
,
METH_VARARGS
,
SHA256_update__doc__
},
SHA256TYPE_COPY_METHODDEF
SHA256TYPE_DIGEST_METHODDEF
SHA256TYPE_HEXDIGEST_METHODDEF
SHA256TYPE_UPDATE_METHODDEF
{
NULL
,
NULL
}
/* sentinel */
};
...
...
@@ -594,27 +678,55 @@ static PyTypeObject SHA256type = {
/* The single module-level function: new() */
PyDoc_STRVAR
(
SHA256_new__doc__
,
/*[clinic input]
_sha256.sha256
string: object(c_default="NULL") = b''
Return a new SHA-256 hash object; optionally initialized with a string.
[clinic start generated code]*/
PyDoc_STRVAR
(
_sha256_sha256__doc__
,
"sha256($module, /, string=b
\'\'
)
\n
"
"--
\n
"
"
\n
"
"Return a new SHA-256 hash object; optionally initialized with a string."
);
#define _SHA256_SHA256_METHODDEF \
{"sha256", (PyCFunction)_sha256_sha256, METH_VARARGS|METH_KEYWORDS, _sha256_sha256__doc__},
static
PyObject
*
SHA256_new
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
_sha256_sha256_impl
(
PyModuleDef
*
module
,
PyObject
*
string
);
static
PyObject
*
_sha256_sha256
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"string"
,
NULL
};
PyObject
*
string
=
NULL
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
"|O:sha256"
,
_keywords
,
&
string
))
goto
exit
;
return_value
=
_sha256_sha256_impl
(
module
,
string
);
exit:
return
return_value
;
}
static
PyObject
*
_sha256_sha256_impl
(
PyModuleDef
*
module
,
PyObject
*
string
)
/*[clinic end generated code: output=4b1263d1e2fcdb98 input=09cce3fb855056b2]*/
{
static
char
*
kwlist
[]
=
{
"string"
,
NULL
};
SHAobject
*
new
;
PyObject
*
data_obj
=
NULL
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"|O:new"
,
kwlist
,
&
data_obj
))
{
return
NULL
;
}
if
(
data_obj
)
GET_BUFFER_VIEW_OR_ERROUT
(
data_obj
,
&
buf
);
if
(
string
)
GET_BUFFER_VIEW_OR_ERROUT
(
string
,
&
buf
);
if
((
new
=
newSHA256object
())
==
NULL
)
{
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
...
...
@@ -623,11 +735,11 @@ SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
if
(
PyErr_Occurred
())
{
Py_DECREF
(
new
);
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
if
(
data_obj
)
{
if
(
string
)
{
sha_update
(
new
,
buf
.
buf
,
buf
.
len
);
PyBuffer_Release
(
&
buf
);
}
...
...
@@ -635,27 +747,55 @@ SHA256_new(PyObject *self, PyObject *args, PyObject *kwdict)
return
(
PyObject
*
)
new
;
}
PyDoc_STRVAR
(
SHA224_new__doc__
,
/*[clinic input]
_sha256.sha224
string: object(c_default="NULL") = b''
Return a new SHA-224 hash object; optionally initialized with a string.
[clinic start generated code]*/
PyDoc_STRVAR
(
_sha256_sha224__doc__
,
"sha224($module, /, string=b
\'\'
)
\n
"
"--
\n
"
"
\n
"
"Return a new SHA-224 hash object; optionally initialized with a string."
);
#define _SHA256_SHA224_METHODDEF \
{"sha224", (PyCFunction)_sha256_sha224, METH_VARARGS|METH_KEYWORDS, _sha256_sha224__doc__},
static
PyObject
*
_sha256_sha224_impl
(
PyModuleDef
*
module
,
PyObject
*
string
);
static
PyObject
*
SHA224_new
(
PyObject
*
self
,
PyObject
*
args
,
PyObject
*
kwdict
)
_sha256_sha224
(
PyModuleDef
*
module
,
PyObject
*
args
,
PyObject
*
kwargs
)
{
PyObject
*
return_value
=
NULL
;
static
char
*
_keywords
[]
=
{
"string"
,
NULL
};
PyObject
*
string
=
NULL
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwargs
,
"|O:sha224"
,
_keywords
,
&
string
))
goto
exit
;
return_value
=
_sha256_sha224_impl
(
module
,
string
);
exit:
return
return_value
;
}
static
PyObject
*
_sha256_sha224_impl
(
PyModuleDef
*
module
,
PyObject
*
string
)
/*[clinic end generated code: output=4dde0eb1cdaebc06 input=27a04ba24c353a73]*/
{
static
char
*
kwlist
[]
=
{
"string"
,
NULL
};
SHAobject
*
new
;
PyObject
*
data_obj
=
NULL
;
Py_buffer
buf
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kwdict
,
"|O:new"
,
kwlist
,
&
data_obj
))
{
return
NULL
;
}
if
(
data_obj
)
GET_BUFFER_VIEW_OR_ERROUT
(
data_obj
,
&
buf
);
if
(
string
)
GET_BUFFER_VIEW_OR_ERROUT
(
string
,
&
buf
);
if
((
new
=
newSHA224object
())
==
NULL
)
{
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
...
...
@@ -664,11 +804,11 @@ SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
if
(
PyErr_Occurred
())
{
Py_DECREF
(
new
);
if
(
data_obj
)
if
(
string
)
PyBuffer_Release
(
&
buf
);
return
NULL
;
}
if
(
data_obj
)
{
if
(
string
)
{
sha_update
(
new
,
buf
.
buf
,
buf
.
len
);
PyBuffer_Release
(
&
buf
);
}
...
...
@@ -680,8 +820,8 @@ SHA224_new(PyObject *self, PyObject *args, PyObject *kwdict)
/* List of functions exported by this module */
static
struct
PyMethodDef
SHA_functions
[]
=
{
{
"sha256"
,
(
PyCFunction
)
SHA256_new
,
METH_VARARGS
|
METH_KEYWORDS
,
SHA256_new__doc__
},
{
"sha224"
,
(
PyCFunction
)
SHA224_new
,
METH_VARARGS
|
METH_KEYWORDS
,
SHA224_new__doc__
},
_SHA256_SHA256_METHODDEF
_SHA256_SHA224_METHODDEF
{
NULL
,
NULL
}
/* Sentinel */
};
...
...
Modules/sha512module.c
Dosyayı görüntüle @
501b13c6
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment