17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(EVP_copy__doc__, 67db96d56Sopenharmony_ci"copy($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n" 97db96d56Sopenharmony_ci"Return a copy of the hash object."); 107db96d56Sopenharmony_ci 117db96d56Sopenharmony_ci#define EVP_COPY_METHODDEF \ 127db96d56Sopenharmony_ci {"copy", (PyCFunction)EVP_copy, METH_NOARGS, EVP_copy__doc__}, 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_cistatic PyObject * 157db96d56Sopenharmony_ciEVP_copy_impl(EVPobject *self); 167db96d56Sopenharmony_ci 177db96d56Sopenharmony_cistatic PyObject * 187db96d56Sopenharmony_ciEVP_copy(EVPobject *self, PyObject *Py_UNUSED(ignored)) 197db96d56Sopenharmony_ci{ 207db96d56Sopenharmony_ci return EVP_copy_impl(self); 217db96d56Sopenharmony_ci} 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ciPyDoc_STRVAR(EVP_digest__doc__, 247db96d56Sopenharmony_ci"digest($self, /)\n" 257db96d56Sopenharmony_ci"--\n" 267db96d56Sopenharmony_ci"\n" 277db96d56Sopenharmony_ci"Return the digest value as a bytes object."); 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci#define EVP_DIGEST_METHODDEF \ 307db96d56Sopenharmony_ci {"digest", (PyCFunction)EVP_digest, METH_NOARGS, EVP_digest__doc__}, 317db96d56Sopenharmony_ci 327db96d56Sopenharmony_cistatic PyObject * 337db96d56Sopenharmony_ciEVP_digest_impl(EVPobject *self); 347db96d56Sopenharmony_ci 357db96d56Sopenharmony_cistatic PyObject * 367db96d56Sopenharmony_ciEVP_digest(EVPobject *self, PyObject *Py_UNUSED(ignored)) 377db96d56Sopenharmony_ci{ 387db96d56Sopenharmony_ci return EVP_digest_impl(self); 397db96d56Sopenharmony_ci} 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ciPyDoc_STRVAR(EVP_hexdigest__doc__, 427db96d56Sopenharmony_ci"hexdigest($self, /)\n" 437db96d56Sopenharmony_ci"--\n" 447db96d56Sopenharmony_ci"\n" 457db96d56Sopenharmony_ci"Return the digest value as a string of hexadecimal digits."); 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci#define EVP_HEXDIGEST_METHODDEF \ 487db96d56Sopenharmony_ci {"hexdigest", (PyCFunction)EVP_hexdigest, METH_NOARGS, EVP_hexdigest__doc__}, 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_cistatic PyObject * 517db96d56Sopenharmony_ciEVP_hexdigest_impl(EVPobject *self); 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_cistatic PyObject * 547db96d56Sopenharmony_ciEVP_hexdigest(EVPobject *self, PyObject *Py_UNUSED(ignored)) 557db96d56Sopenharmony_ci{ 567db96d56Sopenharmony_ci return EVP_hexdigest_impl(self); 577db96d56Sopenharmony_ci} 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ciPyDoc_STRVAR(EVP_update__doc__, 607db96d56Sopenharmony_ci"update($self, obj, /)\n" 617db96d56Sopenharmony_ci"--\n" 627db96d56Sopenharmony_ci"\n" 637db96d56Sopenharmony_ci"Update this hash object\'s state with the provided string."); 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci#define EVP_UPDATE_METHODDEF \ 667db96d56Sopenharmony_ci {"update", (PyCFunction)EVP_update, METH_O, EVP_update__doc__}, 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHAKE) 697db96d56Sopenharmony_ci 707db96d56Sopenharmony_ciPyDoc_STRVAR(EVPXOF_digest__doc__, 717db96d56Sopenharmony_ci"digest($self, /, length)\n" 727db96d56Sopenharmony_ci"--\n" 737db96d56Sopenharmony_ci"\n" 747db96d56Sopenharmony_ci"Return the digest value as a bytes object."); 757db96d56Sopenharmony_ci 767db96d56Sopenharmony_ci#define EVPXOF_DIGEST_METHODDEF \ 777db96d56Sopenharmony_ci {"digest", _PyCFunction_CAST(EVPXOF_digest), METH_FASTCALL|METH_KEYWORDS, EVPXOF_digest__doc__}, 787db96d56Sopenharmony_ci 797db96d56Sopenharmony_cistatic PyObject * 807db96d56Sopenharmony_ciEVPXOF_digest_impl(EVPobject *self, Py_ssize_t length); 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_cistatic PyObject * 837db96d56Sopenharmony_ciEVPXOF_digest(EVPobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 847db96d56Sopenharmony_ci{ 857db96d56Sopenharmony_ci PyObject *return_value = NULL; 867db96d56Sopenharmony_ci static const char * const _keywords[] = {"length", NULL}; 877db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "digest", 0}; 887db96d56Sopenharmony_ci PyObject *argsbuf[1]; 897db96d56Sopenharmony_ci Py_ssize_t length; 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 927db96d56Sopenharmony_ci if (!args) { 937db96d56Sopenharmony_ci goto exit; 947db96d56Sopenharmony_ci } 957db96d56Sopenharmony_ci { 967db96d56Sopenharmony_ci Py_ssize_t ival = -1; 977db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[0]); 987db96d56Sopenharmony_ci if (iobj != NULL) { 997db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 1007db96d56Sopenharmony_ci Py_DECREF(iobj); 1017db96d56Sopenharmony_ci } 1027db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 1037db96d56Sopenharmony_ci goto exit; 1047db96d56Sopenharmony_ci } 1057db96d56Sopenharmony_ci length = ival; 1067db96d56Sopenharmony_ci } 1077db96d56Sopenharmony_ci return_value = EVPXOF_digest_impl(self, length); 1087db96d56Sopenharmony_ci 1097db96d56Sopenharmony_ciexit: 1107db96d56Sopenharmony_ci return return_value; 1117db96d56Sopenharmony_ci} 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHAKE) */ 1147db96d56Sopenharmony_ci 1157db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHAKE) 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ciPyDoc_STRVAR(EVPXOF_hexdigest__doc__, 1187db96d56Sopenharmony_ci"hexdigest($self, /, length)\n" 1197db96d56Sopenharmony_ci"--\n" 1207db96d56Sopenharmony_ci"\n" 1217db96d56Sopenharmony_ci"Return the digest value as a string of hexadecimal digits."); 1227db96d56Sopenharmony_ci 1237db96d56Sopenharmony_ci#define EVPXOF_HEXDIGEST_METHODDEF \ 1247db96d56Sopenharmony_ci {"hexdigest", _PyCFunction_CAST(EVPXOF_hexdigest), METH_FASTCALL|METH_KEYWORDS, EVPXOF_hexdigest__doc__}, 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_cistatic PyObject * 1277db96d56Sopenharmony_ciEVPXOF_hexdigest_impl(EVPobject *self, Py_ssize_t length); 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_cistatic PyObject * 1307db96d56Sopenharmony_ciEVPXOF_hexdigest(EVPobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1317db96d56Sopenharmony_ci{ 1327db96d56Sopenharmony_ci PyObject *return_value = NULL; 1337db96d56Sopenharmony_ci static const char * const _keywords[] = {"length", NULL}; 1347db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "hexdigest", 0}; 1357db96d56Sopenharmony_ci PyObject *argsbuf[1]; 1367db96d56Sopenharmony_ci Py_ssize_t length; 1377db96d56Sopenharmony_ci 1387db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 1397db96d56Sopenharmony_ci if (!args) { 1407db96d56Sopenharmony_ci goto exit; 1417db96d56Sopenharmony_ci } 1427db96d56Sopenharmony_ci { 1437db96d56Sopenharmony_ci Py_ssize_t ival = -1; 1447db96d56Sopenharmony_ci PyObject *iobj = _PyNumber_Index(args[0]); 1457db96d56Sopenharmony_ci if (iobj != NULL) { 1467db96d56Sopenharmony_ci ival = PyLong_AsSsize_t(iobj); 1477db96d56Sopenharmony_ci Py_DECREF(iobj); 1487db96d56Sopenharmony_ci } 1497db96d56Sopenharmony_ci if (ival == -1 && PyErr_Occurred()) { 1507db96d56Sopenharmony_ci goto exit; 1517db96d56Sopenharmony_ci } 1527db96d56Sopenharmony_ci length = ival; 1537db96d56Sopenharmony_ci } 1547db96d56Sopenharmony_ci return_value = EVPXOF_hexdigest_impl(self, length); 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ciexit: 1577db96d56Sopenharmony_ci return return_value; 1587db96d56Sopenharmony_ci} 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHAKE) */ 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ciPyDoc_STRVAR(EVP_new__doc__, 1637db96d56Sopenharmony_ci"new($module, /, name, string=b\'\', *, usedforsecurity=True)\n" 1647db96d56Sopenharmony_ci"--\n" 1657db96d56Sopenharmony_ci"\n" 1667db96d56Sopenharmony_ci"Return a new hash object using the named algorithm.\n" 1677db96d56Sopenharmony_ci"\n" 1687db96d56Sopenharmony_ci"An optional string argument may be provided and will be\n" 1697db96d56Sopenharmony_ci"automatically hashed.\n" 1707db96d56Sopenharmony_ci"\n" 1717db96d56Sopenharmony_ci"The MD5 and SHA1 algorithms are always supported."); 1727db96d56Sopenharmony_ci 1737db96d56Sopenharmony_ci#define EVP_NEW_METHODDEF \ 1747db96d56Sopenharmony_ci {"new", _PyCFunction_CAST(EVP_new), METH_FASTCALL|METH_KEYWORDS, EVP_new__doc__}, 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_cistatic PyObject * 1777db96d56Sopenharmony_ciEVP_new_impl(PyObject *module, PyObject *name_obj, PyObject *data_obj, 1787db96d56Sopenharmony_ci int usedforsecurity); 1797db96d56Sopenharmony_ci 1807db96d56Sopenharmony_cistatic PyObject * 1817db96d56Sopenharmony_ciEVP_new(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1827db96d56Sopenharmony_ci{ 1837db96d56Sopenharmony_ci PyObject *return_value = NULL; 1847db96d56Sopenharmony_ci static const char * const _keywords[] = {"name", "string", "usedforsecurity", NULL}; 1857db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "new", 0}; 1867db96d56Sopenharmony_ci PyObject *argsbuf[3]; 1877db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 1887db96d56Sopenharmony_ci PyObject *name_obj; 1897db96d56Sopenharmony_ci PyObject *data_obj = NULL; 1907db96d56Sopenharmony_ci int usedforsecurity = 1; 1917db96d56Sopenharmony_ci 1927db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf); 1937db96d56Sopenharmony_ci if (!args) { 1947db96d56Sopenharmony_ci goto exit; 1957db96d56Sopenharmony_ci } 1967db96d56Sopenharmony_ci name_obj = args[0]; 1977db96d56Sopenharmony_ci if (!noptargs) { 1987db96d56Sopenharmony_ci goto skip_optional_pos; 1997db96d56Sopenharmony_ci } 2007db96d56Sopenharmony_ci if (args[1]) { 2017db96d56Sopenharmony_ci data_obj = args[1]; 2027db96d56Sopenharmony_ci if (!--noptargs) { 2037db96d56Sopenharmony_ci goto skip_optional_pos; 2047db96d56Sopenharmony_ci } 2057db96d56Sopenharmony_ci } 2067db96d56Sopenharmony_ciskip_optional_pos: 2077db96d56Sopenharmony_ci if (!noptargs) { 2087db96d56Sopenharmony_ci goto skip_optional_kwonly; 2097db96d56Sopenharmony_ci } 2107db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[2]); 2117db96d56Sopenharmony_ci if (usedforsecurity < 0) { 2127db96d56Sopenharmony_ci goto exit; 2137db96d56Sopenharmony_ci } 2147db96d56Sopenharmony_ciskip_optional_kwonly: 2157db96d56Sopenharmony_ci return_value = EVP_new_impl(module, name_obj, data_obj, usedforsecurity); 2167db96d56Sopenharmony_ci 2177db96d56Sopenharmony_ciexit: 2187db96d56Sopenharmony_ci return return_value; 2197db96d56Sopenharmony_ci} 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_md5__doc__, 2227db96d56Sopenharmony_ci"openssl_md5($module, /, string=b\'\', *, usedforsecurity=True)\n" 2237db96d56Sopenharmony_ci"--\n" 2247db96d56Sopenharmony_ci"\n" 2257db96d56Sopenharmony_ci"Returns a md5 hash object; optionally initialized with a string"); 2267db96d56Sopenharmony_ci 2277db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_MD5_METHODDEF \ 2287db96d56Sopenharmony_ci {"openssl_md5", _PyCFunction_CAST(_hashlib_openssl_md5), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_md5__doc__}, 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_cistatic PyObject * 2317db96d56Sopenharmony_ci_hashlib_openssl_md5_impl(PyObject *module, PyObject *data_obj, 2327db96d56Sopenharmony_ci int usedforsecurity); 2337db96d56Sopenharmony_ci 2347db96d56Sopenharmony_cistatic PyObject * 2357db96d56Sopenharmony_ci_hashlib_openssl_md5(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2367db96d56Sopenharmony_ci{ 2377db96d56Sopenharmony_ci PyObject *return_value = NULL; 2387db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 2397db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_md5", 0}; 2407db96d56Sopenharmony_ci PyObject *argsbuf[2]; 2417db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 2427db96d56Sopenharmony_ci PyObject *data_obj = NULL; 2437db96d56Sopenharmony_ci int usedforsecurity = 1; 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 2467db96d56Sopenharmony_ci if (!args) { 2477db96d56Sopenharmony_ci goto exit; 2487db96d56Sopenharmony_ci } 2497db96d56Sopenharmony_ci if (!noptargs) { 2507db96d56Sopenharmony_ci goto skip_optional_pos; 2517db96d56Sopenharmony_ci } 2527db96d56Sopenharmony_ci if (args[0]) { 2537db96d56Sopenharmony_ci data_obj = args[0]; 2547db96d56Sopenharmony_ci if (!--noptargs) { 2557db96d56Sopenharmony_ci goto skip_optional_pos; 2567db96d56Sopenharmony_ci } 2577db96d56Sopenharmony_ci } 2587db96d56Sopenharmony_ciskip_optional_pos: 2597db96d56Sopenharmony_ci if (!noptargs) { 2607db96d56Sopenharmony_ci goto skip_optional_kwonly; 2617db96d56Sopenharmony_ci } 2627db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 2637db96d56Sopenharmony_ci if (usedforsecurity < 0) { 2647db96d56Sopenharmony_ci goto exit; 2657db96d56Sopenharmony_ci } 2667db96d56Sopenharmony_ciskip_optional_kwonly: 2677db96d56Sopenharmony_ci return_value = _hashlib_openssl_md5_impl(module, data_obj, usedforsecurity); 2687db96d56Sopenharmony_ci 2697db96d56Sopenharmony_ciexit: 2707db96d56Sopenharmony_ci return return_value; 2717db96d56Sopenharmony_ci} 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha1__doc__, 2747db96d56Sopenharmony_ci"openssl_sha1($module, /, string=b\'\', *, usedforsecurity=True)\n" 2757db96d56Sopenharmony_ci"--\n" 2767db96d56Sopenharmony_ci"\n" 2777db96d56Sopenharmony_ci"Returns a sha1 hash object; optionally initialized with a string"); 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA1_METHODDEF \ 2807db96d56Sopenharmony_ci {"openssl_sha1", _PyCFunction_CAST(_hashlib_openssl_sha1), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha1__doc__}, 2817db96d56Sopenharmony_ci 2827db96d56Sopenharmony_cistatic PyObject * 2837db96d56Sopenharmony_ci_hashlib_openssl_sha1_impl(PyObject *module, PyObject *data_obj, 2847db96d56Sopenharmony_ci int usedforsecurity); 2857db96d56Sopenharmony_ci 2867db96d56Sopenharmony_cistatic PyObject * 2877db96d56Sopenharmony_ci_hashlib_openssl_sha1(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 2887db96d56Sopenharmony_ci{ 2897db96d56Sopenharmony_ci PyObject *return_value = NULL; 2907db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 2917db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha1", 0}; 2927db96d56Sopenharmony_ci PyObject *argsbuf[2]; 2937db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 2947db96d56Sopenharmony_ci PyObject *data_obj = NULL; 2957db96d56Sopenharmony_ci int usedforsecurity = 1; 2967db96d56Sopenharmony_ci 2977db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 2987db96d56Sopenharmony_ci if (!args) { 2997db96d56Sopenharmony_ci goto exit; 3007db96d56Sopenharmony_ci } 3017db96d56Sopenharmony_ci if (!noptargs) { 3027db96d56Sopenharmony_ci goto skip_optional_pos; 3037db96d56Sopenharmony_ci } 3047db96d56Sopenharmony_ci if (args[0]) { 3057db96d56Sopenharmony_ci data_obj = args[0]; 3067db96d56Sopenharmony_ci if (!--noptargs) { 3077db96d56Sopenharmony_ci goto skip_optional_pos; 3087db96d56Sopenharmony_ci } 3097db96d56Sopenharmony_ci } 3107db96d56Sopenharmony_ciskip_optional_pos: 3117db96d56Sopenharmony_ci if (!noptargs) { 3127db96d56Sopenharmony_ci goto skip_optional_kwonly; 3137db96d56Sopenharmony_ci } 3147db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 3157db96d56Sopenharmony_ci if (usedforsecurity < 0) { 3167db96d56Sopenharmony_ci goto exit; 3177db96d56Sopenharmony_ci } 3187db96d56Sopenharmony_ciskip_optional_kwonly: 3197db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha1_impl(module, data_obj, usedforsecurity); 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_ciexit: 3227db96d56Sopenharmony_ci return return_value; 3237db96d56Sopenharmony_ci} 3247db96d56Sopenharmony_ci 3257db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha224__doc__, 3267db96d56Sopenharmony_ci"openssl_sha224($module, /, string=b\'\', *, usedforsecurity=True)\n" 3277db96d56Sopenharmony_ci"--\n" 3287db96d56Sopenharmony_ci"\n" 3297db96d56Sopenharmony_ci"Returns a sha224 hash object; optionally initialized with a string"); 3307db96d56Sopenharmony_ci 3317db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA224_METHODDEF \ 3327db96d56Sopenharmony_ci {"openssl_sha224", _PyCFunction_CAST(_hashlib_openssl_sha224), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha224__doc__}, 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_cistatic PyObject * 3357db96d56Sopenharmony_ci_hashlib_openssl_sha224_impl(PyObject *module, PyObject *data_obj, 3367db96d56Sopenharmony_ci int usedforsecurity); 3377db96d56Sopenharmony_ci 3387db96d56Sopenharmony_cistatic PyObject * 3397db96d56Sopenharmony_ci_hashlib_openssl_sha224(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 3407db96d56Sopenharmony_ci{ 3417db96d56Sopenharmony_ci PyObject *return_value = NULL; 3427db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 3437db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha224", 0}; 3447db96d56Sopenharmony_ci PyObject *argsbuf[2]; 3457db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 3467db96d56Sopenharmony_ci PyObject *data_obj = NULL; 3477db96d56Sopenharmony_ci int usedforsecurity = 1; 3487db96d56Sopenharmony_ci 3497db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 3507db96d56Sopenharmony_ci if (!args) { 3517db96d56Sopenharmony_ci goto exit; 3527db96d56Sopenharmony_ci } 3537db96d56Sopenharmony_ci if (!noptargs) { 3547db96d56Sopenharmony_ci goto skip_optional_pos; 3557db96d56Sopenharmony_ci } 3567db96d56Sopenharmony_ci if (args[0]) { 3577db96d56Sopenharmony_ci data_obj = args[0]; 3587db96d56Sopenharmony_ci if (!--noptargs) { 3597db96d56Sopenharmony_ci goto skip_optional_pos; 3607db96d56Sopenharmony_ci } 3617db96d56Sopenharmony_ci } 3627db96d56Sopenharmony_ciskip_optional_pos: 3637db96d56Sopenharmony_ci if (!noptargs) { 3647db96d56Sopenharmony_ci goto skip_optional_kwonly; 3657db96d56Sopenharmony_ci } 3667db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 3677db96d56Sopenharmony_ci if (usedforsecurity < 0) { 3687db96d56Sopenharmony_ci goto exit; 3697db96d56Sopenharmony_ci } 3707db96d56Sopenharmony_ciskip_optional_kwonly: 3717db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha224_impl(module, data_obj, usedforsecurity); 3727db96d56Sopenharmony_ci 3737db96d56Sopenharmony_ciexit: 3747db96d56Sopenharmony_ci return return_value; 3757db96d56Sopenharmony_ci} 3767db96d56Sopenharmony_ci 3777db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha256__doc__, 3787db96d56Sopenharmony_ci"openssl_sha256($module, /, string=b\'\', *, usedforsecurity=True)\n" 3797db96d56Sopenharmony_ci"--\n" 3807db96d56Sopenharmony_ci"\n" 3817db96d56Sopenharmony_ci"Returns a sha256 hash object; optionally initialized with a string"); 3827db96d56Sopenharmony_ci 3837db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA256_METHODDEF \ 3847db96d56Sopenharmony_ci {"openssl_sha256", _PyCFunction_CAST(_hashlib_openssl_sha256), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha256__doc__}, 3857db96d56Sopenharmony_ci 3867db96d56Sopenharmony_cistatic PyObject * 3877db96d56Sopenharmony_ci_hashlib_openssl_sha256_impl(PyObject *module, PyObject *data_obj, 3887db96d56Sopenharmony_ci int usedforsecurity); 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_cistatic PyObject * 3917db96d56Sopenharmony_ci_hashlib_openssl_sha256(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 3927db96d56Sopenharmony_ci{ 3937db96d56Sopenharmony_ci PyObject *return_value = NULL; 3947db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 3957db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha256", 0}; 3967db96d56Sopenharmony_ci PyObject *argsbuf[2]; 3977db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 3987db96d56Sopenharmony_ci PyObject *data_obj = NULL; 3997db96d56Sopenharmony_ci int usedforsecurity = 1; 4007db96d56Sopenharmony_ci 4017db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 4027db96d56Sopenharmony_ci if (!args) { 4037db96d56Sopenharmony_ci goto exit; 4047db96d56Sopenharmony_ci } 4057db96d56Sopenharmony_ci if (!noptargs) { 4067db96d56Sopenharmony_ci goto skip_optional_pos; 4077db96d56Sopenharmony_ci } 4087db96d56Sopenharmony_ci if (args[0]) { 4097db96d56Sopenharmony_ci data_obj = args[0]; 4107db96d56Sopenharmony_ci if (!--noptargs) { 4117db96d56Sopenharmony_ci goto skip_optional_pos; 4127db96d56Sopenharmony_ci } 4137db96d56Sopenharmony_ci } 4147db96d56Sopenharmony_ciskip_optional_pos: 4157db96d56Sopenharmony_ci if (!noptargs) { 4167db96d56Sopenharmony_ci goto skip_optional_kwonly; 4177db96d56Sopenharmony_ci } 4187db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 4197db96d56Sopenharmony_ci if (usedforsecurity < 0) { 4207db96d56Sopenharmony_ci goto exit; 4217db96d56Sopenharmony_ci } 4227db96d56Sopenharmony_ciskip_optional_kwonly: 4237db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha256_impl(module, data_obj, usedforsecurity); 4247db96d56Sopenharmony_ci 4257db96d56Sopenharmony_ciexit: 4267db96d56Sopenharmony_ci return return_value; 4277db96d56Sopenharmony_ci} 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha384__doc__, 4307db96d56Sopenharmony_ci"openssl_sha384($module, /, string=b\'\', *, usedforsecurity=True)\n" 4317db96d56Sopenharmony_ci"--\n" 4327db96d56Sopenharmony_ci"\n" 4337db96d56Sopenharmony_ci"Returns a sha384 hash object; optionally initialized with a string"); 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA384_METHODDEF \ 4367db96d56Sopenharmony_ci {"openssl_sha384", _PyCFunction_CAST(_hashlib_openssl_sha384), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha384__doc__}, 4377db96d56Sopenharmony_ci 4387db96d56Sopenharmony_cistatic PyObject * 4397db96d56Sopenharmony_ci_hashlib_openssl_sha384_impl(PyObject *module, PyObject *data_obj, 4407db96d56Sopenharmony_ci int usedforsecurity); 4417db96d56Sopenharmony_ci 4427db96d56Sopenharmony_cistatic PyObject * 4437db96d56Sopenharmony_ci_hashlib_openssl_sha384(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 4447db96d56Sopenharmony_ci{ 4457db96d56Sopenharmony_ci PyObject *return_value = NULL; 4467db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 4477db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha384", 0}; 4487db96d56Sopenharmony_ci PyObject *argsbuf[2]; 4497db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 4507db96d56Sopenharmony_ci PyObject *data_obj = NULL; 4517db96d56Sopenharmony_ci int usedforsecurity = 1; 4527db96d56Sopenharmony_ci 4537db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 4547db96d56Sopenharmony_ci if (!args) { 4557db96d56Sopenharmony_ci goto exit; 4567db96d56Sopenharmony_ci } 4577db96d56Sopenharmony_ci if (!noptargs) { 4587db96d56Sopenharmony_ci goto skip_optional_pos; 4597db96d56Sopenharmony_ci } 4607db96d56Sopenharmony_ci if (args[0]) { 4617db96d56Sopenharmony_ci data_obj = args[0]; 4627db96d56Sopenharmony_ci if (!--noptargs) { 4637db96d56Sopenharmony_ci goto skip_optional_pos; 4647db96d56Sopenharmony_ci } 4657db96d56Sopenharmony_ci } 4667db96d56Sopenharmony_ciskip_optional_pos: 4677db96d56Sopenharmony_ci if (!noptargs) { 4687db96d56Sopenharmony_ci goto skip_optional_kwonly; 4697db96d56Sopenharmony_ci } 4707db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 4717db96d56Sopenharmony_ci if (usedforsecurity < 0) { 4727db96d56Sopenharmony_ci goto exit; 4737db96d56Sopenharmony_ci } 4747db96d56Sopenharmony_ciskip_optional_kwonly: 4757db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha384_impl(module, data_obj, usedforsecurity); 4767db96d56Sopenharmony_ci 4777db96d56Sopenharmony_ciexit: 4787db96d56Sopenharmony_ci return return_value; 4797db96d56Sopenharmony_ci} 4807db96d56Sopenharmony_ci 4817db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha512__doc__, 4827db96d56Sopenharmony_ci"openssl_sha512($module, /, string=b\'\', *, usedforsecurity=True)\n" 4837db96d56Sopenharmony_ci"--\n" 4847db96d56Sopenharmony_ci"\n" 4857db96d56Sopenharmony_ci"Returns a sha512 hash object; optionally initialized with a string"); 4867db96d56Sopenharmony_ci 4877db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA512_METHODDEF \ 4887db96d56Sopenharmony_ci {"openssl_sha512", _PyCFunction_CAST(_hashlib_openssl_sha512), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha512__doc__}, 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_cistatic PyObject * 4917db96d56Sopenharmony_ci_hashlib_openssl_sha512_impl(PyObject *module, PyObject *data_obj, 4927db96d56Sopenharmony_ci int usedforsecurity); 4937db96d56Sopenharmony_ci 4947db96d56Sopenharmony_cistatic PyObject * 4957db96d56Sopenharmony_ci_hashlib_openssl_sha512(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 4967db96d56Sopenharmony_ci{ 4977db96d56Sopenharmony_ci PyObject *return_value = NULL; 4987db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 4997db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha512", 0}; 5007db96d56Sopenharmony_ci PyObject *argsbuf[2]; 5017db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 5027db96d56Sopenharmony_ci PyObject *data_obj = NULL; 5037db96d56Sopenharmony_ci int usedforsecurity = 1; 5047db96d56Sopenharmony_ci 5057db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 5067db96d56Sopenharmony_ci if (!args) { 5077db96d56Sopenharmony_ci goto exit; 5087db96d56Sopenharmony_ci } 5097db96d56Sopenharmony_ci if (!noptargs) { 5107db96d56Sopenharmony_ci goto skip_optional_pos; 5117db96d56Sopenharmony_ci } 5127db96d56Sopenharmony_ci if (args[0]) { 5137db96d56Sopenharmony_ci data_obj = args[0]; 5147db96d56Sopenharmony_ci if (!--noptargs) { 5157db96d56Sopenharmony_ci goto skip_optional_pos; 5167db96d56Sopenharmony_ci } 5177db96d56Sopenharmony_ci } 5187db96d56Sopenharmony_ciskip_optional_pos: 5197db96d56Sopenharmony_ci if (!noptargs) { 5207db96d56Sopenharmony_ci goto skip_optional_kwonly; 5217db96d56Sopenharmony_ci } 5227db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 5237db96d56Sopenharmony_ci if (usedforsecurity < 0) { 5247db96d56Sopenharmony_ci goto exit; 5257db96d56Sopenharmony_ci } 5267db96d56Sopenharmony_ciskip_optional_kwonly: 5277db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha512_impl(module, data_obj, usedforsecurity); 5287db96d56Sopenharmony_ci 5297db96d56Sopenharmony_ciexit: 5307db96d56Sopenharmony_ci return return_value; 5317db96d56Sopenharmony_ci} 5327db96d56Sopenharmony_ci 5337db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHA3) 5347db96d56Sopenharmony_ci 5357db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha3_224__doc__, 5367db96d56Sopenharmony_ci"openssl_sha3_224($module, /, string=b\'\', *, usedforsecurity=True)\n" 5377db96d56Sopenharmony_ci"--\n" 5387db96d56Sopenharmony_ci"\n" 5397db96d56Sopenharmony_ci"Returns a sha3-224 hash object; optionally initialized with a string"); 5407db96d56Sopenharmony_ci 5417db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA3_224_METHODDEF \ 5427db96d56Sopenharmony_ci {"openssl_sha3_224", _PyCFunction_CAST(_hashlib_openssl_sha3_224), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha3_224__doc__}, 5437db96d56Sopenharmony_ci 5447db96d56Sopenharmony_cistatic PyObject * 5457db96d56Sopenharmony_ci_hashlib_openssl_sha3_224_impl(PyObject *module, PyObject *data_obj, 5467db96d56Sopenharmony_ci int usedforsecurity); 5477db96d56Sopenharmony_ci 5487db96d56Sopenharmony_cistatic PyObject * 5497db96d56Sopenharmony_ci_hashlib_openssl_sha3_224(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 5507db96d56Sopenharmony_ci{ 5517db96d56Sopenharmony_ci PyObject *return_value = NULL; 5527db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 5537db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha3_224", 0}; 5547db96d56Sopenharmony_ci PyObject *argsbuf[2]; 5557db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 5567db96d56Sopenharmony_ci PyObject *data_obj = NULL; 5577db96d56Sopenharmony_ci int usedforsecurity = 1; 5587db96d56Sopenharmony_ci 5597db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 5607db96d56Sopenharmony_ci if (!args) { 5617db96d56Sopenharmony_ci goto exit; 5627db96d56Sopenharmony_ci } 5637db96d56Sopenharmony_ci if (!noptargs) { 5647db96d56Sopenharmony_ci goto skip_optional_pos; 5657db96d56Sopenharmony_ci } 5667db96d56Sopenharmony_ci if (args[0]) { 5677db96d56Sopenharmony_ci data_obj = args[0]; 5687db96d56Sopenharmony_ci if (!--noptargs) { 5697db96d56Sopenharmony_ci goto skip_optional_pos; 5707db96d56Sopenharmony_ci } 5717db96d56Sopenharmony_ci } 5727db96d56Sopenharmony_ciskip_optional_pos: 5737db96d56Sopenharmony_ci if (!noptargs) { 5747db96d56Sopenharmony_ci goto skip_optional_kwonly; 5757db96d56Sopenharmony_ci } 5767db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 5777db96d56Sopenharmony_ci if (usedforsecurity < 0) { 5787db96d56Sopenharmony_ci goto exit; 5797db96d56Sopenharmony_ci } 5807db96d56Sopenharmony_ciskip_optional_kwonly: 5817db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha3_224_impl(module, data_obj, usedforsecurity); 5827db96d56Sopenharmony_ci 5837db96d56Sopenharmony_ciexit: 5847db96d56Sopenharmony_ci return return_value; 5857db96d56Sopenharmony_ci} 5867db96d56Sopenharmony_ci 5877db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHA3) */ 5887db96d56Sopenharmony_ci 5897db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHA3) 5907db96d56Sopenharmony_ci 5917db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha3_256__doc__, 5927db96d56Sopenharmony_ci"openssl_sha3_256($module, /, string=b\'\', *, usedforsecurity=True)\n" 5937db96d56Sopenharmony_ci"--\n" 5947db96d56Sopenharmony_ci"\n" 5957db96d56Sopenharmony_ci"Returns a sha3-256 hash object; optionally initialized with a string"); 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA3_256_METHODDEF \ 5987db96d56Sopenharmony_ci {"openssl_sha3_256", _PyCFunction_CAST(_hashlib_openssl_sha3_256), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha3_256__doc__}, 5997db96d56Sopenharmony_ci 6007db96d56Sopenharmony_cistatic PyObject * 6017db96d56Sopenharmony_ci_hashlib_openssl_sha3_256_impl(PyObject *module, PyObject *data_obj, 6027db96d56Sopenharmony_ci int usedforsecurity); 6037db96d56Sopenharmony_ci 6047db96d56Sopenharmony_cistatic PyObject * 6057db96d56Sopenharmony_ci_hashlib_openssl_sha3_256(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 6067db96d56Sopenharmony_ci{ 6077db96d56Sopenharmony_ci PyObject *return_value = NULL; 6087db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 6097db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha3_256", 0}; 6107db96d56Sopenharmony_ci PyObject *argsbuf[2]; 6117db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 6127db96d56Sopenharmony_ci PyObject *data_obj = NULL; 6137db96d56Sopenharmony_ci int usedforsecurity = 1; 6147db96d56Sopenharmony_ci 6157db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 6167db96d56Sopenharmony_ci if (!args) { 6177db96d56Sopenharmony_ci goto exit; 6187db96d56Sopenharmony_ci } 6197db96d56Sopenharmony_ci if (!noptargs) { 6207db96d56Sopenharmony_ci goto skip_optional_pos; 6217db96d56Sopenharmony_ci } 6227db96d56Sopenharmony_ci if (args[0]) { 6237db96d56Sopenharmony_ci data_obj = args[0]; 6247db96d56Sopenharmony_ci if (!--noptargs) { 6257db96d56Sopenharmony_ci goto skip_optional_pos; 6267db96d56Sopenharmony_ci } 6277db96d56Sopenharmony_ci } 6287db96d56Sopenharmony_ciskip_optional_pos: 6297db96d56Sopenharmony_ci if (!noptargs) { 6307db96d56Sopenharmony_ci goto skip_optional_kwonly; 6317db96d56Sopenharmony_ci } 6327db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 6337db96d56Sopenharmony_ci if (usedforsecurity < 0) { 6347db96d56Sopenharmony_ci goto exit; 6357db96d56Sopenharmony_ci } 6367db96d56Sopenharmony_ciskip_optional_kwonly: 6377db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha3_256_impl(module, data_obj, usedforsecurity); 6387db96d56Sopenharmony_ci 6397db96d56Sopenharmony_ciexit: 6407db96d56Sopenharmony_ci return return_value; 6417db96d56Sopenharmony_ci} 6427db96d56Sopenharmony_ci 6437db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHA3) */ 6447db96d56Sopenharmony_ci 6457db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHA3) 6467db96d56Sopenharmony_ci 6477db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha3_384__doc__, 6487db96d56Sopenharmony_ci"openssl_sha3_384($module, /, string=b\'\', *, usedforsecurity=True)\n" 6497db96d56Sopenharmony_ci"--\n" 6507db96d56Sopenharmony_ci"\n" 6517db96d56Sopenharmony_ci"Returns a sha3-384 hash object; optionally initialized with a string"); 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA3_384_METHODDEF \ 6547db96d56Sopenharmony_ci {"openssl_sha3_384", _PyCFunction_CAST(_hashlib_openssl_sha3_384), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha3_384__doc__}, 6557db96d56Sopenharmony_ci 6567db96d56Sopenharmony_cistatic PyObject * 6577db96d56Sopenharmony_ci_hashlib_openssl_sha3_384_impl(PyObject *module, PyObject *data_obj, 6587db96d56Sopenharmony_ci int usedforsecurity); 6597db96d56Sopenharmony_ci 6607db96d56Sopenharmony_cistatic PyObject * 6617db96d56Sopenharmony_ci_hashlib_openssl_sha3_384(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 6627db96d56Sopenharmony_ci{ 6637db96d56Sopenharmony_ci PyObject *return_value = NULL; 6647db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 6657db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha3_384", 0}; 6667db96d56Sopenharmony_ci PyObject *argsbuf[2]; 6677db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 6687db96d56Sopenharmony_ci PyObject *data_obj = NULL; 6697db96d56Sopenharmony_ci int usedforsecurity = 1; 6707db96d56Sopenharmony_ci 6717db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 6727db96d56Sopenharmony_ci if (!args) { 6737db96d56Sopenharmony_ci goto exit; 6747db96d56Sopenharmony_ci } 6757db96d56Sopenharmony_ci if (!noptargs) { 6767db96d56Sopenharmony_ci goto skip_optional_pos; 6777db96d56Sopenharmony_ci } 6787db96d56Sopenharmony_ci if (args[0]) { 6797db96d56Sopenharmony_ci data_obj = args[0]; 6807db96d56Sopenharmony_ci if (!--noptargs) { 6817db96d56Sopenharmony_ci goto skip_optional_pos; 6827db96d56Sopenharmony_ci } 6837db96d56Sopenharmony_ci } 6847db96d56Sopenharmony_ciskip_optional_pos: 6857db96d56Sopenharmony_ci if (!noptargs) { 6867db96d56Sopenharmony_ci goto skip_optional_kwonly; 6877db96d56Sopenharmony_ci } 6887db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 6897db96d56Sopenharmony_ci if (usedforsecurity < 0) { 6907db96d56Sopenharmony_ci goto exit; 6917db96d56Sopenharmony_ci } 6927db96d56Sopenharmony_ciskip_optional_kwonly: 6937db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha3_384_impl(module, data_obj, usedforsecurity); 6947db96d56Sopenharmony_ci 6957db96d56Sopenharmony_ciexit: 6967db96d56Sopenharmony_ci return return_value; 6977db96d56Sopenharmony_ci} 6987db96d56Sopenharmony_ci 6997db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHA3) */ 7007db96d56Sopenharmony_ci 7017db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHA3) 7027db96d56Sopenharmony_ci 7037db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_sha3_512__doc__, 7047db96d56Sopenharmony_ci"openssl_sha3_512($module, /, string=b\'\', *, usedforsecurity=True)\n" 7057db96d56Sopenharmony_ci"--\n" 7067db96d56Sopenharmony_ci"\n" 7077db96d56Sopenharmony_ci"Returns a sha3-512 hash object; optionally initialized with a string"); 7087db96d56Sopenharmony_ci 7097db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHA3_512_METHODDEF \ 7107db96d56Sopenharmony_ci {"openssl_sha3_512", _PyCFunction_CAST(_hashlib_openssl_sha3_512), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_sha3_512__doc__}, 7117db96d56Sopenharmony_ci 7127db96d56Sopenharmony_cistatic PyObject * 7137db96d56Sopenharmony_ci_hashlib_openssl_sha3_512_impl(PyObject *module, PyObject *data_obj, 7147db96d56Sopenharmony_ci int usedforsecurity); 7157db96d56Sopenharmony_ci 7167db96d56Sopenharmony_cistatic PyObject * 7177db96d56Sopenharmony_ci_hashlib_openssl_sha3_512(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 7187db96d56Sopenharmony_ci{ 7197db96d56Sopenharmony_ci PyObject *return_value = NULL; 7207db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 7217db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_sha3_512", 0}; 7227db96d56Sopenharmony_ci PyObject *argsbuf[2]; 7237db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 7247db96d56Sopenharmony_ci PyObject *data_obj = NULL; 7257db96d56Sopenharmony_ci int usedforsecurity = 1; 7267db96d56Sopenharmony_ci 7277db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 7287db96d56Sopenharmony_ci if (!args) { 7297db96d56Sopenharmony_ci goto exit; 7307db96d56Sopenharmony_ci } 7317db96d56Sopenharmony_ci if (!noptargs) { 7327db96d56Sopenharmony_ci goto skip_optional_pos; 7337db96d56Sopenharmony_ci } 7347db96d56Sopenharmony_ci if (args[0]) { 7357db96d56Sopenharmony_ci data_obj = args[0]; 7367db96d56Sopenharmony_ci if (!--noptargs) { 7377db96d56Sopenharmony_ci goto skip_optional_pos; 7387db96d56Sopenharmony_ci } 7397db96d56Sopenharmony_ci } 7407db96d56Sopenharmony_ciskip_optional_pos: 7417db96d56Sopenharmony_ci if (!noptargs) { 7427db96d56Sopenharmony_ci goto skip_optional_kwonly; 7437db96d56Sopenharmony_ci } 7447db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 7457db96d56Sopenharmony_ci if (usedforsecurity < 0) { 7467db96d56Sopenharmony_ci goto exit; 7477db96d56Sopenharmony_ci } 7487db96d56Sopenharmony_ciskip_optional_kwonly: 7497db96d56Sopenharmony_ci return_value = _hashlib_openssl_sha3_512_impl(module, data_obj, usedforsecurity); 7507db96d56Sopenharmony_ci 7517db96d56Sopenharmony_ciexit: 7527db96d56Sopenharmony_ci return return_value; 7537db96d56Sopenharmony_ci} 7547db96d56Sopenharmony_ci 7557db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHA3) */ 7567db96d56Sopenharmony_ci 7577db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHAKE) 7587db96d56Sopenharmony_ci 7597db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_shake_128__doc__, 7607db96d56Sopenharmony_ci"openssl_shake_128($module, /, string=b\'\', *, usedforsecurity=True)\n" 7617db96d56Sopenharmony_ci"--\n" 7627db96d56Sopenharmony_ci"\n" 7637db96d56Sopenharmony_ci"Returns a shake-128 variable hash object; optionally initialized with a string"); 7647db96d56Sopenharmony_ci 7657db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHAKE_128_METHODDEF \ 7667db96d56Sopenharmony_ci {"openssl_shake_128", _PyCFunction_CAST(_hashlib_openssl_shake_128), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_shake_128__doc__}, 7677db96d56Sopenharmony_ci 7687db96d56Sopenharmony_cistatic PyObject * 7697db96d56Sopenharmony_ci_hashlib_openssl_shake_128_impl(PyObject *module, PyObject *data_obj, 7707db96d56Sopenharmony_ci int usedforsecurity); 7717db96d56Sopenharmony_ci 7727db96d56Sopenharmony_cistatic PyObject * 7737db96d56Sopenharmony_ci_hashlib_openssl_shake_128(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 7747db96d56Sopenharmony_ci{ 7757db96d56Sopenharmony_ci PyObject *return_value = NULL; 7767db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 7777db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_shake_128", 0}; 7787db96d56Sopenharmony_ci PyObject *argsbuf[2]; 7797db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 7807db96d56Sopenharmony_ci PyObject *data_obj = NULL; 7817db96d56Sopenharmony_ci int usedforsecurity = 1; 7827db96d56Sopenharmony_ci 7837db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 7847db96d56Sopenharmony_ci if (!args) { 7857db96d56Sopenharmony_ci goto exit; 7867db96d56Sopenharmony_ci } 7877db96d56Sopenharmony_ci if (!noptargs) { 7887db96d56Sopenharmony_ci goto skip_optional_pos; 7897db96d56Sopenharmony_ci } 7907db96d56Sopenharmony_ci if (args[0]) { 7917db96d56Sopenharmony_ci data_obj = args[0]; 7927db96d56Sopenharmony_ci if (!--noptargs) { 7937db96d56Sopenharmony_ci goto skip_optional_pos; 7947db96d56Sopenharmony_ci } 7957db96d56Sopenharmony_ci } 7967db96d56Sopenharmony_ciskip_optional_pos: 7977db96d56Sopenharmony_ci if (!noptargs) { 7987db96d56Sopenharmony_ci goto skip_optional_kwonly; 7997db96d56Sopenharmony_ci } 8007db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 8017db96d56Sopenharmony_ci if (usedforsecurity < 0) { 8027db96d56Sopenharmony_ci goto exit; 8037db96d56Sopenharmony_ci } 8047db96d56Sopenharmony_ciskip_optional_kwonly: 8057db96d56Sopenharmony_ci return_value = _hashlib_openssl_shake_128_impl(module, data_obj, usedforsecurity); 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ciexit: 8087db96d56Sopenharmony_ci return return_value; 8097db96d56Sopenharmony_ci} 8107db96d56Sopenharmony_ci 8117db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHAKE) */ 8127db96d56Sopenharmony_ci 8137db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SHAKE) 8147db96d56Sopenharmony_ci 8157db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_openssl_shake_256__doc__, 8167db96d56Sopenharmony_ci"openssl_shake_256($module, /, string=b\'\', *, usedforsecurity=True)\n" 8177db96d56Sopenharmony_ci"--\n" 8187db96d56Sopenharmony_ci"\n" 8197db96d56Sopenharmony_ci"Returns a shake-256 variable hash object; optionally initialized with a string"); 8207db96d56Sopenharmony_ci 8217db96d56Sopenharmony_ci#define _HASHLIB_OPENSSL_SHAKE_256_METHODDEF \ 8227db96d56Sopenharmony_ci {"openssl_shake_256", _PyCFunction_CAST(_hashlib_openssl_shake_256), METH_FASTCALL|METH_KEYWORDS, _hashlib_openssl_shake_256__doc__}, 8237db96d56Sopenharmony_ci 8247db96d56Sopenharmony_cistatic PyObject * 8257db96d56Sopenharmony_ci_hashlib_openssl_shake_256_impl(PyObject *module, PyObject *data_obj, 8267db96d56Sopenharmony_ci int usedforsecurity); 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_cistatic PyObject * 8297db96d56Sopenharmony_ci_hashlib_openssl_shake_256(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8307db96d56Sopenharmony_ci{ 8317db96d56Sopenharmony_ci PyObject *return_value = NULL; 8327db96d56Sopenharmony_ci static const char * const _keywords[] = {"string", "usedforsecurity", NULL}; 8337db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "openssl_shake_256", 0}; 8347db96d56Sopenharmony_ci PyObject *argsbuf[2]; 8357db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 8367db96d56Sopenharmony_ci PyObject *data_obj = NULL; 8377db96d56Sopenharmony_ci int usedforsecurity = 1; 8387db96d56Sopenharmony_ci 8397db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 8407db96d56Sopenharmony_ci if (!args) { 8417db96d56Sopenharmony_ci goto exit; 8427db96d56Sopenharmony_ci } 8437db96d56Sopenharmony_ci if (!noptargs) { 8447db96d56Sopenharmony_ci goto skip_optional_pos; 8457db96d56Sopenharmony_ci } 8467db96d56Sopenharmony_ci if (args[0]) { 8477db96d56Sopenharmony_ci data_obj = args[0]; 8487db96d56Sopenharmony_ci if (!--noptargs) { 8497db96d56Sopenharmony_ci goto skip_optional_pos; 8507db96d56Sopenharmony_ci } 8517db96d56Sopenharmony_ci } 8527db96d56Sopenharmony_ciskip_optional_pos: 8537db96d56Sopenharmony_ci if (!noptargs) { 8547db96d56Sopenharmony_ci goto skip_optional_kwonly; 8557db96d56Sopenharmony_ci } 8567db96d56Sopenharmony_ci usedforsecurity = PyObject_IsTrue(args[1]); 8577db96d56Sopenharmony_ci if (usedforsecurity < 0) { 8587db96d56Sopenharmony_ci goto exit; 8597db96d56Sopenharmony_ci } 8607db96d56Sopenharmony_ciskip_optional_kwonly: 8617db96d56Sopenharmony_ci return_value = _hashlib_openssl_shake_256_impl(module, data_obj, usedforsecurity); 8627db96d56Sopenharmony_ci 8637db96d56Sopenharmony_ciexit: 8647db96d56Sopenharmony_ci return return_value; 8657db96d56Sopenharmony_ci} 8667db96d56Sopenharmony_ci 8677db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SHAKE) */ 8687db96d56Sopenharmony_ci 8697db96d56Sopenharmony_ciPyDoc_STRVAR(pbkdf2_hmac__doc__, 8707db96d56Sopenharmony_ci"pbkdf2_hmac($module, /, hash_name, password, salt, iterations,\n" 8717db96d56Sopenharmony_ci" dklen=None)\n" 8727db96d56Sopenharmony_ci"--\n" 8737db96d56Sopenharmony_ci"\n" 8747db96d56Sopenharmony_ci"Password based key derivation function 2 (PKCS #5 v2.0) with HMAC as pseudorandom function."); 8757db96d56Sopenharmony_ci 8767db96d56Sopenharmony_ci#define PBKDF2_HMAC_METHODDEF \ 8777db96d56Sopenharmony_ci {"pbkdf2_hmac", _PyCFunction_CAST(pbkdf2_hmac), METH_FASTCALL|METH_KEYWORDS, pbkdf2_hmac__doc__}, 8787db96d56Sopenharmony_ci 8797db96d56Sopenharmony_cistatic PyObject * 8807db96d56Sopenharmony_cipbkdf2_hmac_impl(PyObject *module, const char *hash_name, 8817db96d56Sopenharmony_ci Py_buffer *password, Py_buffer *salt, long iterations, 8827db96d56Sopenharmony_ci PyObject *dklen_obj); 8837db96d56Sopenharmony_ci 8847db96d56Sopenharmony_cistatic PyObject * 8857db96d56Sopenharmony_cipbkdf2_hmac(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8867db96d56Sopenharmony_ci{ 8877db96d56Sopenharmony_ci PyObject *return_value = NULL; 8887db96d56Sopenharmony_ci static const char * const _keywords[] = {"hash_name", "password", "salt", "iterations", "dklen", NULL}; 8897db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "pbkdf2_hmac", 0}; 8907db96d56Sopenharmony_ci PyObject *argsbuf[5]; 8917db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 4; 8927db96d56Sopenharmony_ci const char *hash_name; 8937db96d56Sopenharmony_ci Py_buffer password = {NULL, NULL}; 8947db96d56Sopenharmony_ci Py_buffer salt = {NULL, NULL}; 8957db96d56Sopenharmony_ci long iterations; 8967db96d56Sopenharmony_ci PyObject *dklen_obj = Py_None; 8977db96d56Sopenharmony_ci 8987db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 4, 5, 0, argsbuf); 8997db96d56Sopenharmony_ci if (!args) { 9007db96d56Sopenharmony_ci goto exit; 9017db96d56Sopenharmony_ci } 9027db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 9037db96d56Sopenharmony_ci _PyArg_BadArgument("pbkdf2_hmac", "argument 'hash_name'", "str", args[0]); 9047db96d56Sopenharmony_ci goto exit; 9057db96d56Sopenharmony_ci } 9067db96d56Sopenharmony_ci Py_ssize_t hash_name_length; 9077db96d56Sopenharmony_ci hash_name = PyUnicode_AsUTF8AndSize(args[0], &hash_name_length); 9087db96d56Sopenharmony_ci if (hash_name == NULL) { 9097db96d56Sopenharmony_ci goto exit; 9107db96d56Sopenharmony_ci } 9117db96d56Sopenharmony_ci if (strlen(hash_name) != (size_t)hash_name_length) { 9127db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 9137db96d56Sopenharmony_ci goto exit; 9147db96d56Sopenharmony_ci } 9157db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &password, PyBUF_SIMPLE) != 0) { 9167db96d56Sopenharmony_ci goto exit; 9177db96d56Sopenharmony_ci } 9187db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&password, 'C')) { 9197db96d56Sopenharmony_ci _PyArg_BadArgument("pbkdf2_hmac", "argument 'password'", "contiguous buffer", args[1]); 9207db96d56Sopenharmony_ci goto exit; 9217db96d56Sopenharmony_ci } 9227db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[2], &salt, PyBUF_SIMPLE) != 0) { 9237db96d56Sopenharmony_ci goto exit; 9247db96d56Sopenharmony_ci } 9257db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&salt, 'C')) { 9267db96d56Sopenharmony_ci _PyArg_BadArgument("pbkdf2_hmac", "argument 'salt'", "contiguous buffer", args[2]); 9277db96d56Sopenharmony_ci goto exit; 9287db96d56Sopenharmony_ci } 9297db96d56Sopenharmony_ci iterations = PyLong_AsLong(args[3]); 9307db96d56Sopenharmony_ci if (iterations == -1 && PyErr_Occurred()) { 9317db96d56Sopenharmony_ci goto exit; 9327db96d56Sopenharmony_ci } 9337db96d56Sopenharmony_ci if (!noptargs) { 9347db96d56Sopenharmony_ci goto skip_optional_pos; 9357db96d56Sopenharmony_ci } 9367db96d56Sopenharmony_ci dklen_obj = args[4]; 9377db96d56Sopenharmony_ciskip_optional_pos: 9387db96d56Sopenharmony_ci return_value = pbkdf2_hmac_impl(module, hash_name, &password, &salt, iterations, dklen_obj); 9397db96d56Sopenharmony_ci 9407db96d56Sopenharmony_ciexit: 9417db96d56Sopenharmony_ci /* Cleanup for password */ 9427db96d56Sopenharmony_ci if (password.obj) { 9437db96d56Sopenharmony_ci PyBuffer_Release(&password); 9447db96d56Sopenharmony_ci } 9457db96d56Sopenharmony_ci /* Cleanup for salt */ 9467db96d56Sopenharmony_ci if (salt.obj) { 9477db96d56Sopenharmony_ci PyBuffer_Release(&salt); 9487db96d56Sopenharmony_ci } 9497db96d56Sopenharmony_ci 9507db96d56Sopenharmony_ci return return_value; 9517db96d56Sopenharmony_ci} 9527db96d56Sopenharmony_ci 9537db96d56Sopenharmony_ci#if defined(PY_OPENSSL_HAS_SCRYPT) 9547db96d56Sopenharmony_ci 9557db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_scrypt__doc__, 9567db96d56Sopenharmony_ci"scrypt($module, /, password, *, salt=None, n=None, r=None, p=None,\n" 9577db96d56Sopenharmony_ci" maxmem=0, dklen=64)\n" 9587db96d56Sopenharmony_ci"--\n" 9597db96d56Sopenharmony_ci"\n" 9607db96d56Sopenharmony_ci"scrypt password-based key derivation function."); 9617db96d56Sopenharmony_ci 9627db96d56Sopenharmony_ci#define _HASHLIB_SCRYPT_METHODDEF \ 9637db96d56Sopenharmony_ci {"scrypt", _PyCFunction_CAST(_hashlib_scrypt), METH_FASTCALL|METH_KEYWORDS, _hashlib_scrypt__doc__}, 9647db96d56Sopenharmony_ci 9657db96d56Sopenharmony_cistatic PyObject * 9667db96d56Sopenharmony_ci_hashlib_scrypt_impl(PyObject *module, Py_buffer *password, Py_buffer *salt, 9677db96d56Sopenharmony_ci PyObject *n_obj, PyObject *r_obj, PyObject *p_obj, 9687db96d56Sopenharmony_ci long maxmem, long dklen); 9697db96d56Sopenharmony_ci 9707db96d56Sopenharmony_cistatic PyObject * 9717db96d56Sopenharmony_ci_hashlib_scrypt(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 9727db96d56Sopenharmony_ci{ 9737db96d56Sopenharmony_ci PyObject *return_value = NULL; 9747db96d56Sopenharmony_ci static const char * const _keywords[] = {"password", "salt", "n", "r", "p", "maxmem", "dklen", NULL}; 9757db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "scrypt", 0}; 9767db96d56Sopenharmony_ci PyObject *argsbuf[7]; 9777db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 9787db96d56Sopenharmony_ci Py_buffer password = {NULL, NULL}; 9797db96d56Sopenharmony_ci Py_buffer salt = {NULL, NULL}; 9807db96d56Sopenharmony_ci PyObject *n_obj = Py_None; 9817db96d56Sopenharmony_ci PyObject *r_obj = Py_None; 9827db96d56Sopenharmony_ci PyObject *p_obj = Py_None; 9837db96d56Sopenharmony_ci long maxmem = 0; 9847db96d56Sopenharmony_ci long dklen = 64; 9857db96d56Sopenharmony_ci 9867db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 9877db96d56Sopenharmony_ci if (!args) { 9887db96d56Sopenharmony_ci goto exit; 9897db96d56Sopenharmony_ci } 9907db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &password, PyBUF_SIMPLE) != 0) { 9917db96d56Sopenharmony_ci goto exit; 9927db96d56Sopenharmony_ci } 9937db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&password, 'C')) { 9947db96d56Sopenharmony_ci _PyArg_BadArgument("scrypt", "argument 'password'", "contiguous buffer", args[0]); 9957db96d56Sopenharmony_ci goto exit; 9967db96d56Sopenharmony_ci } 9977db96d56Sopenharmony_ci if (!noptargs) { 9987db96d56Sopenharmony_ci goto skip_optional_kwonly; 9997db96d56Sopenharmony_ci } 10007db96d56Sopenharmony_ci if (args[1]) { 10017db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &salt, PyBUF_SIMPLE) != 0) { 10027db96d56Sopenharmony_ci goto exit; 10037db96d56Sopenharmony_ci } 10047db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&salt, 'C')) { 10057db96d56Sopenharmony_ci _PyArg_BadArgument("scrypt", "argument 'salt'", "contiguous buffer", args[1]); 10067db96d56Sopenharmony_ci goto exit; 10077db96d56Sopenharmony_ci } 10087db96d56Sopenharmony_ci if (!--noptargs) { 10097db96d56Sopenharmony_ci goto skip_optional_kwonly; 10107db96d56Sopenharmony_ci } 10117db96d56Sopenharmony_ci } 10127db96d56Sopenharmony_ci if (args[2]) { 10137db96d56Sopenharmony_ci if (!PyLong_Check(args[2])) { 10147db96d56Sopenharmony_ci _PyArg_BadArgument("scrypt", "argument 'n'", "int", args[2]); 10157db96d56Sopenharmony_ci goto exit; 10167db96d56Sopenharmony_ci } 10177db96d56Sopenharmony_ci n_obj = args[2]; 10187db96d56Sopenharmony_ci if (!--noptargs) { 10197db96d56Sopenharmony_ci goto skip_optional_kwonly; 10207db96d56Sopenharmony_ci } 10217db96d56Sopenharmony_ci } 10227db96d56Sopenharmony_ci if (args[3]) { 10237db96d56Sopenharmony_ci if (!PyLong_Check(args[3])) { 10247db96d56Sopenharmony_ci _PyArg_BadArgument("scrypt", "argument 'r'", "int", args[3]); 10257db96d56Sopenharmony_ci goto exit; 10267db96d56Sopenharmony_ci } 10277db96d56Sopenharmony_ci r_obj = args[3]; 10287db96d56Sopenharmony_ci if (!--noptargs) { 10297db96d56Sopenharmony_ci goto skip_optional_kwonly; 10307db96d56Sopenharmony_ci } 10317db96d56Sopenharmony_ci } 10327db96d56Sopenharmony_ci if (args[4]) { 10337db96d56Sopenharmony_ci if (!PyLong_Check(args[4])) { 10347db96d56Sopenharmony_ci _PyArg_BadArgument("scrypt", "argument 'p'", "int", args[4]); 10357db96d56Sopenharmony_ci goto exit; 10367db96d56Sopenharmony_ci } 10377db96d56Sopenharmony_ci p_obj = args[4]; 10387db96d56Sopenharmony_ci if (!--noptargs) { 10397db96d56Sopenharmony_ci goto skip_optional_kwonly; 10407db96d56Sopenharmony_ci } 10417db96d56Sopenharmony_ci } 10427db96d56Sopenharmony_ci if (args[5]) { 10437db96d56Sopenharmony_ci maxmem = PyLong_AsLong(args[5]); 10447db96d56Sopenharmony_ci if (maxmem == -1 && PyErr_Occurred()) { 10457db96d56Sopenharmony_ci goto exit; 10467db96d56Sopenharmony_ci } 10477db96d56Sopenharmony_ci if (!--noptargs) { 10487db96d56Sopenharmony_ci goto skip_optional_kwonly; 10497db96d56Sopenharmony_ci } 10507db96d56Sopenharmony_ci } 10517db96d56Sopenharmony_ci dklen = PyLong_AsLong(args[6]); 10527db96d56Sopenharmony_ci if (dklen == -1 && PyErr_Occurred()) { 10537db96d56Sopenharmony_ci goto exit; 10547db96d56Sopenharmony_ci } 10557db96d56Sopenharmony_ciskip_optional_kwonly: 10567db96d56Sopenharmony_ci return_value = _hashlib_scrypt_impl(module, &password, &salt, n_obj, r_obj, p_obj, maxmem, dklen); 10577db96d56Sopenharmony_ci 10587db96d56Sopenharmony_ciexit: 10597db96d56Sopenharmony_ci /* Cleanup for password */ 10607db96d56Sopenharmony_ci if (password.obj) { 10617db96d56Sopenharmony_ci PyBuffer_Release(&password); 10627db96d56Sopenharmony_ci } 10637db96d56Sopenharmony_ci /* Cleanup for salt */ 10647db96d56Sopenharmony_ci if (salt.obj) { 10657db96d56Sopenharmony_ci PyBuffer_Release(&salt); 10667db96d56Sopenharmony_ci } 10677db96d56Sopenharmony_ci 10687db96d56Sopenharmony_ci return return_value; 10697db96d56Sopenharmony_ci} 10707db96d56Sopenharmony_ci 10717db96d56Sopenharmony_ci#endif /* defined(PY_OPENSSL_HAS_SCRYPT) */ 10727db96d56Sopenharmony_ci 10737db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_hmac_singleshot__doc__, 10747db96d56Sopenharmony_ci"hmac_digest($module, /, key, msg, digest)\n" 10757db96d56Sopenharmony_ci"--\n" 10767db96d56Sopenharmony_ci"\n" 10777db96d56Sopenharmony_ci"Single-shot HMAC."); 10787db96d56Sopenharmony_ci 10797db96d56Sopenharmony_ci#define _HASHLIB_HMAC_SINGLESHOT_METHODDEF \ 10807db96d56Sopenharmony_ci {"hmac_digest", _PyCFunction_CAST(_hashlib_hmac_singleshot), METH_FASTCALL|METH_KEYWORDS, _hashlib_hmac_singleshot__doc__}, 10817db96d56Sopenharmony_ci 10827db96d56Sopenharmony_cistatic PyObject * 10837db96d56Sopenharmony_ci_hashlib_hmac_singleshot_impl(PyObject *module, Py_buffer *key, 10847db96d56Sopenharmony_ci Py_buffer *msg, PyObject *digest); 10857db96d56Sopenharmony_ci 10867db96d56Sopenharmony_cistatic PyObject * 10877db96d56Sopenharmony_ci_hashlib_hmac_singleshot(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 10887db96d56Sopenharmony_ci{ 10897db96d56Sopenharmony_ci PyObject *return_value = NULL; 10907db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "msg", "digest", NULL}; 10917db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "hmac_digest", 0}; 10927db96d56Sopenharmony_ci PyObject *argsbuf[3]; 10937db96d56Sopenharmony_ci Py_buffer key = {NULL, NULL}; 10947db96d56Sopenharmony_ci Py_buffer msg = {NULL, NULL}; 10957db96d56Sopenharmony_ci PyObject *digest; 10967db96d56Sopenharmony_ci 10977db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf); 10987db96d56Sopenharmony_ci if (!args) { 10997db96d56Sopenharmony_ci goto exit; 11007db96d56Sopenharmony_ci } 11017db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &key, PyBUF_SIMPLE) != 0) { 11027db96d56Sopenharmony_ci goto exit; 11037db96d56Sopenharmony_ci } 11047db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&key, 'C')) { 11057db96d56Sopenharmony_ci _PyArg_BadArgument("hmac_digest", "argument 'key'", "contiguous buffer", args[0]); 11067db96d56Sopenharmony_ci goto exit; 11077db96d56Sopenharmony_ci } 11087db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[1], &msg, PyBUF_SIMPLE) != 0) { 11097db96d56Sopenharmony_ci goto exit; 11107db96d56Sopenharmony_ci } 11117db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&msg, 'C')) { 11127db96d56Sopenharmony_ci _PyArg_BadArgument("hmac_digest", "argument 'msg'", "contiguous buffer", args[1]); 11137db96d56Sopenharmony_ci goto exit; 11147db96d56Sopenharmony_ci } 11157db96d56Sopenharmony_ci digest = args[2]; 11167db96d56Sopenharmony_ci return_value = _hashlib_hmac_singleshot_impl(module, &key, &msg, digest); 11177db96d56Sopenharmony_ci 11187db96d56Sopenharmony_ciexit: 11197db96d56Sopenharmony_ci /* Cleanup for key */ 11207db96d56Sopenharmony_ci if (key.obj) { 11217db96d56Sopenharmony_ci PyBuffer_Release(&key); 11227db96d56Sopenharmony_ci } 11237db96d56Sopenharmony_ci /* Cleanup for msg */ 11247db96d56Sopenharmony_ci if (msg.obj) { 11257db96d56Sopenharmony_ci PyBuffer_Release(&msg); 11267db96d56Sopenharmony_ci } 11277db96d56Sopenharmony_ci 11287db96d56Sopenharmony_ci return return_value; 11297db96d56Sopenharmony_ci} 11307db96d56Sopenharmony_ci 11317db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_hmac_new__doc__, 11327db96d56Sopenharmony_ci"hmac_new($module, /, key, msg=b\'\', digestmod=None)\n" 11337db96d56Sopenharmony_ci"--\n" 11347db96d56Sopenharmony_ci"\n" 11357db96d56Sopenharmony_ci"Return a new hmac object."); 11367db96d56Sopenharmony_ci 11377db96d56Sopenharmony_ci#define _HASHLIB_HMAC_NEW_METHODDEF \ 11387db96d56Sopenharmony_ci {"hmac_new", _PyCFunction_CAST(_hashlib_hmac_new), METH_FASTCALL|METH_KEYWORDS, _hashlib_hmac_new__doc__}, 11397db96d56Sopenharmony_ci 11407db96d56Sopenharmony_cistatic PyObject * 11417db96d56Sopenharmony_ci_hashlib_hmac_new_impl(PyObject *module, Py_buffer *key, PyObject *msg_obj, 11427db96d56Sopenharmony_ci PyObject *digestmod); 11437db96d56Sopenharmony_ci 11447db96d56Sopenharmony_cistatic PyObject * 11457db96d56Sopenharmony_ci_hashlib_hmac_new(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 11467db96d56Sopenharmony_ci{ 11477db96d56Sopenharmony_ci PyObject *return_value = NULL; 11487db96d56Sopenharmony_ci static const char * const _keywords[] = {"key", "msg", "digestmod", NULL}; 11497db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "hmac_new", 0}; 11507db96d56Sopenharmony_ci PyObject *argsbuf[3]; 11517db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 11527db96d56Sopenharmony_ci Py_buffer key = {NULL, NULL}; 11537db96d56Sopenharmony_ci PyObject *msg_obj = NULL; 11547db96d56Sopenharmony_ci PyObject *digestmod = NULL; 11557db96d56Sopenharmony_ci 11567db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf); 11577db96d56Sopenharmony_ci if (!args) { 11587db96d56Sopenharmony_ci goto exit; 11597db96d56Sopenharmony_ci } 11607db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &key, PyBUF_SIMPLE) != 0) { 11617db96d56Sopenharmony_ci goto exit; 11627db96d56Sopenharmony_ci } 11637db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&key, 'C')) { 11647db96d56Sopenharmony_ci _PyArg_BadArgument("hmac_new", "argument 'key'", "contiguous buffer", args[0]); 11657db96d56Sopenharmony_ci goto exit; 11667db96d56Sopenharmony_ci } 11677db96d56Sopenharmony_ci if (!noptargs) { 11687db96d56Sopenharmony_ci goto skip_optional_pos; 11697db96d56Sopenharmony_ci } 11707db96d56Sopenharmony_ci if (args[1]) { 11717db96d56Sopenharmony_ci msg_obj = args[1]; 11727db96d56Sopenharmony_ci if (!--noptargs) { 11737db96d56Sopenharmony_ci goto skip_optional_pos; 11747db96d56Sopenharmony_ci } 11757db96d56Sopenharmony_ci } 11767db96d56Sopenharmony_ci digestmod = args[2]; 11777db96d56Sopenharmony_ciskip_optional_pos: 11787db96d56Sopenharmony_ci return_value = _hashlib_hmac_new_impl(module, &key, msg_obj, digestmod); 11797db96d56Sopenharmony_ci 11807db96d56Sopenharmony_ciexit: 11817db96d56Sopenharmony_ci /* Cleanup for key */ 11827db96d56Sopenharmony_ci if (key.obj) { 11837db96d56Sopenharmony_ci PyBuffer_Release(&key); 11847db96d56Sopenharmony_ci } 11857db96d56Sopenharmony_ci 11867db96d56Sopenharmony_ci return return_value; 11877db96d56Sopenharmony_ci} 11887db96d56Sopenharmony_ci 11897db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_HMAC_copy__doc__, 11907db96d56Sopenharmony_ci"copy($self, /)\n" 11917db96d56Sopenharmony_ci"--\n" 11927db96d56Sopenharmony_ci"\n" 11937db96d56Sopenharmony_ci"Return a copy (\"clone\") of the HMAC object."); 11947db96d56Sopenharmony_ci 11957db96d56Sopenharmony_ci#define _HASHLIB_HMAC_COPY_METHODDEF \ 11967db96d56Sopenharmony_ci {"copy", (PyCFunction)_hashlib_HMAC_copy, METH_NOARGS, _hashlib_HMAC_copy__doc__}, 11977db96d56Sopenharmony_ci 11987db96d56Sopenharmony_cistatic PyObject * 11997db96d56Sopenharmony_ci_hashlib_HMAC_copy_impl(HMACobject *self); 12007db96d56Sopenharmony_ci 12017db96d56Sopenharmony_cistatic PyObject * 12027db96d56Sopenharmony_ci_hashlib_HMAC_copy(HMACobject *self, PyObject *Py_UNUSED(ignored)) 12037db96d56Sopenharmony_ci{ 12047db96d56Sopenharmony_ci return _hashlib_HMAC_copy_impl(self); 12057db96d56Sopenharmony_ci} 12067db96d56Sopenharmony_ci 12077db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_HMAC_update__doc__, 12087db96d56Sopenharmony_ci"update($self, /, msg)\n" 12097db96d56Sopenharmony_ci"--\n" 12107db96d56Sopenharmony_ci"\n" 12117db96d56Sopenharmony_ci"Update the HMAC object with msg."); 12127db96d56Sopenharmony_ci 12137db96d56Sopenharmony_ci#define _HASHLIB_HMAC_UPDATE_METHODDEF \ 12147db96d56Sopenharmony_ci {"update", _PyCFunction_CAST(_hashlib_HMAC_update), METH_FASTCALL|METH_KEYWORDS, _hashlib_HMAC_update__doc__}, 12157db96d56Sopenharmony_ci 12167db96d56Sopenharmony_cistatic PyObject * 12177db96d56Sopenharmony_ci_hashlib_HMAC_update_impl(HMACobject *self, PyObject *msg); 12187db96d56Sopenharmony_ci 12197db96d56Sopenharmony_cistatic PyObject * 12207db96d56Sopenharmony_ci_hashlib_HMAC_update(HMACobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 12217db96d56Sopenharmony_ci{ 12227db96d56Sopenharmony_ci PyObject *return_value = NULL; 12237db96d56Sopenharmony_ci static const char * const _keywords[] = {"msg", NULL}; 12247db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "update", 0}; 12257db96d56Sopenharmony_ci PyObject *argsbuf[1]; 12267db96d56Sopenharmony_ci PyObject *msg; 12277db96d56Sopenharmony_ci 12287db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 12297db96d56Sopenharmony_ci if (!args) { 12307db96d56Sopenharmony_ci goto exit; 12317db96d56Sopenharmony_ci } 12327db96d56Sopenharmony_ci msg = args[0]; 12337db96d56Sopenharmony_ci return_value = _hashlib_HMAC_update_impl(self, msg); 12347db96d56Sopenharmony_ci 12357db96d56Sopenharmony_ciexit: 12367db96d56Sopenharmony_ci return return_value; 12377db96d56Sopenharmony_ci} 12387db96d56Sopenharmony_ci 12397db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_HMAC_digest__doc__, 12407db96d56Sopenharmony_ci"digest($self, /)\n" 12417db96d56Sopenharmony_ci"--\n" 12427db96d56Sopenharmony_ci"\n" 12437db96d56Sopenharmony_ci"Return the digest of the bytes passed to the update() method so far."); 12447db96d56Sopenharmony_ci 12457db96d56Sopenharmony_ci#define _HASHLIB_HMAC_DIGEST_METHODDEF \ 12467db96d56Sopenharmony_ci {"digest", (PyCFunction)_hashlib_HMAC_digest, METH_NOARGS, _hashlib_HMAC_digest__doc__}, 12477db96d56Sopenharmony_ci 12487db96d56Sopenharmony_cistatic PyObject * 12497db96d56Sopenharmony_ci_hashlib_HMAC_digest_impl(HMACobject *self); 12507db96d56Sopenharmony_ci 12517db96d56Sopenharmony_cistatic PyObject * 12527db96d56Sopenharmony_ci_hashlib_HMAC_digest(HMACobject *self, PyObject *Py_UNUSED(ignored)) 12537db96d56Sopenharmony_ci{ 12547db96d56Sopenharmony_ci return _hashlib_HMAC_digest_impl(self); 12557db96d56Sopenharmony_ci} 12567db96d56Sopenharmony_ci 12577db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_HMAC_hexdigest__doc__, 12587db96d56Sopenharmony_ci"hexdigest($self, /)\n" 12597db96d56Sopenharmony_ci"--\n" 12607db96d56Sopenharmony_ci"\n" 12617db96d56Sopenharmony_ci"Return hexadecimal digest of the bytes passed to the update() method so far.\n" 12627db96d56Sopenharmony_ci"\n" 12637db96d56Sopenharmony_ci"This may be used to exchange the value safely in email or other non-binary\n" 12647db96d56Sopenharmony_ci"environments."); 12657db96d56Sopenharmony_ci 12667db96d56Sopenharmony_ci#define _HASHLIB_HMAC_HEXDIGEST_METHODDEF \ 12677db96d56Sopenharmony_ci {"hexdigest", (PyCFunction)_hashlib_HMAC_hexdigest, METH_NOARGS, _hashlib_HMAC_hexdigest__doc__}, 12687db96d56Sopenharmony_ci 12697db96d56Sopenharmony_cistatic PyObject * 12707db96d56Sopenharmony_ci_hashlib_HMAC_hexdigest_impl(HMACobject *self); 12717db96d56Sopenharmony_ci 12727db96d56Sopenharmony_cistatic PyObject * 12737db96d56Sopenharmony_ci_hashlib_HMAC_hexdigest(HMACobject *self, PyObject *Py_UNUSED(ignored)) 12747db96d56Sopenharmony_ci{ 12757db96d56Sopenharmony_ci return _hashlib_HMAC_hexdigest_impl(self); 12767db96d56Sopenharmony_ci} 12777db96d56Sopenharmony_ci 12787db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_get_fips_mode__doc__, 12797db96d56Sopenharmony_ci"get_fips_mode($module, /)\n" 12807db96d56Sopenharmony_ci"--\n" 12817db96d56Sopenharmony_ci"\n" 12827db96d56Sopenharmony_ci"Determine the OpenSSL FIPS mode of operation.\n" 12837db96d56Sopenharmony_ci"\n" 12847db96d56Sopenharmony_ci"For OpenSSL 3.0.0 and newer it returns the state of the default provider\n" 12857db96d56Sopenharmony_ci"in the default OSSL context. It\'s not quite the same as FIPS_mode() but good\n" 12867db96d56Sopenharmony_ci"enough for unittests.\n" 12877db96d56Sopenharmony_ci"\n" 12887db96d56Sopenharmony_ci"Effectively any non-zero return value indicates FIPS mode;\n" 12897db96d56Sopenharmony_ci"values other than 1 may have additional significance."); 12907db96d56Sopenharmony_ci 12917db96d56Sopenharmony_ci#define _HASHLIB_GET_FIPS_MODE_METHODDEF \ 12927db96d56Sopenharmony_ci {"get_fips_mode", (PyCFunction)_hashlib_get_fips_mode, METH_NOARGS, _hashlib_get_fips_mode__doc__}, 12937db96d56Sopenharmony_ci 12947db96d56Sopenharmony_cistatic int 12957db96d56Sopenharmony_ci_hashlib_get_fips_mode_impl(PyObject *module); 12967db96d56Sopenharmony_ci 12977db96d56Sopenharmony_cistatic PyObject * 12987db96d56Sopenharmony_ci_hashlib_get_fips_mode(PyObject *module, PyObject *Py_UNUSED(ignored)) 12997db96d56Sopenharmony_ci{ 13007db96d56Sopenharmony_ci PyObject *return_value = NULL; 13017db96d56Sopenharmony_ci int _return_value; 13027db96d56Sopenharmony_ci 13037db96d56Sopenharmony_ci _return_value = _hashlib_get_fips_mode_impl(module); 13047db96d56Sopenharmony_ci if ((_return_value == -1) && PyErr_Occurred()) { 13057db96d56Sopenharmony_ci goto exit; 13067db96d56Sopenharmony_ci } 13077db96d56Sopenharmony_ci return_value = PyLong_FromLong((long)_return_value); 13087db96d56Sopenharmony_ci 13097db96d56Sopenharmony_ciexit: 13107db96d56Sopenharmony_ci return return_value; 13117db96d56Sopenharmony_ci} 13127db96d56Sopenharmony_ci 13137db96d56Sopenharmony_ciPyDoc_STRVAR(_hashlib_compare_digest__doc__, 13147db96d56Sopenharmony_ci"compare_digest($module, a, b, /)\n" 13157db96d56Sopenharmony_ci"--\n" 13167db96d56Sopenharmony_ci"\n" 13177db96d56Sopenharmony_ci"Return \'a == b\'.\n" 13187db96d56Sopenharmony_ci"\n" 13197db96d56Sopenharmony_ci"This function uses an approach designed to prevent\n" 13207db96d56Sopenharmony_ci"timing analysis, making it appropriate for cryptography.\n" 13217db96d56Sopenharmony_ci"\n" 13227db96d56Sopenharmony_ci"a and b must both be of the same type: either str (ASCII only),\n" 13237db96d56Sopenharmony_ci"or any bytes-like object.\n" 13247db96d56Sopenharmony_ci"\n" 13257db96d56Sopenharmony_ci"Note: If a and b are of different lengths, or if an error occurs,\n" 13267db96d56Sopenharmony_ci"a timing attack could theoretically reveal information about the\n" 13277db96d56Sopenharmony_ci"types and lengths of a and b--but not their values."); 13287db96d56Sopenharmony_ci 13297db96d56Sopenharmony_ci#define _HASHLIB_COMPARE_DIGEST_METHODDEF \ 13307db96d56Sopenharmony_ci {"compare_digest", _PyCFunction_CAST(_hashlib_compare_digest), METH_FASTCALL, _hashlib_compare_digest__doc__}, 13317db96d56Sopenharmony_ci 13327db96d56Sopenharmony_cistatic PyObject * 13337db96d56Sopenharmony_ci_hashlib_compare_digest_impl(PyObject *module, PyObject *a, PyObject *b); 13347db96d56Sopenharmony_ci 13357db96d56Sopenharmony_cistatic PyObject * 13367db96d56Sopenharmony_ci_hashlib_compare_digest(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 13377db96d56Sopenharmony_ci{ 13387db96d56Sopenharmony_ci PyObject *return_value = NULL; 13397db96d56Sopenharmony_ci PyObject *a; 13407db96d56Sopenharmony_ci PyObject *b; 13417db96d56Sopenharmony_ci 13427db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("compare_digest", nargs, 2, 2)) { 13437db96d56Sopenharmony_ci goto exit; 13447db96d56Sopenharmony_ci } 13457db96d56Sopenharmony_ci a = args[0]; 13467db96d56Sopenharmony_ci b = args[1]; 13477db96d56Sopenharmony_ci return_value = _hashlib_compare_digest_impl(module, a, b); 13487db96d56Sopenharmony_ci 13497db96d56Sopenharmony_ciexit: 13507db96d56Sopenharmony_ci return return_value; 13517db96d56Sopenharmony_ci} 13527db96d56Sopenharmony_ci 13537db96d56Sopenharmony_ci#ifndef EVPXOF_DIGEST_METHODDEF 13547db96d56Sopenharmony_ci #define EVPXOF_DIGEST_METHODDEF 13557db96d56Sopenharmony_ci#endif /* !defined(EVPXOF_DIGEST_METHODDEF) */ 13567db96d56Sopenharmony_ci 13577db96d56Sopenharmony_ci#ifndef EVPXOF_HEXDIGEST_METHODDEF 13587db96d56Sopenharmony_ci #define EVPXOF_HEXDIGEST_METHODDEF 13597db96d56Sopenharmony_ci#endif /* !defined(EVPXOF_HEXDIGEST_METHODDEF) */ 13607db96d56Sopenharmony_ci 13617db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHA3_224_METHODDEF 13627db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHA3_224_METHODDEF 13637db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHA3_224_METHODDEF) */ 13647db96d56Sopenharmony_ci 13657db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHA3_256_METHODDEF 13667db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHA3_256_METHODDEF 13677db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHA3_256_METHODDEF) */ 13687db96d56Sopenharmony_ci 13697db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHA3_384_METHODDEF 13707db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHA3_384_METHODDEF 13717db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHA3_384_METHODDEF) */ 13727db96d56Sopenharmony_ci 13737db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHA3_512_METHODDEF 13747db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHA3_512_METHODDEF 13757db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHA3_512_METHODDEF) */ 13767db96d56Sopenharmony_ci 13777db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHAKE_128_METHODDEF 13787db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHAKE_128_METHODDEF 13797db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHAKE_128_METHODDEF) */ 13807db96d56Sopenharmony_ci 13817db96d56Sopenharmony_ci#ifndef _HASHLIB_OPENSSL_SHAKE_256_METHODDEF 13827db96d56Sopenharmony_ci #define _HASHLIB_OPENSSL_SHAKE_256_METHODDEF 13837db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_OPENSSL_SHAKE_256_METHODDEF) */ 13847db96d56Sopenharmony_ci 13857db96d56Sopenharmony_ci#ifndef _HASHLIB_SCRYPT_METHODDEF 13867db96d56Sopenharmony_ci #define _HASHLIB_SCRYPT_METHODDEF 13877db96d56Sopenharmony_ci#endif /* !defined(_HASHLIB_SCRYPT_METHODDEF) */ 13887db96d56Sopenharmony_ci/*[clinic end generated code: output=69f2374071bff707 input=a9049054013a1b77]*/ 1389