1 | /*[clinic input] |
2 | preserve |
3 | [clinic start generated code]*/ |
4 | |
5 | PyDoc_STRVAR(py_blake2b_new__doc__, |
6 | "blake2b(data=b\'\', /, *, digest_size=_blake2.blake2b.MAX_DIGEST_SIZE,\n" |
7 | " key=b\'\', salt=b\'\', person=b\'\', fanout=1, depth=1, leaf_size=0,\n" |
8 | " node_offset=0, node_depth=0, inner_size=0, last_node=False,\n" |
9 | " usedforsecurity=True)\n" |
10 | "--\n" |
11 | "\n" |
12 | "Return a new BLAKE2b hash object." ); |
13 | |
14 | static PyObject * |
15 | py_blake2b_new_impl(PyTypeObject *type, PyObject *data, int digest_size, |
16 | Py_buffer *key, Py_buffer *salt, Py_buffer *person, |
17 | int fanout, int depth, unsigned long leaf_size, |
18 | unsigned long long node_offset, int node_depth, |
19 | int inner_size, int last_node, int usedforsecurity); |
20 | |
21 | static PyObject * |
22 | py_blake2b_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) |
23 | { |
24 | PyObject *return_value = NULL; |
25 | static const char * const _keywords[] = {"" , "digest_size" , "key" , "salt" , "person" , "fanout" , "depth" , "leaf_size" , "node_offset" , "node_depth" , "inner_size" , "last_node" , "usedforsecurity" , NULL}; |
26 | static _PyArg_Parser _parser = {NULL, _keywords, "blake2b" , 0}; |
27 | PyObject *argsbuf[13]; |
28 | PyObject * const *fastargs; |
29 | Py_ssize_t nargs = PyTuple_GET_SIZE(args); |
30 | Py_ssize_t noptargs = nargs + (kwargs ? PyDict_GET_SIZE(kwargs) : 0) - 0; |
31 | PyObject *data = NULL; |
32 | int digest_size = BLAKE2B_OUTBYTES; |
33 | Py_buffer key = {NULL, NULL}; |
34 | Py_buffer salt = {NULL, NULL}; |
35 | Py_buffer person = {NULL, NULL}; |
36 | int fanout = 1; |
37 | int depth = 1; |
38 | unsigned long leaf_size = 0; |
39 | unsigned long long node_offset = 0; |
40 | int node_depth = 0; |
41 | int inner_size = 0; |
42 | int last_node = 0; |
43 | int usedforsecurity = 1; |
44 | |
45 | fastargs = _PyArg_UnpackKeywords(_PyTuple_CAST(args)->ob_item, nargs, kwargs, NULL, &_parser, 0, 1, 0, argsbuf); |
46 | if (!fastargs) { |
47 | goto exit; |
48 | } |
49 | if (nargs < 1) { |
50 | goto skip_optional_posonly; |
51 | } |
52 | noptargs--; |
53 | data = fastargs[0]; |
54 | skip_optional_posonly: |
55 | if (!noptargs) { |
56 | goto skip_optional_kwonly; |
57 | } |
58 | if (fastargs[1]) { |
59 | digest_size = _PyLong_AsInt(fastargs[1]); |
60 | if (digest_size == -1 && PyErr_Occurred()) { |
61 | goto exit; |
62 | } |
63 | if (!--noptargs) { |
64 | goto skip_optional_kwonly; |
65 | } |
66 | } |
67 | if (fastargs[2]) { |
68 | if (PyObject_GetBuffer(fastargs[2], &key, PyBUF_SIMPLE) != 0) { |
69 | goto exit; |
70 | } |
71 | if (!PyBuffer_IsContiguous(&key, 'C')) { |
72 | _PyArg_BadArgument("blake2b" , "argument 'key'" , "contiguous buffer" , fastargs[2]); |
73 | goto exit; |
74 | } |
75 | if (!--noptargs) { |
76 | goto skip_optional_kwonly; |
77 | } |
78 | } |
79 | if (fastargs[3]) { |
80 | if (PyObject_GetBuffer(fastargs[3], &salt, PyBUF_SIMPLE) != 0) { |
81 | goto exit; |
82 | } |
83 | if (!PyBuffer_IsContiguous(&salt, 'C')) { |
84 | _PyArg_BadArgument("blake2b" , "argument 'salt'" , "contiguous buffer" , fastargs[3]); |
85 | goto exit; |
86 | } |
87 | if (!--noptargs) { |
88 | goto skip_optional_kwonly; |
89 | } |
90 | } |
91 | if (fastargs[4]) { |
92 | if (PyObject_GetBuffer(fastargs[4], &person, PyBUF_SIMPLE) != 0) { |
93 | goto exit; |
94 | } |
95 | if (!PyBuffer_IsContiguous(&person, 'C')) { |
96 | _PyArg_BadArgument("blake2b" , "argument 'person'" , "contiguous buffer" , fastargs[4]); |
97 | goto exit; |
98 | } |
99 | if (!--noptargs) { |
100 | goto skip_optional_kwonly; |
101 | } |
102 | } |
103 | if (fastargs[5]) { |
104 | fanout = _PyLong_AsInt(fastargs[5]); |
105 | if (fanout == -1 && PyErr_Occurred()) { |
106 | goto exit; |
107 | } |
108 | if (!--noptargs) { |
109 | goto skip_optional_kwonly; |
110 | } |
111 | } |
112 | if (fastargs[6]) { |
113 | depth = _PyLong_AsInt(fastargs[6]); |
114 | if (depth == -1 && PyErr_Occurred()) { |
115 | goto exit; |
116 | } |
117 | if (!--noptargs) { |
118 | goto skip_optional_kwonly; |
119 | } |
120 | } |
121 | if (fastargs[7]) { |
122 | if (!_PyLong_UnsignedLong_Converter(fastargs[7], &leaf_size)) { |
123 | goto exit; |
124 | } |
125 | if (!--noptargs) { |
126 | goto skip_optional_kwonly; |
127 | } |
128 | } |
129 | if (fastargs[8]) { |
130 | if (!_PyLong_UnsignedLongLong_Converter(fastargs[8], &node_offset)) { |
131 | goto exit; |
132 | } |
133 | if (!--noptargs) { |
134 | goto skip_optional_kwonly; |
135 | } |
136 | } |
137 | if (fastargs[9]) { |
138 | node_depth = _PyLong_AsInt(fastargs[9]); |
139 | if (node_depth == -1 && PyErr_Occurred()) { |
140 | goto exit; |
141 | } |
142 | if (!--noptargs) { |
143 | goto skip_optional_kwonly; |
144 | } |
145 | } |
146 | if (fastargs[10]) { |
147 | inner_size = _PyLong_AsInt(fastargs[10]); |
148 | if (inner_size == -1 && PyErr_Occurred()) { |
149 | goto exit; |
150 | } |
151 | if (!--noptargs) { |
152 | goto skip_optional_kwonly; |
153 | } |
154 | } |
155 | if (fastargs[11]) { |
156 | last_node = PyObject_IsTrue(fastargs[11]); |
157 | if (last_node < 0) { |
158 | goto exit; |
159 | } |
160 | if (!--noptargs) { |
161 | goto skip_optional_kwonly; |
162 | } |
163 | } |
164 | usedforsecurity = PyObject_IsTrue(fastargs[12]); |
165 | if (usedforsecurity < 0) { |
166 | goto exit; |
167 | } |
168 | skip_optional_kwonly: |
169 | return_value = py_blake2b_new_impl(type, data, digest_size, &key, &salt, &person, fanout, depth, leaf_size, node_offset, node_depth, inner_size, last_node, usedforsecurity); |
170 | |
171 | exit: |
172 | /* Cleanup for key */ |
173 | if (key.obj) { |
174 | PyBuffer_Release(&key); |
175 | } |
176 | /* Cleanup for salt */ |
177 | if (salt.obj) { |
178 | PyBuffer_Release(&salt); |
179 | } |
180 | /* Cleanup for person */ |
181 | if (person.obj) { |
182 | PyBuffer_Release(&person); |
183 | } |
184 | |
185 | return return_value; |
186 | } |
187 | |
188 | PyDoc_STRVAR(_blake2_blake2b_copy__doc__, |
189 | "copy($self, /)\n" |
190 | "--\n" |
191 | "\n" |
192 | "Return a copy of the hash object." ); |
193 | |
194 | #define _BLAKE2_BLAKE2B_COPY_METHODDEF \ |
195 | {"copy", (PyCFunction)_blake2_blake2b_copy, METH_NOARGS, _blake2_blake2b_copy__doc__}, |
196 | |
197 | static PyObject * |
198 | _blake2_blake2b_copy_impl(BLAKE2bObject *self); |
199 | |
200 | static PyObject * |
201 | _blake2_blake2b_copy(BLAKE2bObject *self, PyObject *Py_UNUSED(ignored)) |
202 | { |
203 | return _blake2_blake2b_copy_impl(self); |
204 | } |
205 | |
206 | PyDoc_STRVAR(_blake2_blake2b_update__doc__, |
207 | "update($self, data, /)\n" |
208 | "--\n" |
209 | "\n" |
210 | "Update this hash object\'s state with the provided bytes-like object." ); |
211 | |
212 | #define _BLAKE2_BLAKE2B_UPDATE_METHODDEF \ |
213 | {"update", (PyCFunction)_blake2_blake2b_update, METH_O, _blake2_blake2b_update__doc__}, |
214 | |
215 | PyDoc_STRVAR(_blake2_blake2b_digest__doc__, |
216 | "digest($self, /)\n" |
217 | "--\n" |
218 | "\n" |
219 | "Return the digest value as a bytes object." ); |
220 | |
221 | #define _BLAKE2_BLAKE2B_DIGEST_METHODDEF \ |
222 | {"digest", (PyCFunction)_blake2_blake2b_digest, METH_NOARGS, _blake2_blake2b_digest__doc__}, |
223 | |
224 | static PyObject * |
225 | _blake2_blake2b_digest_impl(BLAKE2bObject *self); |
226 | |
227 | static PyObject * |
228 | _blake2_blake2b_digest(BLAKE2bObject *self, PyObject *Py_UNUSED(ignored)) |
229 | { |
230 | return _blake2_blake2b_digest_impl(self); |
231 | } |
232 | |
233 | PyDoc_STRVAR(_blake2_blake2b_hexdigest__doc__, |
234 | "hexdigest($self, /)\n" |
235 | "--\n" |
236 | "\n" |
237 | "Return the digest value as a string of hexadecimal digits." ); |
238 | |
239 | #define _BLAKE2_BLAKE2B_HEXDIGEST_METHODDEF \ |
240 | {"hexdigest", (PyCFunction)_blake2_blake2b_hexdigest, METH_NOARGS, _blake2_blake2b_hexdigest__doc__}, |
241 | |
242 | static PyObject * |
243 | _blake2_blake2b_hexdigest_impl(BLAKE2bObject *self); |
244 | |
245 | static PyObject * |
246 | _blake2_blake2b_hexdigest(BLAKE2bObject *self, PyObject *Py_UNUSED(ignored)) |
247 | { |
248 | return _blake2_blake2b_hexdigest_impl(self); |
249 | } |
250 | /*[clinic end generated code: output=10eb47aba77f192d input=a9049054013a1b77]*/ |
251 | |