17db96d56Sopenharmony_ci/*[clinic input] 27db96d56Sopenharmony_cipreserve 37db96d56Sopenharmony_ci[clinic start generated code]*/ 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_do_handshake__doc__, 67db96d56Sopenharmony_ci"do_handshake($self, /)\n" 77db96d56Sopenharmony_ci"--\n" 87db96d56Sopenharmony_ci"\n"); 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_DO_HANDSHAKE_METHODDEF \ 117db96d56Sopenharmony_ci {"do_handshake", (PyCFunction)_ssl__SSLSocket_do_handshake, METH_NOARGS, _ssl__SSLSocket_do_handshake__doc__}, 127db96d56Sopenharmony_ci 137db96d56Sopenharmony_cistatic PyObject * 147db96d56Sopenharmony_ci_ssl__SSLSocket_do_handshake_impl(PySSLSocket *self); 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_cistatic PyObject * 177db96d56Sopenharmony_ci_ssl__SSLSocket_do_handshake(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 187db96d56Sopenharmony_ci{ 197db96d56Sopenharmony_ci return _ssl__SSLSocket_do_handshake_impl(self); 207db96d56Sopenharmony_ci} 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__test_decode_cert__doc__, 237db96d56Sopenharmony_ci"_test_decode_cert($module, path, /)\n" 247db96d56Sopenharmony_ci"--\n" 257db96d56Sopenharmony_ci"\n"); 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci#define _SSL__TEST_DECODE_CERT_METHODDEF \ 287db96d56Sopenharmony_ci {"_test_decode_cert", (PyCFunction)_ssl__test_decode_cert, METH_O, _ssl__test_decode_cert__doc__}, 297db96d56Sopenharmony_ci 307db96d56Sopenharmony_cistatic PyObject * 317db96d56Sopenharmony_ci_ssl__test_decode_cert_impl(PyObject *module, PyObject *path); 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_cistatic PyObject * 347db96d56Sopenharmony_ci_ssl__test_decode_cert(PyObject *module, PyObject *arg) 357db96d56Sopenharmony_ci{ 367db96d56Sopenharmony_ci PyObject *return_value = NULL; 377db96d56Sopenharmony_ci PyObject *path; 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci if (!PyUnicode_FSConverter(arg, &path)) { 407db96d56Sopenharmony_ci goto exit; 417db96d56Sopenharmony_ci } 427db96d56Sopenharmony_ci return_value = _ssl__test_decode_cert_impl(module, path); 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ciexit: 457db96d56Sopenharmony_ci return return_value; 467db96d56Sopenharmony_ci} 477db96d56Sopenharmony_ci 487db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_getpeercert__doc__, 497db96d56Sopenharmony_ci"getpeercert($self, der=False, /)\n" 507db96d56Sopenharmony_ci"--\n" 517db96d56Sopenharmony_ci"\n" 527db96d56Sopenharmony_ci"Returns the certificate for the peer.\n" 537db96d56Sopenharmony_ci"\n" 547db96d56Sopenharmony_ci"If no certificate was provided, returns None. If a certificate was\n" 557db96d56Sopenharmony_ci"provided, but not validated, returns an empty dictionary. Otherwise\n" 567db96d56Sopenharmony_ci"returns a dict containing information about the peer certificate.\n" 577db96d56Sopenharmony_ci"\n" 587db96d56Sopenharmony_ci"If the optional argument is True, returns a DER-encoded copy of the\n" 597db96d56Sopenharmony_ci"peer certificate, or None if no certificate was provided. This will\n" 607db96d56Sopenharmony_ci"return the certificate even if it wasn\'t validated."); 617db96d56Sopenharmony_ci 627db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_GETPEERCERT_METHODDEF \ 637db96d56Sopenharmony_ci {"getpeercert", _PyCFunction_CAST(_ssl__SSLSocket_getpeercert), METH_FASTCALL, _ssl__SSLSocket_getpeercert__doc__}, 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_cistatic PyObject * 667db96d56Sopenharmony_ci_ssl__SSLSocket_getpeercert_impl(PySSLSocket *self, int binary_mode); 677db96d56Sopenharmony_ci 687db96d56Sopenharmony_cistatic PyObject * 697db96d56Sopenharmony_ci_ssl__SSLSocket_getpeercert(PySSLSocket *self, PyObject *const *args, Py_ssize_t nargs) 707db96d56Sopenharmony_ci{ 717db96d56Sopenharmony_ci PyObject *return_value = NULL; 727db96d56Sopenharmony_ci int binary_mode = 0; 737db96d56Sopenharmony_ci 747db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("getpeercert", nargs, 0, 1)) { 757db96d56Sopenharmony_ci goto exit; 767db96d56Sopenharmony_ci } 777db96d56Sopenharmony_ci if (nargs < 1) { 787db96d56Sopenharmony_ci goto skip_optional; 797db96d56Sopenharmony_ci } 807db96d56Sopenharmony_ci binary_mode = PyObject_IsTrue(args[0]); 817db96d56Sopenharmony_ci if (binary_mode < 0) { 827db96d56Sopenharmony_ci goto exit; 837db96d56Sopenharmony_ci } 847db96d56Sopenharmony_ciskip_optional: 857db96d56Sopenharmony_ci return_value = _ssl__SSLSocket_getpeercert_impl(self, binary_mode); 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ciexit: 887db96d56Sopenharmony_ci return return_value; 897db96d56Sopenharmony_ci} 907db96d56Sopenharmony_ci 917db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_get_verified_chain__doc__, 927db96d56Sopenharmony_ci"get_verified_chain($self, /)\n" 937db96d56Sopenharmony_ci"--\n" 947db96d56Sopenharmony_ci"\n"); 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_GET_VERIFIED_CHAIN_METHODDEF \ 977db96d56Sopenharmony_ci {"get_verified_chain", (PyCFunction)_ssl__SSLSocket_get_verified_chain, METH_NOARGS, _ssl__SSLSocket_get_verified_chain__doc__}, 987db96d56Sopenharmony_ci 997db96d56Sopenharmony_cistatic PyObject * 1007db96d56Sopenharmony_ci_ssl__SSLSocket_get_verified_chain_impl(PySSLSocket *self); 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_cistatic PyObject * 1037db96d56Sopenharmony_ci_ssl__SSLSocket_get_verified_chain(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1047db96d56Sopenharmony_ci{ 1057db96d56Sopenharmony_ci return _ssl__SSLSocket_get_verified_chain_impl(self); 1067db96d56Sopenharmony_ci} 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_get_unverified_chain__doc__, 1097db96d56Sopenharmony_ci"get_unverified_chain($self, /)\n" 1107db96d56Sopenharmony_ci"--\n" 1117db96d56Sopenharmony_ci"\n"); 1127db96d56Sopenharmony_ci 1137db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_GET_UNVERIFIED_CHAIN_METHODDEF \ 1147db96d56Sopenharmony_ci {"get_unverified_chain", (PyCFunction)_ssl__SSLSocket_get_unverified_chain, METH_NOARGS, _ssl__SSLSocket_get_unverified_chain__doc__}, 1157db96d56Sopenharmony_ci 1167db96d56Sopenharmony_cistatic PyObject * 1177db96d56Sopenharmony_ci_ssl__SSLSocket_get_unverified_chain_impl(PySSLSocket *self); 1187db96d56Sopenharmony_ci 1197db96d56Sopenharmony_cistatic PyObject * 1207db96d56Sopenharmony_ci_ssl__SSLSocket_get_unverified_chain(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1217db96d56Sopenharmony_ci{ 1227db96d56Sopenharmony_ci return _ssl__SSLSocket_get_unverified_chain_impl(self); 1237db96d56Sopenharmony_ci} 1247db96d56Sopenharmony_ci 1257db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_shared_ciphers__doc__, 1267db96d56Sopenharmony_ci"shared_ciphers($self, /)\n" 1277db96d56Sopenharmony_ci"--\n" 1287db96d56Sopenharmony_ci"\n"); 1297db96d56Sopenharmony_ci 1307db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_SHARED_CIPHERS_METHODDEF \ 1317db96d56Sopenharmony_ci {"shared_ciphers", (PyCFunction)_ssl__SSLSocket_shared_ciphers, METH_NOARGS, _ssl__SSLSocket_shared_ciphers__doc__}, 1327db96d56Sopenharmony_ci 1337db96d56Sopenharmony_cistatic PyObject * 1347db96d56Sopenharmony_ci_ssl__SSLSocket_shared_ciphers_impl(PySSLSocket *self); 1357db96d56Sopenharmony_ci 1367db96d56Sopenharmony_cistatic PyObject * 1377db96d56Sopenharmony_ci_ssl__SSLSocket_shared_ciphers(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1387db96d56Sopenharmony_ci{ 1397db96d56Sopenharmony_ci return _ssl__SSLSocket_shared_ciphers_impl(self); 1407db96d56Sopenharmony_ci} 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_cipher__doc__, 1437db96d56Sopenharmony_ci"cipher($self, /)\n" 1447db96d56Sopenharmony_ci"--\n" 1457db96d56Sopenharmony_ci"\n"); 1467db96d56Sopenharmony_ci 1477db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_CIPHER_METHODDEF \ 1487db96d56Sopenharmony_ci {"cipher", (PyCFunction)_ssl__SSLSocket_cipher, METH_NOARGS, _ssl__SSLSocket_cipher__doc__}, 1497db96d56Sopenharmony_ci 1507db96d56Sopenharmony_cistatic PyObject * 1517db96d56Sopenharmony_ci_ssl__SSLSocket_cipher_impl(PySSLSocket *self); 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_cistatic PyObject * 1547db96d56Sopenharmony_ci_ssl__SSLSocket_cipher(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1557db96d56Sopenharmony_ci{ 1567db96d56Sopenharmony_ci return _ssl__SSLSocket_cipher_impl(self); 1577db96d56Sopenharmony_ci} 1587db96d56Sopenharmony_ci 1597db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_version__doc__, 1607db96d56Sopenharmony_ci"version($self, /)\n" 1617db96d56Sopenharmony_ci"--\n" 1627db96d56Sopenharmony_ci"\n"); 1637db96d56Sopenharmony_ci 1647db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_VERSION_METHODDEF \ 1657db96d56Sopenharmony_ci {"version", (PyCFunction)_ssl__SSLSocket_version, METH_NOARGS, _ssl__SSLSocket_version__doc__}, 1667db96d56Sopenharmony_ci 1677db96d56Sopenharmony_cistatic PyObject * 1687db96d56Sopenharmony_ci_ssl__SSLSocket_version_impl(PySSLSocket *self); 1697db96d56Sopenharmony_ci 1707db96d56Sopenharmony_cistatic PyObject * 1717db96d56Sopenharmony_ci_ssl__SSLSocket_version(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1727db96d56Sopenharmony_ci{ 1737db96d56Sopenharmony_ci return _ssl__SSLSocket_version_impl(self); 1747db96d56Sopenharmony_ci} 1757db96d56Sopenharmony_ci 1767db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_selected_alpn_protocol__doc__, 1777db96d56Sopenharmony_ci"selected_alpn_protocol($self, /)\n" 1787db96d56Sopenharmony_ci"--\n" 1797db96d56Sopenharmony_ci"\n"); 1807db96d56Sopenharmony_ci 1817db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_SELECTED_ALPN_PROTOCOL_METHODDEF \ 1827db96d56Sopenharmony_ci {"selected_alpn_protocol", (PyCFunction)_ssl__SSLSocket_selected_alpn_protocol, METH_NOARGS, _ssl__SSLSocket_selected_alpn_protocol__doc__}, 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_cistatic PyObject * 1857db96d56Sopenharmony_ci_ssl__SSLSocket_selected_alpn_protocol_impl(PySSLSocket *self); 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_cistatic PyObject * 1887db96d56Sopenharmony_ci_ssl__SSLSocket_selected_alpn_protocol(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 1897db96d56Sopenharmony_ci{ 1907db96d56Sopenharmony_ci return _ssl__SSLSocket_selected_alpn_protocol_impl(self); 1917db96d56Sopenharmony_ci} 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_compression__doc__, 1947db96d56Sopenharmony_ci"compression($self, /)\n" 1957db96d56Sopenharmony_ci"--\n" 1967db96d56Sopenharmony_ci"\n"); 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_COMPRESSION_METHODDEF \ 1997db96d56Sopenharmony_ci {"compression", (PyCFunction)_ssl__SSLSocket_compression, METH_NOARGS, _ssl__SSLSocket_compression__doc__}, 2007db96d56Sopenharmony_ci 2017db96d56Sopenharmony_cistatic PyObject * 2027db96d56Sopenharmony_ci_ssl__SSLSocket_compression_impl(PySSLSocket *self); 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_cistatic PyObject * 2057db96d56Sopenharmony_ci_ssl__SSLSocket_compression(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 2067db96d56Sopenharmony_ci{ 2077db96d56Sopenharmony_ci return _ssl__SSLSocket_compression_impl(self); 2087db96d56Sopenharmony_ci} 2097db96d56Sopenharmony_ci 2107db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_write__doc__, 2117db96d56Sopenharmony_ci"write($self, b, /)\n" 2127db96d56Sopenharmony_ci"--\n" 2137db96d56Sopenharmony_ci"\n" 2147db96d56Sopenharmony_ci"Writes the bytes-like object b into the SSL object.\n" 2157db96d56Sopenharmony_ci"\n" 2167db96d56Sopenharmony_ci"Returns the number of bytes written."); 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_WRITE_METHODDEF \ 2197db96d56Sopenharmony_ci {"write", (PyCFunction)_ssl__SSLSocket_write, METH_O, _ssl__SSLSocket_write__doc__}, 2207db96d56Sopenharmony_ci 2217db96d56Sopenharmony_cistatic PyObject * 2227db96d56Sopenharmony_ci_ssl__SSLSocket_write_impl(PySSLSocket *self, Py_buffer *b); 2237db96d56Sopenharmony_ci 2247db96d56Sopenharmony_cistatic PyObject * 2257db96d56Sopenharmony_ci_ssl__SSLSocket_write(PySSLSocket *self, PyObject *arg) 2267db96d56Sopenharmony_ci{ 2277db96d56Sopenharmony_ci PyObject *return_value = NULL; 2287db96d56Sopenharmony_ci Py_buffer b = {NULL, NULL}; 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &b, PyBUF_SIMPLE) != 0) { 2317db96d56Sopenharmony_ci goto exit; 2327db96d56Sopenharmony_ci } 2337db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&b, 'C')) { 2347db96d56Sopenharmony_ci _PyArg_BadArgument("write", "argument", "contiguous buffer", arg); 2357db96d56Sopenharmony_ci goto exit; 2367db96d56Sopenharmony_ci } 2377db96d56Sopenharmony_ci return_value = _ssl__SSLSocket_write_impl(self, &b); 2387db96d56Sopenharmony_ci 2397db96d56Sopenharmony_ciexit: 2407db96d56Sopenharmony_ci /* Cleanup for b */ 2417db96d56Sopenharmony_ci if (b.obj) { 2427db96d56Sopenharmony_ci PyBuffer_Release(&b); 2437db96d56Sopenharmony_ci } 2447db96d56Sopenharmony_ci 2457db96d56Sopenharmony_ci return return_value; 2467db96d56Sopenharmony_ci} 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_pending__doc__, 2497db96d56Sopenharmony_ci"pending($self, /)\n" 2507db96d56Sopenharmony_ci"--\n" 2517db96d56Sopenharmony_ci"\n" 2527db96d56Sopenharmony_ci"Returns the number of already decrypted bytes available for read, pending on the connection."); 2537db96d56Sopenharmony_ci 2547db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_PENDING_METHODDEF \ 2557db96d56Sopenharmony_ci {"pending", (PyCFunction)_ssl__SSLSocket_pending, METH_NOARGS, _ssl__SSLSocket_pending__doc__}, 2567db96d56Sopenharmony_ci 2577db96d56Sopenharmony_cistatic PyObject * 2587db96d56Sopenharmony_ci_ssl__SSLSocket_pending_impl(PySSLSocket *self); 2597db96d56Sopenharmony_ci 2607db96d56Sopenharmony_cistatic PyObject * 2617db96d56Sopenharmony_ci_ssl__SSLSocket_pending(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 2627db96d56Sopenharmony_ci{ 2637db96d56Sopenharmony_ci return _ssl__SSLSocket_pending_impl(self); 2647db96d56Sopenharmony_ci} 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_read__doc__, 2677db96d56Sopenharmony_ci"read(size, [buffer])\n" 2687db96d56Sopenharmony_ci"Read up to size bytes from the SSL socket."); 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_READ_METHODDEF \ 2717db96d56Sopenharmony_ci {"read", (PyCFunction)_ssl__SSLSocket_read, METH_VARARGS, _ssl__SSLSocket_read__doc__}, 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_cistatic PyObject * 2747db96d56Sopenharmony_ci_ssl__SSLSocket_read_impl(PySSLSocket *self, Py_ssize_t len, 2757db96d56Sopenharmony_ci int group_right_1, Py_buffer *buffer); 2767db96d56Sopenharmony_ci 2777db96d56Sopenharmony_cistatic PyObject * 2787db96d56Sopenharmony_ci_ssl__SSLSocket_read(PySSLSocket *self, PyObject *args) 2797db96d56Sopenharmony_ci{ 2807db96d56Sopenharmony_ci PyObject *return_value = NULL; 2817db96d56Sopenharmony_ci Py_ssize_t len; 2827db96d56Sopenharmony_ci int group_right_1 = 0; 2837db96d56Sopenharmony_ci Py_buffer buffer = {NULL, NULL}; 2847db96d56Sopenharmony_ci 2857db96d56Sopenharmony_ci switch (PyTuple_GET_SIZE(args)) { 2867db96d56Sopenharmony_ci case 1: 2877db96d56Sopenharmony_ci if (!PyArg_ParseTuple(args, "n:read", &len)) { 2887db96d56Sopenharmony_ci goto exit; 2897db96d56Sopenharmony_ci } 2907db96d56Sopenharmony_ci break; 2917db96d56Sopenharmony_ci case 2: 2927db96d56Sopenharmony_ci if (!PyArg_ParseTuple(args, "nw*:read", &len, &buffer)) { 2937db96d56Sopenharmony_ci goto exit; 2947db96d56Sopenharmony_ci } 2957db96d56Sopenharmony_ci group_right_1 = 1; 2967db96d56Sopenharmony_ci break; 2977db96d56Sopenharmony_ci default: 2987db96d56Sopenharmony_ci PyErr_SetString(PyExc_TypeError, "_ssl._SSLSocket.read requires 1 to 2 arguments"); 2997db96d56Sopenharmony_ci goto exit; 3007db96d56Sopenharmony_ci } 3017db96d56Sopenharmony_ci return_value = _ssl__SSLSocket_read_impl(self, len, group_right_1, &buffer); 3027db96d56Sopenharmony_ci 3037db96d56Sopenharmony_ciexit: 3047db96d56Sopenharmony_ci /* Cleanup for buffer */ 3057db96d56Sopenharmony_ci if (buffer.obj) { 3067db96d56Sopenharmony_ci PyBuffer_Release(&buffer); 3077db96d56Sopenharmony_ci } 3087db96d56Sopenharmony_ci 3097db96d56Sopenharmony_ci return return_value; 3107db96d56Sopenharmony_ci} 3117db96d56Sopenharmony_ci 3127db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_shutdown__doc__, 3137db96d56Sopenharmony_ci"shutdown($self, /)\n" 3147db96d56Sopenharmony_ci"--\n" 3157db96d56Sopenharmony_ci"\n" 3167db96d56Sopenharmony_ci"Does the SSL shutdown handshake with the remote end."); 3177db96d56Sopenharmony_ci 3187db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_SHUTDOWN_METHODDEF \ 3197db96d56Sopenharmony_ci {"shutdown", (PyCFunction)_ssl__SSLSocket_shutdown, METH_NOARGS, _ssl__SSLSocket_shutdown__doc__}, 3207db96d56Sopenharmony_ci 3217db96d56Sopenharmony_cistatic PyObject * 3227db96d56Sopenharmony_ci_ssl__SSLSocket_shutdown_impl(PySSLSocket *self); 3237db96d56Sopenharmony_ci 3247db96d56Sopenharmony_cistatic PyObject * 3257db96d56Sopenharmony_ci_ssl__SSLSocket_shutdown(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 3267db96d56Sopenharmony_ci{ 3277db96d56Sopenharmony_ci return _ssl__SSLSocket_shutdown_impl(self); 3287db96d56Sopenharmony_ci} 3297db96d56Sopenharmony_ci 3307db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_get_channel_binding__doc__, 3317db96d56Sopenharmony_ci"get_channel_binding($self, /, cb_type=\'tls-unique\')\n" 3327db96d56Sopenharmony_ci"--\n" 3337db96d56Sopenharmony_ci"\n" 3347db96d56Sopenharmony_ci"Get channel binding data for current connection.\n" 3357db96d56Sopenharmony_ci"\n" 3367db96d56Sopenharmony_ci"Raise ValueError if the requested `cb_type` is not supported. Return bytes\n" 3377db96d56Sopenharmony_ci"of the data or None if the data is not available (e.g. before the handshake).\n" 3387db96d56Sopenharmony_ci"Only \'tls-unique\' channel binding data from RFC 5929 is supported."); 3397db96d56Sopenharmony_ci 3407db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_GET_CHANNEL_BINDING_METHODDEF \ 3417db96d56Sopenharmony_ci {"get_channel_binding", _PyCFunction_CAST(_ssl__SSLSocket_get_channel_binding), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLSocket_get_channel_binding__doc__}, 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_cistatic PyObject * 3447db96d56Sopenharmony_ci_ssl__SSLSocket_get_channel_binding_impl(PySSLSocket *self, 3457db96d56Sopenharmony_ci const char *cb_type); 3467db96d56Sopenharmony_ci 3477db96d56Sopenharmony_cistatic PyObject * 3487db96d56Sopenharmony_ci_ssl__SSLSocket_get_channel_binding(PySSLSocket *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 3497db96d56Sopenharmony_ci{ 3507db96d56Sopenharmony_ci PyObject *return_value = NULL; 3517db96d56Sopenharmony_ci static const char * const _keywords[] = {"cb_type", NULL}; 3527db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "get_channel_binding", 0}; 3537db96d56Sopenharmony_ci PyObject *argsbuf[1]; 3547db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 3557db96d56Sopenharmony_ci const char *cb_type = "tls-unique"; 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 3587db96d56Sopenharmony_ci if (!args) { 3597db96d56Sopenharmony_ci goto exit; 3607db96d56Sopenharmony_ci } 3617db96d56Sopenharmony_ci if (!noptargs) { 3627db96d56Sopenharmony_ci goto skip_optional_pos; 3637db96d56Sopenharmony_ci } 3647db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 3657db96d56Sopenharmony_ci _PyArg_BadArgument("get_channel_binding", "argument 'cb_type'", "str", args[0]); 3667db96d56Sopenharmony_ci goto exit; 3677db96d56Sopenharmony_ci } 3687db96d56Sopenharmony_ci Py_ssize_t cb_type_length; 3697db96d56Sopenharmony_ci cb_type = PyUnicode_AsUTF8AndSize(args[0], &cb_type_length); 3707db96d56Sopenharmony_ci if (cb_type == NULL) { 3717db96d56Sopenharmony_ci goto exit; 3727db96d56Sopenharmony_ci } 3737db96d56Sopenharmony_ci if (strlen(cb_type) != (size_t)cb_type_length) { 3747db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 3757db96d56Sopenharmony_ci goto exit; 3767db96d56Sopenharmony_ci } 3777db96d56Sopenharmony_ciskip_optional_pos: 3787db96d56Sopenharmony_ci return_value = _ssl__SSLSocket_get_channel_binding_impl(self, cb_type); 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ciexit: 3817db96d56Sopenharmony_ci return return_value; 3827db96d56Sopenharmony_ci} 3837db96d56Sopenharmony_ci 3847db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLSocket_verify_client_post_handshake__doc__, 3857db96d56Sopenharmony_ci"verify_client_post_handshake($self, /)\n" 3867db96d56Sopenharmony_ci"--\n" 3877db96d56Sopenharmony_ci"\n" 3887db96d56Sopenharmony_ci"Initiate TLS 1.3 post-handshake authentication"); 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci#define _SSL__SSLSOCKET_VERIFY_CLIENT_POST_HANDSHAKE_METHODDEF \ 3917db96d56Sopenharmony_ci {"verify_client_post_handshake", (PyCFunction)_ssl__SSLSocket_verify_client_post_handshake, METH_NOARGS, _ssl__SSLSocket_verify_client_post_handshake__doc__}, 3927db96d56Sopenharmony_ci 3937db96d56Sopenharmony_cistatic PyObject * 3947db96d56Sopenharmony_ci_ssl__SSLSocket_verify_client_post_handshake_impl(PySSLSocket *self); 3957db96d56Sopenharmony_ci 3967db96d56Sopenharmony_cistatic PyObject * 3977db96d56Sopenharmony_ci_ssl__SSLSocket_verify_client_post_handshake(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 3987db96d56Sopenharmony_ci{ 3997db96d56Sopenharmony_ci return _ssl__SSLSocket_verify_client_post_handshake_impl(self); 4007db96d56Sopenharmony_ci} 4017db96d56Sopenharmony_ci 4027db96d56Sopenharmony_cistatic PyObject * 4037db96d56Sopenharmony_ci_ssl__SSLContext_impl(PyTypeObject *type, int proto_version); 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_cistatic PyObject * 4067db96d56Sopenharmony_ci_ssl__SSLContext(PyTypeObject *type, PyObject *args, PyObject *kwargs) 4077db96d56Sopenharmony_ci{ 4087db96d56Sopenharmony_ci PyObject *return_value = NULL; 4097db96d56Sopenharmony_ci int proto_version; 4107db96d56Sopenharmony_ci 4117db96d56Sopenharmony_ci if ((type == get_state_type(type)->PySSLContext_Type || 4127db96d56Sopenharmony_ci type->tp_init == get_state_type(type)->PySSLContext_Type->tp_init) && 4137db96d56Sopenharmony_ci !_PyArg_NoKeywords("_SSLContext", kwargs)) { 4147db96d56Sopenharmony_ci goto exit; 4157db96d56Sopenharmony_ci } 4167db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("_SSLContext", PyTuple_GET_SIZE(args), 1, 1)) { 4177db96d56Sopenharmony_ci goto exit; 4187db96d56Sopenharmony_ci } 4197db96d56Sopenharmony_ci proto_version = _PyLong_AsInt(PyTuple_GET_ITEM(args, 0)); 4207db96d56Sopenharmony_ci if (proto_version == -1 && PyErr_Occurred()) { 4217db96d56Sopenharmony_ci goto exit; 4227db96d56Sopenharmony_ci } 4237db96d56Sopenharmony_ci return_value = _ssl__SSLContext_impl(type, proto_version); 4247db96d56Sopenharmony_ci 4257db96d56Sopenharmony_ciexit: 4267db96d56Sopenharmony_ci return return_value; 4277db96d56Sopenharmony_ci} 4287db96d56Sopenharmony_ci 4297db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_set_ciphers__doc__, 4307db96d56Sopenharmony_ci"set_ciphers($self, cipherlist, /)\n" 4317db96d56Sopenharmony_ci"--\n" 4327db96d56Sopenharmony_ci"\n"); 4337db96d56Sopenharmony_ci 4347db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_SET_CIPHERS_METHODDEF \ 4357db96d56Sopenharmony_ci {"set_ciphers", (PyCFunction)_ssl__SSLContext_set_ciphers, METH_O, _ssl__SSLContext_set_ciphers__doc__}, 4367db96d56Sopenharmony_ci 4377db96d56Sopenharmony_cistatic PyObject * 4387db96d56Sopenharmony_ci_ssl__SSLContext_set_ciphers_impl(PySSLContext *self, const char *cipherlist); 4397db96d56Sopenharmony_ci 4407db96d56Sopenharmony_cistatic PyObject * 4417db96d56Sopenharmony_ci_ssl__SSLContext_set_ciphers(PySSLContext *self, PyObject *arg) 4427db96d56Sopenharmony_ci{ 4437db96d56Sopenharmony_ci PyObject *return_value = NULL; 4447db96d56Sopenharmony_ci const char *cipherlist; 4457db96d56Sopenharmony_ci 4467db96d56Sopenharmony_ci if (!PyUnicode_Check(arg)) { 4477db96d56Sopenharmony_ci _PyArg_BadArgument("set_ciphers", "argument", "str", arg); 4487db96d56Sopenharmony_ci goto exit; 4497db96d56Sopenharmony_ci } 4507db96d56Sopenharmony_ci Py_ssize_t cipherlist_length; 4517db96d56Sopenharmony_ci cipherlist = PyUnicode_AsUTF8AndSize(arg, &cipherlist_length); 4527db96d56Sopenharmony_ci if (cipherlist == NULL) { 4537db96d56Sopenharmony_ci goto exit; 4547db96d56Sopenharmony_ci } 4557db96d56Sopenharmony_ci if (strlen(cipherlist) != (size_t)cipherlist_length) { 4567db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 4577db96d56Sopenharmony_ci goto exit; 4587db96d56Sopenharmony_ci } 4597db96d56Sopenharmony_ci return_value = _ssl__SSLContext_set_ciphers_impl(self, cipherlist); 4607db96d56Sopenharmony_ci 4617db96d56Sopenharmony_ciexit: 4627db96d56Sopenharmony_ci return return_value; 4637db96d56Sopenharmony_ci} 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_get_ciphers__doc__, 4667db96d56Sopenharmony_ci"get_ciphers($self, /)\n" 4677db96d56Sopenharmony_ci"--\n" 4687db96d56Sopenharmony_ci"\n"); 4697db96d56Sopenharmony_ci 4707db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_GET_CIPHERS_METHODDEF \ 4717db96d56Sopenharmony_ci {"get_ciphers", (PyCFunction)_ssl__SSLContext_get_ciphers, METH_NOARGS, _ssl__SSLContext_get_ciphers__doc__}, 4727db96d56Sopenharmony_ci 4737db96d56Sopenharmony_cistatic PyObject * 4747db96d56Sopenharmony_ci_ssl__SSLContext_get_ciphers_impl(PySSLContext *self); 4757db96d56Sopenharmony_ci 4767db96d56Sopenharmony_cistatic PyObject * 4777db96d56Sopenharmony_ci_ssl__SSLContext_get_ciphers(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 4787db96d56Sopenharmony_ci{ 4797db96d56Sopenharmony_ci return _ssl__SSLContext_get_ciphers_impl(self); 4807db96d56Sopenharmony_ci} 4817db96d56Sopenharmony_ci 4827db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext__set_alpn_protocols__doc__, 4837db96d56Sopenharmony_ci"_set_alpn_protocols($self, protos, /)\n" 4847db96d56Sopenharmony_ci"--\n" 4857db96d56Sopenharmony_ci"\n"); 4867db96d56Sopenharmony_ci 4877db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT__SET_ALPN_PROTOCOLS_METHODDEF \ 4887db96d56Sopenharmony_ci {"_set_alpn_protocols", (PyCFunction)_ssl__SSLContext__set_alpn_protocols, METH_O, _ssl__SSLContext__set_alpn_protocols__doc__}, 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_cistatic PyObject * 4917db96d56Sopenharmony_ci_ssl__SSLContext__set_alpn_protocols_impl(PySSLContext *self, 4927db96d56Sopenharmony_ci Py_buffer *protos); 4937db96d56Sopenharmony_ci 4947db96d56Sopenharmony_cistatic PyObject * 4957db96d56Sopenharmony_ci_ssl__SSLContext__set_alpn_protocols(PySSLContext *self, PyObject *arg) 4967db96d56Sopenharmony_ci{ 4977db96d56Sopenharmony_ci PyObject *return_value = NULL; 4987db96d56Sopenharmony_ci Py_buffer protos = {NULL, NULL}; 4997db96d56Sopenharmony_ci 5007db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &protos, PyBUF_SIMPLE) != 0) { 5017db96d56Sopenharmony_ci goto exit; 5027db96d56Sopenharmony_ci } 5037db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&protos, 'C')) { 5047db96d56Sopenharmony_ci _PyArg_BadArgument("_set_alpn_protocols", "argument", "contiguous buffer", arg); 5057db96d56Sopenharmony_ci goto exit; 5067db96d56Sopenharmony_ci } 5077db96d56Sopenharmony_ci return_value = _ssl__SSLContext__set_alpn_protocols_impl(self, &protos); 5087db96d56Sopenharmony_ci 5097db96d56Sopenharmony_ciexit: 5107db96d56Sopenharmony_ci /* Cleanup for protos */ 5117db96d56Sopenharmony_ci if (protos.obj) { 5127db96d56Sopenharmony_ci PyBuffer_Release(&protos); 5137db96d56Sopenharmony_ci } 5147db96d56Sopenharmony_ci 5157db96d56Sopenharmony_ci return return_value; 5167db96d56Sopenharmony_ci} 5177db96d56Sopenharmony_ci 5187db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_load_cert_chain__doc__, 5197db96d56Sopenharmony_ci"load_cert_chain($self, /, certfile, keyfile=None, password=None)\n" 5207db96d56Sopenharmony_ci"--\n" 5217db96d56Sopenharmony_ci"\n"); 5227db96d56Sopenharmony_ci 5237db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_LOAD_CERT_CHAIN_METHODDEF \ 5247db96d56Sopenharmony_ci {"load_cert_chain", _PyCFunction_CAST(_ssl__SSLContext_load_cert_chain), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_load_cert_chain__doc__}, 5257db96d56Sopenharmony_ci 5267db96d56Sopenharmony_cistatic PyObject * 5277db96d56Sopenharmony_ci_ssl__SSLContext_load_cert_chain_impl(PySSLContext *self, PyObject *certfile, 5287db96d56Sopenharmony_ci PyObject *keyfile, PyObject *password); 5297db96d56Sopenharmony_ci 5307db96d56Sopenharmony_cistatic PyObject * 5317db96d56Sopenharmony_ci_ssl__SSLContext_load_cert_chain(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 5327db96d56Sopenharmony_ci{ 5337db96d56Sopenharmony_ci PyObject *return_value = NULL; 5347db96d56Sopenharmony_ci static const char * const _keywords[] = {"certfile", "keyfile", "password", NULL}; 5357db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "load_cert_chain", 0}; 5367db96d56Sopenharmony_ci PyObject *argsbuf[3]; 5377db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 5387db96d56Sopenharmony_ci PyObject *certfile; 5397db96d56Sopenharmony_ci PyObject *keyfile = Py_None; 5407db96d56Sopenharmony_ci PyObject *password = Py_None; 5417db96d56Sopenharmony_ci 5427db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf); 5437db96d56Sopenharmony_ci if (!args) { 5447db96d56Sopenharmony_ci goto exit; 5457db96d56Sopenharmony_ci } 5467db96d56Sopenharmony_ci certfile = args[0]; 5477db96d56Sopenharmony_ci if (!noptargs) { 5487db96d56Sopenharmony_ci goto skip_optional_pos; 5497db96d56Sopenharmony_ci } 5507db96d56Sopenharmony_ci if (args[1]) { 5517db96d56Sopenharmony_ci keyfile = args[1]; 5527db96d56Sopenharmony_ci if (!--noptargs) { 5537db96d56Sopenharmony_ci goto skip_optional_pos; 5547db96d56Sopenharmony_ci } 5557db96d56Sopenharmony_ci } 5567db96d56Sopenharmony_ci password = args[2]; 5577db96d56Sopenharmony_ciskip_optional_pos: 5587db96d56Sopenharmony_ci return_value = _ssl__SSLContext_load_cert_chain_impl(self, certfile, keyfile, password); 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ciexit: 5617db96d56Sopenharmony_ci return return_value; 5627db96d56Sopenharmony_ci} 5637db96d56Sopenharmony_ci 5647db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_load_verify_locations__doc__, 5657db96d56Sopenharmony_ci"load_verify_locations($self, /, cafile=None, capath=None, cadata=None)\n" 5667db96d56Sopenharmony_ci"--\n" 5677db96d56Sopenharmony_ci"\n"); 5687db96d56Sopenharmony_ci 5697db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_LOAD_VERIFY_LOCATIONS_METHODDEF \ 5707db96d56Sopenharmony_ci {"load_verify_locations", _PyCFunction_CAST(_ssl__SSLContext_load_verify_locations), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_load_verify_locations__doc__}, 5717db96d56Sopenharmony_ci 5727db96d56Sopenharmony_cistatic PyObject * 5737db96d56Sopenharmony_ci_ssl__SSLContext_load_verify_locations_impl(PySSLContext *self, 5747db96d56Sopenharmony_ci PyObject *cafile, 5757db96d56Sopenharmony_ci PyObject *capath, 5767db96d56Sopenharmony_ci PyObject *cadata); 5777db96d56Sopenharmony_ci 5787db96d56Sopenharmony_cistatic PyObject * 5797db96d56Sopenharmony_ci_ssl__SSLContext_load_verify_locations(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 5807db96d56Sopenharmony_ci{ 5817db96d56Sopenharmony_ci PyObject *return_value = NULL; 5827db96d56Sopenharmony_ci static const char * const _keywords[] = {"cafile", "capath", "cadata", NULL}; 5837db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "load_verify_locations", 0}; 5847db96d56Sopenharmony_ci PyObject *argsbuf[3]; 5857db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 5867db96d56Sopenharmony_ci PyObject *cafile = Py_None; 5877db96d56Sopenharmony_ci PyObject *capath = Py_None; 5887db96d56Sopenharmony_ci PyObject *cadata = Py_None; 5897db96d56Sopenharmony_ci 5907db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 3, 0, argsbuf); 5917db96d56Sopenharmony_ci if (!args) { 5927db96d56Sopenharmony_ci goto exit; 5937db96d56Sopenharmony_ci } 5947db96d56Sopenharmony_ci if (!noptargs) { 5957db96d56Sopenharmony_ci goto skip_optional_pos; 5967db96d56Sopenharmony_ci } 5977db96d56Sopenharmony_ci if (args[0]) { 5987db96d56Sopenharmony_ci cafile = args[0]; 5997db96d56Sopenharmony_ci if (!--noptargs) { 6007db96d56Sopenharmony_ci goto skip_optional_pos; 6017db96d56Sopenharmony_ci } 6027db96d56Sopenharmony_ci } 6037db96d56Sopenharmony_ci if (args[1]) { 6047db96d56Sopenharmony_ci capath = args[1]; 6057db96d56Sopenharmony_ci if (!--noptargs) { 6067db96d56Sopenharmony_ci goto skip_optional_pos; 6077db96d56Sopenharmony_ci } 6087db96d56Sopenharmony_ci } 6097db96d56Sopenharmony_ci cadata = args[2]; 6107db96d56Sopenharmony_ciskip_optional_pos: 6117db96d56Sopenharmony_ci return_value = _ssl__SSLContext_load_verify_locations_impl(self, cafile, capath, cadata); 6127db96d56Sopenharmony_ci 6137db96d56Sopenharmony_ciexit: 6147db96d56Sopenharmony_ci return return_value; 6157db96d56Sopenharmony_ci} 6167db96d56Sopenharmony_ci 6177db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_load_dh_params__doc__, 6187db96d56Sopenharmony_ci"load_dh_params($self, path, /)\n" 6197db96d56Sopenharmony_ci"--\n" 6207db96d56Sopenharmony_ci"\n"); 6217db96d56Sopenharmony_ci 6227db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_LOAD_DH_PARAMS_METHODDEF \ 6237db96d56Sopenharmony_ci {"load_dh_params", (PyCFunction)_ssl__SSLContext_load_dh_params, METH_O, _ssl__SSLContext_load_dh_params__doc__}, 6247db96d56Sopenharmony_ci 6257db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext__wrap_socket__doc__, 6267db96d56Sopenharmony_ci"_wrap_socket($self, /, sock, server_side, server_hostname=None, *,\n" 6277db96d56Sopenharmony_ci" owner=None, session=None)\n" 6287db96d56Sopenharmony_ci"--\n" 6297db96d56Sopenharmony_ci"\n"); 6307db96d56Sopenharmony_ci 6317db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT__WRAP_SOCKET_METHODDEF \ 6327db96d56Sopenharmony_ci {"_wrap_socket", _PyCFunction_CAST(_ssl__SSLContext__wrap_socket), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext__wrap_socket__doc__}, 6337db96d56Sopenharmony_ci 6347db96d56Sopenharmony_cistatic PyObject * 6357db96d56Sopenharmony_ci_ssl__SSLContext__wrap_socket_impl(PySSLContext *self, PyObject *sock, 6367db96d56Sopenharmony_ci int server_side, PyObject *hostname_obj, 6377db96d56Sopenharmony_ci PyObject *owner, PyObject *session); 6387db96d56Sopenharmony_ci 6397db96d56Sopenharmony_cistatic PyObject * 6407db96d56Sopenharmony_ci_ssl__SSLContext__wrap_socket(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 6417db96d56Sopenharmony_ci{ 6427db96d56Sopenharmony_ci PyObject *return_value = NULL; 6437db96d56Sopenharmony_ci static const char * const _keywords[] = {"sock", "server_side", "server_hostname", "owner", "session", NULL}; 6447db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "_wrap_socket", 0}; 6457db96d56Sopenharmony_ci PyObject *argsbuf[5]; 6467db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2; 6477db96d56Sopenharmony_ci PyObject *sock; 6487db96d56Sopenharmony_ci int server_side; 6497db96d56Sopenharmony_ci PyObject *hostname_obj = Py_None; 6507db96d56Sopenharmony_ci PyObject *owner = Py_None; 6517db96d56Sopenharmony_ci PyObject *session = Py_None; 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf); 6547db96d56Sopenharmony_ci if (!args) { 6557db96d56Sopenharmony_ci goto exit; 6567db96d56Sopenharmony_ci } 6577db96d56Sopenharmony_ci if (!PyObject_TypeCheck(args[0], get_state_ctx(self)->Sock_Type)) { 6587db96d56Sopenharmony_ci _PyArg_BadArgument("_wrap_socket", "argument 'sock'", (get_state_ctx(self)->Sock_Type)->tp_name, args[0]); 6597db96d56Sopenharmony_ci goto exit; 6607db96d56Sopenharmony_ci } 6617db96d56Sopenharmony_ci sock = args[0]; 6627db96d56Sopenharmony_ci server_side = _PyLong_AsInt(args[1]); 6637db96d56Sopenharmony_ci if (server_side == -1 && PyErr_Occurred()) { 6647db96d56Sopenharmony_ci goto exit; 6657db96d56Sopenharmony_ci } 6667db96d56Sopenharmony_ci if (!noptargs) { 6677db96d56Sopenharmony_ci goto skip_optional_pos; 6687db96d56Sopenharmony_ci } 6697db96d56Sopenharmony_ci if (args[2]) { 6707db96d56Sopenharmony_ci hostname_obj = args[2]; 6717db96d56Sopenharmony_ci if (!--noptargs) { 6727db96d56Sopenharmony_ci goto skip_optional_pos; 6737db96d56Sopenharmony_ci } 6747db96d56Sopenharmony_ci } 6757db96d56Sopenharmony_ciskip_optional_pos: 6767db96d56Sopenharmony_ci if (!noptargs) { 6777db96d56Sopenharmony_ci goto skip_optional_kwonly; 6787db96d56Sopenharmony_ci } 6797db96d56Sopenharmony_ci if (args[3]) { 6807db96d56Sopenharmony_ci owner = args[3]; 6817db96d56Sopenharmony_ci if (!--noptargs) { 6827db96d56Sopenharmony_ci goto skip_optional_kwonly; 6837db96d56Sopenharmony_ci } 6847db96d56Sopenharmony_ci } 6857db96d56Sopenharmony_ci session = args[4]; 6867db96d56Sopenharmony_ciskip_optional_kwonly: 6877db96d56Sopenharmony_ci return_value = _ssl__SSLContext__wrap_socket_impl(self, sock, server_side, hostname_obj, owner, session); 6887db96d56Sopenharmony_ci 6897db96d56Sopenharmony_ciexit: 6907db96d56Sopenharmony_ci return return_value; 6917db96d56Sopenharmony_ci} 6927db96d56Sopenharmony_ci 6937db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext__wrap_bio__doc__, 6947db96d56Sopenharmony_ci"_wrap_bio($self, /, incoming, outgoing, server_side,\n" 6957db96d56Sopenharmony_ci" server_hostname=None, *, owner=None, session=None)\n" 6967db96d56Sopenharmony_ci"--\n" 6977db96d56Sopenharmony_ci"\n"); 6987db96d56Sopenharmony_ci 6997db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT__WRAP_BIO_METHODDEF \ 7007db96d56Sopenharmony_ci {"_wrap_bio", _PyCFunction_CAST(_ssl__SSLContext__wrap_bio), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext__wrap_bio__doc__}, 7017db96d56Sopenharmony_ci 7027db96d56Sopenharmony_cistatic PyObject * 7037db96d56Sopenharmony_ci_ssl__SSLContext__wrap_bio_impl(PySSLContext *self, PySSLMemoryBIO *incoming, 7047db96d56Sopenharmony_ci PySSLMemoryBIO *outgoing, int server_side, 7057db96d56Sopenharmony_ci PyObject *hostname_obj, PyObject *owner, 7067db96d56Sopenharmony_ci PyObject *session); 7077db96d56Sopenharmony_ci 7087db96d56Sopenharmony_cistatic PyObject * 7097db96d56Sopenharmony_ci_ssl__SSLContext__wrap_bio(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 7107db96d56Sopenharmony_ci{ 7117db96d56Sopenharmony_ci PyObject *return_value = NULL; 7127db96d56Sopenharmony_ci static const char * const _keywords[] = {"incoming", "outgoing", "server_side", "server_hostname", "owner", "session", NULL}; 7137db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "_wrap_bio", 0}; 7147db96d56Sopenharmony_ci PyObject *argsbuf[6]; 7157db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3; 7167db96d56Sopenharmony_ci PySSLMemoryBIO *incoming; 7177db96d56Sopenharmony_ci PySSLMemoryBIO *outgoing; 7187db96d56Sopenharmony_ci int server_side; 7197db96d56Sopenharmony_ci PyObject *hostname_obj = Py_None; 7207db96d56Sopenharmony_ci PyObject *owner = Py_None; 7217db96d56Sopenharmony_ci PyObject *session = Py_None; 7227db96d56Sopenharmony_ci 7237db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 4, 0, argsbuf); 7247db96d56Sopenharmony_ci if (!args) { 7257db96d56Sopenharmony_ci goto exit; 7267db96d56Sopenharmony_ci } 7277db96d56Sopenharmony_ci if (!PyObject_TypeCheck(args[0], get_state_ctx(self)->PySSLMemoryBIO_Type)) { 7287db96d56Sopenharmony_ci _PyArg_BadArgument("_wrap_bio", "argument 'incoming'", (get_state_ctx(self)->PySSLMemoryBIO_Type)->tp_name, args[0]); 7297db96d56Sopenharmony_ci goto exit; 7307db96d56Sopenharmony_ci } 7317db96d56Sopenharmony_ci incoming = (PySSLMemoryBIO *)args[0]; 7327db96d56Sopenharmony_ci if (!PyObject_TypeCheck(args[1], get_state_ctx(self)->PySSLMemoryBIO_Type)) { 7337db96d56Sopenharmony_ci _PyArg_BadArgument("_wrap_bio", "argument 'outgoing'", (get_state_ctx(self)->PySSLMemoryBIO_Type)->tp_name, args[1]); 7347db96d56Sopenharmony_ci goto exit; 7357db96d56Sopenharmony_ci } 7367db96d56Sopenharmony_ci outgoing = (PySSLMemoryBIO *)args[1]; 7377db96d56Sopenharmony_ci server_side = _PyLong_AsInt(args[2]); 7387db96d56Sopenharmony_ci if (server_side == -1 && PyErr_Occurred()) { 7397db96d56Sopenharmony_ci goto exit; 7407db96d56Sopenharmony_ci } 7417db96d56Sopenharmony_ci if (!noptargs) { 7427db96d56Sopenharmony_ci goto skip_optional_pos; 7437db96d56Sopenharmony_ci } 7447db96d56Sopenharmony_ci if (args[3]) { 7457db96d56Sopenharmony_ci hostname_obj = args[3]; 7467db96d56Sopenharmony_ci if (!--noptargs) { 7477db96d56Sopenharmony_ci goto skip_optional_pos; 7487db96d56Sopenharmony_ci } 7497db96d56Sopenharmony_ci } 7507db96d56Sopenharmony_ciskip_optional_pos: 7517db96d56Sopenharmony_ci if (!noptargs) { 7527db96d56Sopenharmony_ci goto skip_optional_kwonly; 7537db96d56Sopenharmony_ci } 7547db96d56Sopenharmony_ci if (args[4]) { 7557db96d56Sopenharmony_ci owner = args[4]; 7567db96d56Sopenharmony_ci if (!--noptargs) { 7577db96d56Sopenharmony_ci goto skip_optional_kwonly; 7587db96d56Sopenharmony_ci } 7597db96d56Sopenharmony_ci } 7607db96d56Sopenharmony_ci session = args[5]; 7617db96d56Sopenharmony_ciskip_optional_kwonly: 7627db96d56Sopenharmony_ci return_value = _ssl__SSLContext__wrap_bio_impl(self, incoming, outgoing, server_side, hostname_obj, owner, session); 7637db96d56Sopenharmony_ci 7647db96d56Sopenharmony_ciexit: 7657db96d56Sopenharmony_ci return return_value; 7667db96d56Sopenharmony_ci} 7677db96d56Sopenharmony_ci 7687db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_session_stats__doc__, 7697db96d56Sopenharmony_ci"session_stats($self, /)\n" 7707db96d56Sopenharmony_ci"--\n" 7717db96d56Sopenharmony_ci"\n"); 7727db96d56Sopenharmony_ci 7737db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_SESSION_STATS_METHODDEF \ 7747db96d56Sopenharmony_ci {"session_stats", (PyCFunction)_ssl__SSLContext_session_stats, METH_NOARGS, _ssl__SSLContext_session_stats__doc__}, 7757db96d56Sopenharmony_ci 7767db96d56Sopenharmony_cistatic PyObject * 7777db96d56Sopenharmony_ci_ssl__SSLContext_session_stats_impl(PySSLContext *self); 7787db96d56Sopenharmony_ci 7797db96d56Sopenharmony_cistatic PyObject * 7807db96d56Sopenharmony_ci_ssl__SSLContext_session_stats(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 7817db96d56Sopenharmony_ci{ 7827db96d56Sopenharmony_ci return _ssl__SSLContext_session_stats_impl(self); 7837db96d56Sopenharmony_ci} 7847db96d56Sopenharmony_ci 7857db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_set_default_verify_paths__doc__, 7867db96d56Sopenharmony_ci"set_default_verify_paths($self, /)\n" 7877db96d56Sopenharmony_ci"--\n" 7887db96d56Sopenharmony_ci"\n"); 7897db96d56Sopenharmony_ci 7907db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_SET_DEFAULT_VERIFY_PATHS_METHODDEF \ 7917db96d56Sopenharmony_ci {"set_default_verify_paths", (PyCFunction)_ssl__SSLContext_set_default_verify_paths, METH_NOARGS, _ssl__SSLContext_set_default_verify_paths__doc__}, 7927db96d56Sopenharmony_ci 7937db96d56Sopenharmony_cistatic PyObject * 7947db96d56Sopenharmony_ci_ssl__SSLContext_set_default_verify_paths_impl(PySSLContext *self); 7957db96d56Sopenharmony_ci 7967db96d56Sopenharmony_cistatic PyObject * 7977db96d56Sopenharmony_ci_ssl__SSLContext_set_default_verify_paths(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 7987db96d56Sopenharmony_ci{ 7997db96d56Sopenharmony_ci return _ssl__SSLContext_set_default_verify_paths_impl(self); 8007db96d56Sopenharmony_ci} 8017db96d56Sopenharmony_ci 8027db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_set_ecdh_curve__doc__, 8037db96d56Sopenharmony_ci"set_ecdh_curve($self, name, /)\n" 8047db96d56Sopenharmony_ci"--\n" 8057db96d56Sopenharmony_ci"\n"); 8067db96d56Sopenharmony_ci 8077db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_SET_ECDH_CURVE_METHODDEF \ 8087db96d56Sopenharmony_ci {"set_ecdh_curve", (PyCFunction)_ssl__SSLContext_set_ecdh_curve, METH_O, _ssl__SSLContext_set_ecdh_curve__doc__}, 8097db96d56Sopenharmony_ci 8107db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_cert_store_stats__doc__, 8117db96d56Sopenharmony_ci"cert_store_stats($self, /)\n" 8127db96d56Sopenharmony_ci"--\n" 8137db96d56Sopenharmony_ci"\n" 8147db96d56Sopenharmony_ci"Returns quantities of loaded X.509 certificates.\n" 8157db96d56Sopenharmony_ci"\n" 8167db96d56Sopenharmony_ci"X.509 certificates with a CA extension and certificate revocation lists\n" 8177db96d56Sopenharmony_ci"inside the context\'s cert store.\n" 8187db96d56Sopenharmony_ci"\n" 8197db96d56Sopenharmony_ci"NOTE: Certificates in a capath directory aren\'t loaded unless they have\n" 8207db96d56Sopenharmony_ci"been used at least once."); 8217db96d56Sopenharmony_ci 8227db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_CERT_STORE_STATS_METHODDEF \ 8237db96d56Sopenharmony_ci {"cert_store_stats", (PyCFunction)_ssl__SSLContext_cert_store_stats, METH_NOARGS, _ssl__SSLContext_cert_store_stats__doc__}, 8247db96d56Sopenharmony_ci 8257db96d56Sopenharmony_cistatic PyObject * 8267db96d56Sopenharmony_ci_ssl__SSLContext_cert_store_stats_impl(PySSLContext *self); 8277db96d56Sopenharmony_ci 8287db96d56Sopenharmony_cistatic PyObject * 8297db96d56Sopenharmony_ci_ssl__SSLContext_cert_store_stats(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 8307db96d56Sopenharmony_ci{ 8317db96d56Sopenharmony_ci return _ssl__SSLContext_cert_store_stats_impl(self); 8327db96d56Sopenharmony_ci} 8337db96d56Sopenharmony_ci 8347db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl__SSLContext_get_ca_certs__doc__, 8357db96d56Sopenharmony_ci"get_ca_certs($self, /, binary_form=False)\n" 8367db96d56Sopenharmony_ci"--\n" 8377db96d56Sopenharmony_ci"\n" 8387db96d56Sopenharmony_ci"Returns a list of dicts with information of loaded CA certs.\n" 8397db96d56Sopenharmony_ci"\n" 8407db96d56Sopenharmony_ci"If the optional argument is True, returns a DER-encoded copy of the CA\n" 8417db96d56Sopenharmony_ci"certificate.\n" 8427db96d56Sopenharmony_ci"\n" 8437db96d56Sopenharmony_ci"NOTE: Certificates in a capath directory aren\'t loaded unless they have\n" 8447db96d56Sopenharmony_ci"been used at least once."); 8457db96d56Sopenharmony_ci 8467db96d56Sopenharmony_ci#define _SSL__SSLCONTEXT_GET_CA_CERTS_METHODDEF \ 8477db96d56Sopenharmony_ci {"get_ca_certs", _PyCFunction_CAST(_ssl__SSLContext_get_ca_certs), METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_get_ca_certs__doc__}, 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_cistatic PyObject * 8507db96d56Sopenharmony_ci_ssl__SSLContext_get_ca_certs_impl(PySSLContext *self, int binary_form); 8517db96d56Sopenharmony_ci 8527db96d56Sopenharmony_cistatic PyObject * 8537db96d56Sopenharmony_ci_ssl__SSLContext_get_ca_certs(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 8547db96d56Sopenharmony_ci{ 8557db96d56Sopenharmony_ci PyObject *return_value = NULL; 8567db96d56Sopenharmony_ci static const char * const _keywords[] = {"binary_form", NULL}; 8577db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "get_ca_certs", 0}; 8587db96d56Sopenharmony_ci PyObject *argsbuf[1]; 8597db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0; 8607db96d56Sopenharmony_ci int binary_form = 0; 8617db96d56Sopenharmony_ci 8627db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf); 8637db96d56Sopenharmony_ci if (!args) { 8647db96d56Sopenharmony_ci goto exit; 8657db96d56Sopenharmony_ci } 8667db96d56Sopenharmony_ci if (!noptargs) { 8677db96d56Sopenharmony_ci goto skip_optional_pos; 8687db96d56Sopenharmony_ci } 8697db96d56Sopenharmony_ci binary_form = PyObject_IsTrue(args[0]); 8707db96d56Sopenharmony_ci if (binary_form < 0) { 8717db96d56Sopenharmony_ci goto exit; 8727db96d56Sopenharmony_ci } 8737db96d56Sopenharmony_ciskip_optional_pos: 8747db96d56Sopenharmony_ci return_value = _ssl__SSLContext_get_ca_certs_impl(self, binary_form); 8757db96d56Sopenharmony_ci 8767db96d56Sopenharmony_ciexit: 8777db96d56Sopenharmony_ci return return_value; 8787db96d56Sopenharmony_ci} 8797db96d56Sopenharmony_ci 8807db96d56Sopenharmony_cistatic PyObject * 8817db96d56Sopenharmony_ci_ssl_MemoryBIO_impl(PyTypeObject *type); 8827db96d56Sopenharmony_ci 8837db96d56Sopenharmony_cistatic PyObject * 8847db96d56Sopenharmony_ci_ssl_MemoryBIO(PyTypeObject *type, PyObject *args, PyObject *kwargs) 8857db96d56Sopenharmony_ci{ 8867db96d56Sopenharmony_ci PyObject *return_value = NULL; 8877db96d56Sopenharmony_ci 8887db96d56Sopenharmony_ci if ((type == get_state_type(type)->PySSLMemoryBIO_Type || 8897db96d56Sopenharmony_ci type->tp_init == get_state_type(type)->PySSLMemoryBIO_Type->tp_init) && 8907db96d56Sopenharmony_ci !_PyArg_NoPositional("MemoryBIO", args)) { 8917db96d56Sopenharmony_ci goto exit; 8927db96d56Sopenharmony_ci } 8937db96d56Sopenharmony_ci if ((type == get_state_type(type)->PySSLMemoryBIO_Type || 8947db96d56Sopenharmony_ci type->tp_init == get_state_type(type)->PySSLMemoryBIO_Type->tp_init) && 8957db96d56Sopenharmony_ci !_PyArg_NoKeywords("MemoryBIO", kwargs)) { 8967db96d56Sopenharmony_ci goto exit; 8977db96d56Sopenharmony_ci } 8987db96d56Sopenharmony_ci return_value = _ssl_MemoryBIO_impl(type); 8997db96d56Sopenharmony_ci 9007db96d56Sopenharmony_ciexit: 9017db96d56Sopenharmony_ci return return_value; 9027db96d56Sopenharmony_ci} 9037db96d56Sopenharmony_ci 9047db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_MemoryBIO_read__doc__, 9057db96d56Sopenharmony_ci"read($self, size=-1, /)\n" 9067db96d56Sopenharmony_ci"--\n" 9077db96d56Sopenharmony_ci"\n" 9087db96d56Sopenharmony_ci"Read up to size bytes from the memory BIO.\n" 9097db96d56Sopenharmony_ci"\n" 9107db96d56Sopenharmony_ci"If size is not specified, read the entire buffer.\n" 9117db96d56Sopenharmony_ci"If the return value is an empty bytes instance, this means either\n" 9127db96d56Sopenharmony_ci"EOF or that no data is available. Use the \"eof\" property to\n" 9137db96d56Sopenharmony_ci"distinguish between the two."); 9147db96d56Sopenharmony_ci 9157db96d56Sopenharmony_ci#define _SSL_MEMORYBIO_READ_METHODDEF \ 9167db96d56Sopenharmony_ci {"read", _PyCFunction_CAST(_ssl_MemoryBIO_read), METH_FASTCALL, _ssl_MemoryBIO_read__doc__}, 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_cistatic PyObject * 9197db96d56Sopenharmony_ci_ssl_MemoryBIO_read_impl(PySSLMemoryBIO *self, int len); 9207db96d56Sopenharmony_ci 9217db96d56Sopenharmony_cistatic PyObject * 9227db96d56Sopenharmony_ci_ssl_MemoryBIO_read(PySSLMemoryBIO *self, PyObject *const *args, Py_ssize_t nargs) 9237db96d56Sopenharmony_ci{ 9247db96d56Sopenharmony_ci PyObject *return_value = NULL; 9257db96d56Sopenharmony_ci int len = -1; 9267db96d56Sopenharmony_ci 9277db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("read", nargs, 0, 1)) { 9287db96d56Sopenharmony_ci goto exit; 9297db96d56Sopenharmony_ci } 9307db96d56Sopenharmony_ci if (nargs < 1) { 9317db96d56Sopenharmony_ci goto skip_optional; 9327db96d56Sopenharmony_ci } 9337db96d56Sopenharmony_ci len = _PyLong_AsInt(args[0]); 9347db96d56Sopenharmony_ci if (len == -1 && PyErr_Occurred()) { 9357db96d56Sopenharmony_ci goto exit; 9367db96d56Sopenharmony_ci } 9377db96d56Sopenharmony_ciskip_optional: 9387db96d56Sopenharmony_ci return_value = _ssl_MemoryBIO_read_impl(self, len); 9397db96d56Sopenharmony_ci 9407db96d56Sopenharmony_ciexit: 9417db96d56Sopenharmony_ci return return_value; 9427db96d56Sopenharmony_ci} 9437db96d56Sopenharmony_ci 9447db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_MemoryBIO_write__doc__, 9457db96d56Sopenharmony_ci"write($self, b, /)\n" 9467db96d56Sopenharmony_ci"--\n" 9477db96d56Sopenharmony_ci"\n" 9487db96d56Sopenharmony_ci"Writes the bytes b into the memory BIO.\n" 9497db96d56Sopenharmony_ci"\n" 9507db96d56Sopenharmony_ci"Returns the number of bytes written."); 9517db96d56Sopenharmony_ci 9527db96d56Sopenharmony_ci#define _SSL_MEMORYBIO_WRITE_METHODDEF \ 9537db96d56Sopenharmony_ci {"write", (PyCFunction)_ssl_MemoryBIO_write, METH_O, _ssl_MemoryBIO_write__doc__}, 9547db96d56Sopenharmony_ci 9557db96d56Sopenharmony_cistatic PyObject * 9567db96d56Sopenharmony_ci_ssl_MemoryBIO_write_impl(PySSLMemoryBIO *self, Py_buffer *b); 9577db96d56Sopenharmony_ci 9587db96d56Sopenharmony_cistatic PyObject * 9597db96d56Sopenharmony_ci_ssl_MemoryBIO_write(PySSLMemoryBIO *self, PyObject *arg) 9607db96d56Sopenharmony_ci{ 9617db96d56Sopenharmony_ci PyObject *return_value = NULL; 9627db96d56Sopenharmony_ci Py_buffer b = {NULL, NULL}; 9637db96d56Sopenharmony_ci 9647db96d56Sopenharmony_ci if (PyObject_GetBuffer(arg, &b, PyBUF_SIMPLE) != 0) { 9657db96d56Sopenharmony_ci goto exit; 9667db96d56Sopenharmony_ci } 9677db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&b, 'C')) { 9687db96d56Sopenharmony_ci _PyArg_BadArgument("write", "argument", "contiguous buffer", arg); 9697db96d56Sopenharmony_ci goto exit; 9707db96d56Sopenharmony_ci } 9717db96d56Sopenharmony_ci return_value = _ssl_MemoryBIO_write_impl(self, &b); 9727db96d56Sopenharmony_ci 9737db96d56Sopenharmony_ciexit: 9747db96d56Sopenharmony_ci /* Cleanup for b */ 9757db96d56Sopenharmony_ci if (b.obj) { 9767db96d56Sopenharmony_ci PyBuffer_Release(&b); 9777db96d56Sopenharmony_ci } 9787db96d56Sopenharmony_ci 9797db96d56Sopenharmony_ci return return_value; 9807db96d56Sopenharmony_ci} 9817db96d56Sopenharmony_ci 9827db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_MemoryBIO_write_eof__doc__, 9837db96d56Sopenharmony_ci"write_eof($self, /)\n" 9847db96d56Sopenharmony_ci"--\n" 9857db96d56Sopenharmony_ci"\n" 9867db96d56Sopenharmony_ci"Write an EOF marker to the memory BIO.\n" 9877db96d56Sopenharmony_ci"\n" 9887db96d56Sopenharmony_ci"When all data has been read, the \"eof\" property will be True."); 9897db96d56Sopenharmony_ci 9907db96d56Sopenharmony_ci#define _SSL_MEMORYBIO_WRITE_EOF_METHODDEF \ 9917db96d56Sopenharmony_ci {"write_eof", (PyCFunction)_ssl_MemoryBIO_write_eof, METH_NOARGS, _ssl_MemoryBIO_write_eof__doc__}, 9927db96d56Sopenharmony_ci 9937db96d56Sopenharmony_cistatic PyObject * 9947db96d56Sopenharmony_ci_ssl_MemoryBIO_write_eof_impl(PySSLMemoryBIO *self); 9957db96d56Sopenharmony_ci 9967db96d56Sopenharmony_cistatic PyObject * 9977db96d56Sopenharmony_ci_ssl_MemoryBIO_write_eof(PySSLMemoryBIO *self, PyObject *Py_UNUSED(ignored)) 9987db96d56Sopenharmony_ci{ 9997db96d56Sopenharmony_ci return _ssl_MemoryBIO_write_eof_impl(self); 10007db96d56Sopenharmony_ci} 10017db96d56Sopenharmony_ci 10027db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_RAND_add__doc__, 10037db96d56Sopenharmony_ci"RAND_add($module, string, entropy, /)\n" 10047db96d56Sopenharmony_ci"--\n" 10057db96d56Sopenharmony_ci"\n" 10067db96d56Sopenharmony_ci"Mix string into the OpenSSL PRNG state.\n" 10077db96d56Sopenharmony_ci"\n" 10087db96d56Sopenharmony_ci"entropy (a float) is a lower bound on the entropy contained in\n" 10097db96d56Sopenharmony_ci"string. See RFC 4086."); 10107db96d56Sopenharmony_ci 10117db96d56Sopenharmony_ci#define _SSL_RAND_ADD_METHODDEF \ 10127db96d56Sopenharmony_ci {"RAND_add", _PyCFunction_CAST(_ssl_RAND_add), METH_FASTCALL, _ssl_RAND_add__doc__}, 10137db96d56Sopenharmony_ci 10147db96d56Sopenharmony_cistatic PyObject * 10157db96d56Sopenharmony_ci_ssl_RAND_add_impl(PyObject *module, Py_buffer *view, double entropy); 10167db96d56Sopenharmony_ci 10177db96d56Sopenharmony_cistatic PyObject * 10187db96d56Sopenharmony_ci_ssl_RAND_add(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 10197db96d56Sopenharmony_ci{ 10207db96d56Sopenharmony_ci PyObject *return_value = NULL; 10217db96d56Sopenharmony_ci Py_buffer view = {NULL, NULL}; 10227db96d56Sopenharmony_ci double entropy; 10237db96d56Sopenharmony_ci 10247db96d56Sopenharmony_ci if (!_PyArg_CheckPositional("RAND_add", nargs, 2, 2)) { 10257db96d56Sopenharmony_ci goto exit; 10267db96d56Sopenharmony_ci } 10277db96d56Sopenharmony_ci if (PyUnicode_Check(args[0])) { 10287db96d56Sopenharmony_ci Py_ssize_t len; 10297db96d56Sopenharmony_ci const char *ptr = PyUnicode_AsUTF8AndSize(args[0], &len); 10307db96d56Sopenharmony_ci if (ptr == NULL) { 10317db96d56Sopenharmony_ci goto exit; 10327db96d56Sopenharmony_ci } 10337db96d56Sopenharmony_ci PyBuffer_FillInfo(&view, args[0], (void *)ptr, len, 1, 0); 10347db96d56Sopenharmony_ci } 10357db96d56Sopenharmony_ci else { /* any bytes-like object */ 10367db96d56Sopenharmony_ci if (PyObject_GetBuffer(args[0], &view, PyBUF_SIMPLE) != 0) { 10377db96d56Sopenharmony_ci goto exit; 10387db96d56Sopenharmony_ci } 10397db96d56Sopenharmony_ci if (!PyBuffer_IsContiguous(&view, 'C')) { 10407db96d56Sopenharmony_ci _PyArg_BadArgument("RAND_add", "argument 1", "contiguous buffer", args[0]); 10417db96d56Sopenharmony_ci goto exit; 10427db96d56Sopenharmony_ci } 10437db96d56Sopenharmony_ci } 10447db96d56Sopenharmony_ci if (PyFloat_CheckExact(args[1])) { 10457db96d56Sopenharmony_ci entropy = PyFloat_AS_DOUBLE(args[1]); 10467db96d56Sopenharmony_ci } 10477db96d56Sopenharmony_ci else 10487db96d56Sopenharmony_ci { 10497db96d56Sopenharmony_ci entropy = PyFloat_AsDouble(args[1]); 10507db96d56Sopenharmony_ci if (entropy == -1.0 && PyErr_Occurred()) { 10517db96d56Sopenharmony_ci goto exit; 10527db96d56Sopenharmony_ci } 10537db96d56Sopenharmony_ci } 10547db96d56Sopenharmony_ci return_value = _ssl_RAND_add_impl(module, &view, entropy); 10557db96d56Sopenharmony_ci 10567db96d56Sopenharmony_ciexit: 10577db96d56Sopenharmony_ci /* Cleanup for view */ 10587db96d56Sopenharmony_ci if (view.obj) { 10597db96d56Sopenharmony_ci PyBuffer_Release(&view); 10607db96d56Sopenharmony_ci } 10617db96d56Sopenharmony_ci 10627db96d56Sopenharmony_ci return return_value; 10637db96d56Sopenharmony_ci} 10647db96d56Sopenharmony_ci 10657db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_RAND_bytes__doc__, 10667db96d56Sopenharmony_ci"RAND_bytes($module, n, /)\n" 10677db96d56Sopenharmony_ci"--\n" 10687db96d56Sopenharmony_ci"\n" 10697db96d56Sopenharmony_ci"Generate n cryptographically strong pseudo-random bytes."); 10707db96d56Sopenharmony_ci 10717db96d56Sopenharmony_ci#define _SSL_RAND_BYTES_METHODDEF \ 10727db96d56Sopenharmony_ci {"RAND_bytes", (PyCFunction)_ssl_RAND_bytes, METH_O, _ssl_RAND_bytes__doc__}, 10737db96d56Sopenharmony_ci 10747db96d56Sopenharmony_cistatic PyObject * 10757db96d56Sopenharmony_ci_ssl_RAND_bytes_impl(PyObject *module, int n); 10767db96d56Sopenharmony_ci 10777db96d56Sopenharmony_cistatic PyObject * 10787db96d56Sopenharmony_ci_ssl_RAND_bytes(PyObject *module, PyObject *arg) 10797db96d56Sopenharmony_ci{ 10807db96d56Sopenharmony_ci PyObject *return_value = NULL; 10817db96d56Sopenharmony_ci int n; 10827db96d56Sopenharmony_ci 10837db96d56Sopenharmony_ci n = _PyLong_AsInt(arg); 10847db96d56Sopenharmony_ci if (n == -1 && PyErr_Occurred()) { 10857db96d56Sopenharmony_ci goto exit; 10867db96d56Sopenharmony_ci } 10877db96d56Sopenharmony_ci return_value = _ssl_RAND_bytes_impl(module, n); 10887db96d56Sopenharmony_ci 10897db96d56Sopenharmony_ciexit: 10907db96d56Sopenharmony_ci return return_value; 10917db96d56Sopenharmony_ci} 10927db96d56Sopenharmony_ci 10937db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_RAND_pseudo_bytes__doc__, 10947db96d56Sopenharmony_ci"RAND_pseudo_bytes($module, n, /)\n" 10957db96d56Sopenharmony_ci"--\n" 10967db96d56Sopenharmony_ci"\n" 10977db96d56Sopenharmony_ci"Generate n pseudo-random bytes.\n" 10987db96d56Sopenharmony_ci"\n" 10997db96d56Sopenharmony_ci"Return a pair (bytes, is_cryptographic). is_cryptographic is True\n" 11007db96d56Sopenharmony_ci"if the bytes generated are cryptographically strong."); 11017db96d56Sopenharmony_ci 11027db96d56Sopenharmony_ci#define _SSL_RAND_PSEUDO_BYTES_METHODDEF \ 11037db96d56Sopenharmony_ci {"RAND_pseudo_bytes", (PyCFunction)_ssl_RAND_pseudo_bytes, METH_O, _ssl_RAND_pseudo_bytes__doc__}, 11047db96d56Sopenharmony_ci 11057db96d56Sopenharmony_cistatic PyObject * 11067db96d56Sopenharmony_ci_ssl_RAND_pseudo_bytes_impl(PyObject *module, int n); 11077db96d56Sopenharmony_ci 11087db96d56Sopenharmony_cistatic PyObject * 11097db96d56Sopenharmony_ci_ssl_RAND_pseudo_bytes(PyObject *module, PyObject *arg) 11107db96d56Sopenharmony_ci{ 11117db96d56Sopenharmony_ci PyObject *return_value = NULL; 11127db96d56Sopenharmony_ci int n; 11137db96d56Sopenharmony_ci 11147db96d56Sopenharmony_ci n = _PyLong_AsInt(arg); 11157db96d56Sopenharmony_ci if (n == -1 && PyErr_Occurred()) { 11167db96d56Sopenharmony_ci goto exit; 11177db96d56Sopenharmony_ci } 11187db96d56Sopenharmony_ci return_value = _ssl_RAND_pseudo_bytes_impl(module, n); 11197db96d56Sopenharmony_ci 11207db96d56Sopenharmony_ciexit: 11217db96d56Sopenharmony_ci return return_value; 11227db96d56Sopenharmony_ci} 11237db96d56Sopenharmony_ci 11247db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_RAND_status__doc__, 11257db96d56Sopenharmony_ci"RAND_status($module, /)\n" 11267db96d56Sopenharmony_ci"--\n" 11277db96d56Sopenharmony_ci"\n" 11287db96d56Sopenharmony_ci"Returns True if the OpenSSL PRNG has been seeded with enough data and False if not.\n" 11297db96d56Sopenharmony_ci"\n" 11307db96d56Sopenharmony_ci"It is necessary to seed the PRNG with RAND_add() on some platforms before\n" 11317db96d56Sopenharmony_ci"using the ssl() function."); 11327db96d56Sopenharmony_ci 11337db96d56Sopenharmony_ci#define _SSL_RAND_STATUS_METHODDEF \ 11347db96d56Sopenharmony_ci {"RAND_status", (PyCFunction)_ssl_RAND_status, METH_NOARGS, _ssl_RAND_status__doc__}, 11357db96d56Sopenharmony_ci 11367db96d56Sopenharmony_cistatic PyObject * 11377db96d56Sopenharmony_ci_ssl_RAND_status_impl(PyObject *module); 11387db96d56Sopenharmony_ci 11397db96d56Sopenharmony_cistatic PyObject * 11407db96d56Sopenharmony_ci_ssl_RAND_status(PyObject *module, PyObject *Py_UNUSED(ignored)) 11417db96d56Sopenharmony_ci{ 11427db96d56Sopenharmony_ci return _ssl_RAND_status_impl(module); 11437db96d56Sopenharmony_ci} 11447db96d56Sopenharmony_ci 11457db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_get_default_verify_paths__doc__, 11467db96d56Sopenharmony_ci"get_default_verify_paths($module, /)\n" 11477db96d56Sopenharmony_ci"--\n" 11487db96d56Sopenharmony_ci"\n" 11497db96d56Sopenharmony_ci"Return search paths and environment vars that are used by SSLContext\'s set_default_verify_paths() to load default CAs.\n" 11507db96d56Sopenharmony_ci"\n" 11517db96d56Sopenharmony_ci"The values are \'cert_file_env\', \'cert_file\', \'cert_dir_env\', \'cert_dir\'."); 11527db96d56Sopenharmony_ci 11537db96d56Sopenharmony_ci#define _SSL_GET_DEFAULT_VERIFY_PATHS_METHODDEF \ 11547db96d56Sopenharmony_ci {"get_default_verify_paths", (PyCFunction)_ssl_get_default_verify_paths, METH_NOARGS, _ssl_get_default_verify_paths__doc__}, 11557db96d56Sopenharmony_ci 11567db96d56Sopenharmony_cistatic PyObject * 11577db96d56Sopenharmony_ci_ssl_get_default_verify_paths_impl(PyObject *module); 11587db96d56Sopenharmony_ci 11597db96d56Sopenharmony_cistatic PyObject * 11607db96d56Sopenharmony_ci_ssl_get_default_verify_paths(PyObject *module, PyObject *Py_UNUSED(ignored)) 11617db96d56Sopenharmony_ci{ 11627db96d56Sopenharmony_ci return _ssl_get_default_verify_paths_impl(module); 11637db96d56Sopenharmony_ci} 11647db96d56Sopenharmony_ci 11657db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_txt2obj__doc__, 11667db96d56Sopenharmony_ci"txt2obj($module, /, txt, name=False)\n" 11677db96d56Sopenharmony_ci"--\n" 11687db96d56Sopenharmony_ci"\n" 11697db96d56Sopenharmony_ci"Lookup NID, short name, long name and OID of an ASN1_OBJECT.\n" 11707db96d56Sopenharmony_ci"\n" 11717db96d56Sopenharmony_ci"By default objects are looked up by OID. With name=True short and\n" 11727db96d56Sopenharmony_ci"long name are also matched."); 11737db96d56Sopenharmony_ci 11747db96d56Sopenharmony_ci#define _SSL_TXT2OBJ_METHODDEF \ 11757db96d56Sopenharmony_ci {"txt2obj", _PyCFunction_CAST(_ssl_txt2obj), METH_FASTCALL|METH_KEYWORDS, _ssl_txt2obj__doc__}, 11767db96d56Sopenharmony_ci 11777db96d56Sopenharmony_cistatic PyObject * 11787db96d56Sopenharmony_ci_ssl_txt2obj_impl(PyObject *module, const char *txt, int name); 11797db96d56Sopenharmony_ci 11807db96d56Sopenharmony_cistatic PyObject * 11817db96d56Sopenharmony_ci_ssl_txt2obj(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 11827db96d56Sopenharmony_ci{ 11837db96d56Sopenharmony_ci PyObject *return_value = NULL; 11847db96d56Sopenharmony_ci static const char * const _keywords[] = {"txt", "name", NULL}; 11857db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "txt2obj", 0}; 11867db96d56Sopenharmony_ci PyObject *argsbuf[2]; 11877db96d56Sopenharmony_ci Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1; 11887db96d56Sopenharmony_ci const char *txt; 11897db96d56Sopenharmony_ci int name = 0; 11907db96d56Sopenharmony_ci 11917db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf); 11927db96d56Sopenharmony_ci if (!args) { 11937db96d56Sopenharmony_ci goto exit; 11947db96d56Sopenharmony_ci } 11957db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 11967db96d56Sopenharmony_ci _PyArg_BadArgument("txt2obj", "argument 'txt'", "str", args[0]); 11977db96d56Sopenharmony_ci goto exit; 11987db96d56Sopenharmony_ci } 11997db96d56Sopenharmony_ci Py_ssize_t txt_length; 12007db96d56Sopenharmony_ci txt = PyUnicode_AsUTF8AndSize(args[0], &txt_length); 12017db96d56Sopenharmony_ci if (txt == NULL) { 12027db96d56Sopenharmony_ci goto exit; 12037db96d56Sopenharmony_ci } 12047db96d56Sopenharmony_ci if (strlen(txt) != (size_t)txt_length) { 12057db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 12067db96d56Sopenharmony_ci goto exit; 12077db96d56Sopenharmony_ci } 12087db96d56Sopenharmony_ci if (!noptargs) { 12097db96d56Sopenharmony_ci goto skip_optional_pos; 12107db96d56Sopenharmony_ci } 12117db96d56Sopenharmony_ci name = PyObject_IsTrue(args[1]); 12127db96d56Sopenharmony_ci if (name < 0) { 12137db96d56Sopenharmony_ci goto exit; 12147db96d56Sopenharmony_ci } 12157db96d56Sopenharmony_ciskip_optional_pos: 12167db96d56Sopenharmony_ci return_value = _ssl_txt2obj_impl(module, txt, name); 12177db96d56Sopenharmony_ci 12187db96d56Sopenharmony_ciexit: 12197db96d56Sopenharmony_ci return return_value; 12207db96d56Sopenharmony_ci} 12217db96d56Sopenharmony_ci 12227db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_nid2obj__doc__, 12237db96d56Sopenharmony_ci"nid2obj($module, nid, /)\n" 12247db96d56Sopenharmony_ci"--\n" 12257db96d56Sopenharmony_ci"\n" 12267db96d56Sopenharmony_ci"Lookup NID, short name, long name and OID of an ASN1_OBJECT by NID."); 12277db96d56Sopenharmony_ci 12287db96d56Sopenharmony_ci#define _SSL_NID2OBJ_METHODDEF \ 12297db96d56Sopenharmony_ci {"nid2obj", (PyCFunction)_ssl_nid2obj, METH_O, _ssl_nid2obj__doc__}, 12307db96d56Sopenharmony_ci 12317db96d56Sopenharmony_cistatic PyObject * 12327db96d56Sopenharmony_ci_ssl_nid2obj_impl(PyObject *module, int nid); 12337db96d56Sopenharmony_ci 12347db96d56Sopenharmony_cistatic PyObject * 12357db96d56Sopenharmony_ci_ssl_nid2obj(PyObject *module, PyObject *arg) 12367db96d56Sopenharmony_ci{ 12377db96d56Sopenharmony_ci PyObject *return_value = NULL; 12387db96d56Sopenharmony_ci int nid; 12397db96d56Sopenharmony_ci 12407db96d56Sopenharmony_ci nid = _PyLong_AsInt(arg); 12417db96d56Sopenharmony_ci if (nid == -1 && PyErr_Occurred()) { 12427db96d56Sopenharmony_ci goto exit; 12437db96d56Sopenharmony_ci } 12447db96d56Sopenharmony_ci return_value = _ssl_nid2obj_impl(module, nid); 12457db96d56Sopenharmony_ci 12467db96d56Sopenharmony_ciexit: 12477db96d56Sopenharmony_ci return return_value; 12487db96d56Sopenharmony_ci} 12497db96d56Sopenharmony_ci 12507db96d56Sopenharmony_ci#if defined(_MSC_VER) 12517db96d56Sopenharmony_ci 12527db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_enum_certificates__doc__, 12537db96d56Sopenharmony_ci"enum_certificates($module, /, store_name)\n" 12547db96d56Sopenharmony_ci"--\n" 12557db96d56Sopenharmony_ci"\n" 12567db96d56Sopenharmony_ci"Retrieve certificates from Windows\' cert store.\n" 12577db96d56Sopenharmony_ci"\n" 12587db96d56Sopenharmony_ci"store_name may be one of \'CA\', \'ROOT\' or \'MY\'. The system may provide\n" 12597db96d56Sopenharmony_ci"more cert storages, too. The function returns a list of (bytes,\n" 12607db96d56Sopenharmony_ci"encoding_type, trust) tuples. The encoding_type flag can be interpreted\n" 12617db96d56Sopenharmony_ci"with X509_ASN_ENCODING or PKCS_7_ASN_ENCODING. The trust setting is either\n" 12627db96d56Sopenharmony_ci"a set of OIDs or the boolean True."); 12637db96d56Sopenharmony_ci 12647db96d56Sopenharmony_ci#define _SSL_ENUM_CERTIFICATES_METHODDEF \ 12657db96d56Sopenharmony_ci {"enum_certificates", _PyCFunction_CAST(_ssl_enum_certificates), METH_FASTCALL|METH_KEYWORDS, _ssl_enum_certificates__doc__}, 12667db96d56Sopenharmony_ci 12677db96d56Sopenharmony_cistatic PyObject * 12687db96d56Sopenharmony_ci_ssl_enum_certificates_impl(PyObject *module, const char *store_name); 12697db96d56Sopenharmony_ci 12707db96d56Sopenharmony_cistatic PyObject * 12717db96d56Sopenharmony_ci_ssl_enum_certificates(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 12727db96d56Sopenharmony_ci{ 12737db96d56Sopenharmony_ci PyObject *return_value = NULL; 12747db96d56Sopenharmony_ci static const char * const _keywords[] = {"store_name", NULL}; 12757db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "enum_certificates", 0}; 12767db96d56Sopenharmony_ci PyObject *argsbuf[1]; 12777db96d56Sopenharmony_ci const char *store_name; 12787db96d56Sopenharmony_ci 12797db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 12807db96d56Sopenharmony_ci if (!args) { 12817db96d56Sopenharmony_ci goto exit; 12827db96d56Sopenharmony_ci } 12837db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 12847db96d56Sopenharmony_ci _PyArg_BadArgument("enum_certificates", "argument 'store_name'", "str", args[0]); 12857db96d56Sopenharmony_ci goto exit; 12867db96d56Sopenharmony_ci } 12877db96d56Sopenharmony_ci Py_ssize_t store_name_length; 12887db96d56Sopenharmony_ci store_name = PyUnicode_AsUTF8AndSize(args[0], &store_name_length); 12897db96d56Sopenharmony_ci if (store_name == NULL) { 12907db96d56Sopenharmony_ci goto exit; 12917db96d56Sopenharmony_ci } 12927db96d56Sopenharmony_ci if (strlen(store_name) != (size_t)store_name_length) { 12937db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 12947db96d56Sopenharmony_ci goto exit; 12957db96d56Sopenharmony_ci } 12967db96d56Sopenharmony_ci return_value = _ssl_enum_certificates_impl(module, store_name); 12977db96d56Sopenharmony_ci 12987db96d56Sopenharmony_ciexit: 12997db96d56Sopenharmony_ci return return_value; 13007db96d56Sopenharmony_ci} 13017db96d56Sopenharmony_ci 13027db96d56Sopenharmony_ci#endif /* defined(_MSC_VER) */ 13037db96d56Sopenharmony_ci 13047db96d56Sopenharmony_ci#if defined(_MSC_VER) 13057db96d56Sopenharmony_ci 13067db96d56Sopenharmony_ciPyDoc_STRVAR(_ssl_enum_crls__doc__, 13077db96d56Sopenharmony_ci"enum_crls($module, /, store_name)\n" 13087db96d56Sopenharmony_ci"--\n" 13097db96d56Sopenharmony_ci"\n" 13107db96d56Sopenharmony_ci"Retrieve CRLs from Windows\' cert store.\n" 13117db96d56Sopenharmony_ci"\n" 13127db96d56Sopenharmony_ci"store_name may be one of \'CA\', \'ROOT\' or \'MY\'. The system may provide\n" 13137db96d56Sopenharmony_ci"more cert storages, too. The function returns a list of (bytes,\n" 13147db96d56Sopenharmony_ci"encoding_type) tuples. The encoding_type flag can be interpreted with\n" 13157db96d56Sopenharmony_ci"X509_ASN_ENCODING or PKCS_7_ASN_ENCODING."); 13167db96d56Sopenharmony_ci 13177db96d56Sopenharmony_ci#define _SSL_ENUM_CRLS_METHODDEF \ 13187db96d56Sopenharmony_ci {"enum_crls", _PyCFunction_CAST(_ssl_enum_crls), METH_FASTCALL|METH_KEYWORDS, _ssl_enum_crls__doc__}, 13197db96d56Sopenharmony_ci 13207db96d56Sopenharmony_cistatic PyObject * 13217db96d56Sopenharmony_ci_ssl_enum_crls_impl(PyObject *module, const char *store_name); 13227db96d56Sopenharmony_ci 13237db96d56Sopenharmony_cistatic PyObject * 13247db96d56Sopenharmony_ci_ssl_enum_crls(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 13257db96d56Sopenharmony_ci{ 13267db96d56Sopenharmony_ci PyObject *return_value = NULL; 13277db96d56Sopenharmony_ci static const char * const _keywords[] = {"store_name", NULL}; 13287db96d56Sopenharmony_ci static _PyArg_Parser _parser = {NULL, _keywords, "enum_crls", 0}; 13297db96d56Sopenharmony_ci PyObject *argsbuf[1]; 13307db96d56Sopenharmony_ci const char *store_name; 13317db96d56Sopenharmony_ci 13327db96d56Sopenharmony_ci args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf); 13337db96d56Sopenharmony_ci if (!args) { 13347db96d56Sopenharmony_ci goto exit; 13357db96d56Sopenharmony_ci } 13367db96d56Sopenharmony_ci if (!PyUnicode_Check(args[0])) { 13377db96d56Sopenharmony_ci _PyArg_BadArgument("enum_crls", "argument 'store_name'", "str", args[0]); 13387db96d56Sopenharmony_ci goto exit; 13397db96d56Sopenharmony_ci } 13407db96d56Sopenharmony_ci Py_ssize_t store_name_length; 13417db96d56Sopenharmony_ci store_name = PyUnicode_AsUTF8AndSize(args[0], &store_name_length); 13427db96d56Sopenharmony_ci if (store_name == NULL) { 13437db96d56Sopenharmony_ci goto exit; 13447db96d56Sopenharmony_ci } 13457db96d56Sopenharmony_ci if (strlen(store_name) != (size_t)store_name_length) { 13467db96d56Sopenharmony_ci PyErr_SetString(PyExc_ValueError, "embedded null character"); 13477db96d56Sopenharmony_ci goto exit; 13487db96d56Sopenharmony_ci } 13497db96d56Sopenharmony_ci return_value = _ssl_enum_crls_impl(module, store_name); 13507db96d56Sopenharmony_ci 13517db96d56Sopenharmony_ciexit: 13527db96d56Sopenharmony_ci return return_value; 13537db96d56Sopenharmony_ci} 13547db96d56Sopenharmony_ci 13557db96d56Sopenharmony_ci#endif /* defined(_MSC_VER) */ 13567db96d56Sopenharmony_ci 13577db96d56Sopenharmony_ci#ifndef _SSL_ENUM_CERTIFICATES_METHODDEF 13587db96d56Sopenharmony_ci #define _SSL_ENUM_CERTIFICATES_METHODDEF 13597db96d56Sopenharmony_ci#endif /* !defined(_SSL_ENUM_CERTIFICATES_METHODDEF) */ 13607db96d56Sopenharmony_ci 13617db96d56Sopenharmony_ci#ifndef _SSL_ENUM_CRLS_METHODDEF 13627db96d56Sopenharmony_ci #define _SSL_ENUM_CRLS_METHODDEF 13637db96d56Sopenharmony_ci#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */ 13647db96d56Sopenharmony_ci/*[clinic end generated code: output=2a488dd0cbc777df input=a9049054013a1b77]*/ 1365