1 /*[clinic input] 2 preserve 3 [clinic start generated code]*/ 4 5 PyDoc_STRVAR(_ssl__SSLSocket_do_handshake__doc__, 6 "do_handshake($self, /)\n" 7 "--\n" 8 "\n"); 9 10 #define _SSL__SSLSOCKET_DO_HANDSHAKE_METHODDEF \ 11 {"do_handshake", (PyCFunction)_ssl__SSLSocket_do_handshake, METH_NOARGS, _ssl__SSLSocket_do_handshake__doc__}, 12 13 static PyObject * 14 _ssl__SSLSocket_do_handshake_impl(PySSLSocket *self); 15 16 static PyObject * 17 _ssl__SSLSocket_do_handshake(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 18 { 19 return _ssl__SSLSocket_do_handshake_impl(self); 20 } 21 22 PyDoc_STRVAR(_ssl__test_decode_cert__doc__, 23 "_test_decode_cert($module, path, /)\n" 24 "--\n" 25 "\n"); 26 27 #define _SSL__TEST_DECODE_CERT_METHODDEF \ 28 {"_test_decode_cert", (PyCFunction)_ssl__test_decode_cert, METH_O, _ssl__test_decode_cert__doc__}, 29 30 static PyObject * 31 _ssl__test_decode_cert_impl(PyObject *module, PyObject *path); 32 33 static PyObject * 34 _ssl__test_decode_cert(PyObject *module, PyObject *arg) 35 { 36 PyObject *return_value = NULL; 37 PyObject *path; 38 39 if (!PyArg_Parse(arg, "O&:_test_decode_cert", PyUnicode_FSConverter, &path)) { 40 goto exit; 41 } 42 return_value = _ssl__test_decode_cert_impl(module, path); 43 44 exit: 45 return return_value; 46 } 47 48 PyDoc_STRVAR(_ssl__SSLSocket_getpeercert__doc__, 49 "getpeercert($self, der=False, /)\n" 50 "--\n" 51 "\n" 52 "Returns the certificate for the peer.\n" 53 "\n" 54 "If no certificate was provided, returns None. If a certificate was\n" 55 "provided, but not validated, returns an empty dictionary. Otherwise\n" 56 "returns a dict containing information about the peer certificate.\n" 57 "\n" 58 "If the optional argument is True, returns a DER-encoded copy of the\n" 59 "peer certificate, or None if no certificate was provided. This will\n" 60 "return the certificate even if it wasn\'t validated."); 61 62 #define _SSL__SSLSOCKET_GETPEERCERT_METHODDEF \ 63 {"getpeercert", (PyCFunction)_ssl__SSLSocket_getpeercert, METH_FASTCALL, _ssl__SSLSocket_getpeercert__doc__}, 64 65 static PyObject * 66 _ssl__SSLSocket_getpeercert_impl(PySSLSocket *self, int binary_mode); 67 68 static PyObject * 69 _ssl__SSLSocket_getpeercert(PySSLSocket *self, PyObject *const *args, Py_ssize_t nargs) 70 { 71 PyObject *return_value = NULL; 72 int binary_mode = 0; 73 74 if (!_PyArg_ParseStack(args, nargs, "|p:getpeercert", 75 &binary_mode)) { 76 goto exit; 77 } 78 return_value = _ssl__SSLSocket_getpeercert_impl(self, binary_mode); 79 80 exit: 81 return return_value; 82 } 83 84 PyDoc_STRVAR(_ssl__SSLSocket_shared_ciphers__doc__, 85 "shared_ciphers($self, /)\n" 86 "--\n" 87 "\n"); 88 89 #define _SSL__SSLSOCKET_SHARED_CIPHERS_METHODDEF \ 90 {"shared_ciphers", (PyCFunction)_ssl__SSLSocket_shared_ciphers, METH_NOARGS, _ssl__SSLSocket_shared_ciphers__doc__}, 91 92 static PyObject * 93 _ssl__SSLSocket_shared_ciphers_impl(PySSLSocket *self); 94 95 static PyObject * 96 _ssl__SSLSocket_shared_ciphers(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 97 { 98 return _ssl__SSLSocket_shared_ciphers_impl(self); 99 } 100 101 PyDoc_STRVAR(_ssl__SSLSocket_cipher__doc__, 102 "cipher($self, /)\n" 103 "--\n" 104 "\n"); 105 106 #define _SSL__SSLSOCKET_CIPHER_METHODDEF \ 107 {"cipher", (PyCFunction)_ssl__SSLSocket_cipher, METH_NOARGS, _ssl__SSLSocket_cipher__doc__}, 108 109 static PyObject * 110 _ssl__SSLSocket_cipher_impl(PySSLSocket *self); 111 112 static PyObject * 113 _ssl__SSLSocket_cipher(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 114 { 115 return _ssl__SSLSocket_cipher_impl(self); 116 } 117 118 PyDoc_STRVAR(_ssl__SSLSocket_version__doc__, 119 "version($self, /)\n" 120 "--\n" 121 "\n"); 122 123 #define _SSL__SSLSOCKET_VERSION_METHODDEF \ 124 {"version", (PyCFunction)_ssl__SSLSocket_version, METH_NOARGS, _ssl__SSLSocket_version__doc__}, 125 126 static PyObject * 127 _ssl__SSLSocket_version_impl(PySSLSocket *self); 128 129 static PyObject * 130 _ssl__SSLSocket_version(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 131 { 132 return _ssl__SSLSocket_version_impl(self); 133 } 134 135 #if (HAVE_NPN) 136 137 PyDoc_STRVAR(_ssl__SSLSocket_selected_npn_protocol__doc__, 138 "selected_npn_protocol($self, /)\n" 139 "--\n" 140 "\n"); 141 142 #define _SSL__SSLSOCKET_SELECTED_NPN_PROTOCOL_METHODDEF \ 143 {"selected_npn_protocol", (PyCFunction)_ssl__SSLSocket_selected_npn_protocol, METH_NOARGS, _ssl__SSLSocket_selected_npn_protocol__doc__}, 144 145 static PyObject * 146 _ssl__SSLSocket_selected_npn_protocol_impl(PySSLSocket *self); 147 148 static PyObject * 149 _ssl__SSLSocket_selected_npn_protocol(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 150 { 151 return _ssl__SSLSocket_selected_npn_protocol_impl(self); 152 } 153 154 #endif /* (HAVE_NPN) */ 155 156 #if (HAVE_ALPN) 157 158 PyDoc_STRVAR(_ssl__SSLSocket_selected_alpn_protocol__doc__, 159 "selected_alpn_protocol($self, /)\n" 160 "--\n" 161 "\n"); 162 163 #define _SSL__SSLSOCKET_SELECTED_ALPN_PROTOCOL_METHODDEF \ 164 {"selected_alpn_protocol", (PyCFunction)_ssl__SSLSocket_selected_alpn_protocol, METH_NOARGS, _ssl__SSLSocket_selected_alpn_protocol__doc__}, 165 166 static PyObject * 167 _ssl__SSLSocket_selected_alpn_protocol_impl(PySSLSocket *self); 168 169 static PyObject * 170 _ssl__SSLSocket_selected_alpn_protocol(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 171 { 172 return _ssl__SSLSocket_selected_alpn_protocol_impl(self); 173 } 174 175 #endif /* (HAVE_ALPN) */ 176 177 PyDoc_STRVAR(_ssl__SSLSocket_compression__doc__, 178 "compression($self, /)\n" 179 "--\n" 180 "\n"); 181 182 #define _SSL__SSLSOCKET_COMPRESSION_METHODDEF \ 183 {"compression", (PyCFunction)_ssl__SSLSocket_compression, METH_NOARGS, _ssl__SSLSocket_compression__doc__}, 184 185 static PyObject * 186 _ssl__SSLSocket_compression_impl(PySSLSocket *self); 187 188 static PyObject * 189 _ssl__SSLSocket_compression(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 190 { 191 return _ssl__SSLSocket_compression_impl(self); 192 } 193 194 PyDoc_STRVAR(_ssl__SSLSocket_write__doc__, 195 "write($self, b, /)\n" 196 "--\n" 197 "\n" 198 "Writes the bytes-like object b into the SSL object.\n" 199 "\n" 200 "Returns the number of bytes written."); 201 202 #define _SSL__SSLSOCKET_WRITE_METHODDEF \ 203 {"write", (PyCFunction)_ssl__SSLSocket_write, METH_O, _ssl__SSLSocket_write__doc__}, 204 205 static PyObject * 206 _ssl__SSLSocket_write_impl(PySSLSocket *self, Py_buffer *b); 207 208 static PyObject * 209 _ssl__SSLSocket_write(PySSLSocket *self, PyObject *arg) 210 { 211 PyObject *return_value = NULL; 212 Py_buffer b = {NULL, NULL}; 213 214 if (!PyArg_Parse(arg, "y*:write", &b)) { 215 goto exit; 216 } 217 return_value = _ssl__SSLSocket_write_impl(self, &b); 218 219 exit: 220 /* Cleanup for b */ 221 if (b.obj) { 222 PyBuffer_Release(&b); 223 } 224 225 return return_value; 226 } 227 228 PyDoc_STRVAR(_ssl__SSLSocket_pending__doc__, 229 "pending($self, /)\n" 230 "--\n" 231 "\n" 232 "Returns the number of already decrypted bytes available for read, pending on the connection."); 233 234 #define _SSL__SSLSOCKET_PENDING_METHODDEF \ 235 {"pending", (PyCFunction)_ssl__SSLSocket_pending, METH_NOARGS, _ssl__SSLSocket_pending__doc__}, 236 237 static PyObject * 238 _ssl__SSLSocket_pending_impl(PySSLSocket *self); 239 240 static PyObject * 241 _ssl__SSLSocket_pending(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 242 { 243 return _ssl__SSLSocket_pending_impl(self); 244 } 245 246 PyDoc_STRVAR(_ssl__SSLSocket_read__doc__, 247 "read(size, [buffer])\n" 248 "Read up to size bytes from the SSL socket."); 249 250 #define _SSL__SSLSOCKET_READ_METHODDEF \ 251 {"read", (PyCFunction)_ssl__SSLSocket_read, METH_VARARGS, _ssl__SSLSocket_read__doc__}, 252 253 static PyObject * 254 _ssl__SSLSocket_read_impl(PySSLSocket *self, int len, int group_right_1, 255 Py_buffer *buffer); 256 257 static PyObject * 258 _ssl__SSLSocket_read(PySSLSocket *self, PyObject *args) 259 { 260 PyObject *return_value = NULL; 261 int len; 262 int group_right_1 = 0; 263 Py_buffer buffer = {NULL, NULL}; 264 265 switch (PyTuple_GET_SIZE(args)) { 266 case 1: 267 if (!PyArg_ParseTuple(args, "i:read", &len)) { 268 goto exit; 269 } 270 break; 271 case 2: 272 if (!PyArg_ParseTuple(args, "iw*:read", &len, &buffer)) { 273 goto exit; 274 } 275 group_right_1 = 1; 276 break; 277 default: 278 PyErr_SetString(PyExc_TypeError, "_ssl._SSLSocket.read requires 1 to 2 arguments"); 279 goto exit; 280 } 281 return_value = _ssl__SSLSocket_read_impl(self, len, group_right_1, &buffer); 282 283 exit: 284 /* Cleanup for buffer */ 285 if (buffer.obj) { 286 PyBuffer_Release(&buffer); 287 } 288 289 return return_value; 290 } 291 292 PyDoc_STRVAR(_ssl__SSLSocket_shutdown__doc__, 293 "shutdown($self, /)\n" 294 "--\n" 295 "\n" 296 "Does the SSL shutdown handshake with the remote end."); 297 298 #define _SSL__SSLSOCKET_SHUTDOWN_METHODDEF \ 299 {"shutdown", (PyCFunction)_ssl__SSLSocket_shutdown, METH_NOARGS, _ssl__SSLSocket_shutdown__doc__}, 300 301 static PyObject * 302 _ssl__SSLSocket_shutdown_impl(PySSLSocket *self); 303 304 static PyObject * 305 _ssl__SSLSocket_shutdown(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 306 { 307 return _ssl__SSLSocket_shutdown_impl(self); 308 } 309 310 PyDoc_STRVAR(_ssl__SSLSocket_get_channel_binding__doc__, 311 "get_channel_binding($self, /, cb_type=\'tls-unique\')\n" 312 "--\n" 313 "\n" 314 "Get channel binding data for current connection.\n" 315 "\n" 316 "Raise ValueError if the requested `cb_type` is not supported. Return bytes\n" 317 "of the data or None if the data is not available (e.g. before the handshake).\n" 318 "Only \'tls-unique\' channel binding data from RFC 5929 is supported."); 319 320 #define _SSL__SSLSOCKET_GET_CHANNEL_BINDING_METHODDEF \ 321 {"get_channel_binding", (PyCFunction)_ssl__SSLSocket_get_channel_binding, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLSocket_get_channel_binding__doc__}, 322 323 static PyObject * 324 _ssl__SSLSocket_get_channel_binding_impl(PySSLSocket *self, 325 const char *cb_type); 326 327 static PyObject * 328 _ssl__SSLSocket_get_channel_binding(PySSLSocket *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 329 { 330 PyObject *return_value = NULL; 331 static const char * const _keywords[] = {"cb_type", NULL}; 332 static _PyArg_Parser _parser = {"|s:get_channel_binding", _keywords, 0}; 333 const char *cb_type = "tls-unique"; 334 335 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 336 &cb_type)) { 337 goto exit; 338 } 339 return_value = _ssl__SSLSocket_get_channel_binding_impl(self, cb_type); 340 341 exit: 342 return return_value; 343 } 344 345 PyDoc_STRVAR(_ssl__SSLSocket_verify_client_post_handshake__doc__, 346 "verify_client_post_handshake($self, /)\n" 347 "--\n" 348 "\n" 349 "Initiate TLS 1.3 post-handshake authentication"); 350 351 #define _SSL__SSLSOCKET_VERIFY_CLIENT_POST_HANDSHAKE_METHODDEF \ 352 {"verify_client_post_handshake", (PyCFunction)_ssl__SSLSocket_verify_client_post_handshake, METH_NOARGS, _ssl__SSLSocket_verify_client_post_handshake__doc__}, 353 354 static PyObject * 355 _ssl__SSLSocket_verify_client_post_handshake_impl(PySSLSocket *self); 356 357 static PyObject * 358 _ssl__SSLSocket_verify_client_post_handshake(PySSLSocket *self, PyObject *Py_UNUSED(ignored)) 359 { 360 return _ssl__SSLSocket_verify_client_post_handshake_impl(self); 361 } 362 363 static PyObject * 364 _ssl__SSLContext_impl(PyTypeObject *type, int proto_version); 365 366 static PyObject * 367 _ssl__SSLContext(PyTypeObject *type, PyObject *args, PyObject *kwargs) 368 { 369 PyObject *return_value = NULL; 370 int proto_version; 371 372 if ((type == &PySSLContext_Type) && 373 !_PyArg_NoKeywords("_SSLContext", kwargs)) { 374 goto exit; 375 } 376 if (!PyArg_ParseTuple(args, "i:_SSLContext", 377 &proto_version)) { 378 goto exit; 379 } 380 return_value = _ssl__SSLContext_impl(type, proto_version); 381 382 exit: 383 return return_value; 384 } 385 386 PyDoc_STRVAR(_ssl__SSLContext_set_ciphers__doc__, 387 "set_ciphers($self, cipherlist, /)\n" 388 "--\n" 389 "\n"); 390 391 #define _SSL__SSLCONTEXT_SET_CIPHERS_METHODDEF \ 392 {"set_ciphers", (PyCFunction)_ssl__SSLContext_set_ciphers, METH_O, _ssl__SSLContext_set_ciphers__doc__}, 393 394 static PyObject * 395 _ssl__SSLContext_set_ciphers_impl(PySSLContext *self, const char *cipherlist); 396 397 static PyObject * 398 _ssl__SSLContext_set_ciphers(PySSLContext *self, PyObject *arg) 399 { 400 PyObject *return_value = NULL; 401 const char *cipherlist; 402 403 if (!PyArg_Parse(arg, "s:set_ciphers", &cipherlist)) { 404 goto exit; 405 } 406 return_value = _ssl__SSLContext_set_ciphers_impl(self, cipherlist); 407 408 exit: 409 return return_value; 410 } 411 412 #if (OPENSSL_VERSION_NUMBER >= 0x10002000UL) 413 414 PyDoc_STRVAR(_ssl__SSLContext_get_ciphers__doc__, 415 "get_ciphers($self, /)\n" 416 "--\n" 417 "\n"); 418 419 #define _SSL__SSLCONTEXT_GET_CIPHERS_METHODDEF \ 420 {"get_ciphers", (PyCFunction)_ssl__SSLContext_get_ciphers, METH_NOARGS, _ssl__SSLContext_get_ciphers__doc__}, 421 422 static PyObject * 423 _ssl__SSLContext_get_ciphers_impl(PySSLContext *self); 424 425 static PyObject * 426 _ssl__SSLContext_get_ciphers(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 427 { 428 return _ssl__SSLContext_get_ciphers_impl(self); 429 } 430 431 #endif /* (OPENSSL_VERSION_NUMBER >= 0x10002000UL) */ 432 433 PyDoc_STRVAR(_ssl__SSLContext__set_npn_protocols__doc__, 434 "_set_npn_protocols($self, protos, /)\n" 435 "--\n" 436 "\n"); 437 438 #define _SSL__SSLCONTEXT__SET_NPN_PROTOCOLS_METHODDEF \ 439 {"_set_npn_protocols", (PyCFunction)_ssl__SSLContext__set_npn_protocols, METH_O, _ssl__SSLContext__set_npn_protocols__doc__}, 440 441 static PyObject * 442 _ssl__SSLContext__set_npn_protocols_impl(PySSLContext *self, 443 Py_buffer *protos); 444 445 static PyObject * 446 _ssl__SSLContext__set_npn_protocols(PySSLContext *self, PyObject *arg) 447 { 448 PyObject *return_value = NULL; 449 Py_buffer protos = {NULL, NULL}; 450 451 if (!PyArg_Parse(arg, "y*:_set_npn_protocols", &protos)) { 452 goto exit; 453 } 454 return_value = _ssl__SSLContext__set_npn_protocols_impl(self, &protos); 455 456 exit: 457 /* Cleanup for protos */ 458 if (protos.obj) { 459 PyBuffer_Release(&protos); 460 } 461 462 return return_value; 463 } 464 465 PyDoc_STRVAR(_ssl__SSLContext__set_alpn_protocols__doc__, 466 "_set_alpn_protocols($self, protos, /)\n" 467 "--\n" 468 "\n"); 469 470 #define _SSL__SSLCONTEXT__SET_ALPN_PROTOCOLS_METHODDEF \ 471 {"_set_alpn_protocols", (PyCFunction)_ssl__SSLContext__set_alpn_protocols, METH_O, _ssl__SSLContext__set_alpn_protocols__doc__}, 472 473 static PyObject * 474 _ssl__SSLContext__set_alpn_protocols_impl(PySSLContext *self, 475 Py_buffer *protos); 476 477 static PyObject * 478 _ssl__SSLContext__set_alpn_protocols(PySSLContext *self, PyObject *arg) 479 { 480 PyObject *return_value = NULL; 481 Py_buffer protos = {NULL, NULL}; 482 483 if (!PyArg_Parse(arg, "y*:_set_alpn_protocols", &protos)) { 484 goto exit; 485 } 486 return_value = _ssl__SSLContext__set_alpn_protocols_impl(self, &protos); 487 488 exit: 489 /* Cleanup for protos */ 490 if (protos.obj) { 491 PyBuffer_Release(&protos); 492 } 493 494 return return_value; 495 } 496 497 PyDoc_STRVAR(_ssl__SSLContext_load_cert_chain__doc__, 498 "load_cert_chain($self, /, certfile, keyfile=None, password=None)\n" 499 "--\n" 500 "\n"); 501 502 #define _SSL__SSLCONTEXT_LOAD_CERT_CHAIN_METHODDEF \ 503 {"load_cert_chain", (PyCFunction)_ssl__SSLContext_load_cert_chain, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_load_cert_chain__doc__}, 504 505 static PyObject * 506 _ssl__SSLContext_load_cert_chain_impl(PySSLContext *self, PyObject *certfile, 507 PyObject *keyfile, PyObject *password); 508 509 static PyObject * 510 _ssl__SSLContext_load_cert_chain(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 511 { 512 PyObject *return_value = NULL; 513 static const char * const _keywords[] = {"certfile", "keyfile", "password", NULL}; 514 static _PyArg_Parser _parser = {"O|OO:load_cert_chain", _keywords, 0}; 515 PyObject *certfile; 516 PyObject *keyfile = NULL; 517 PyObject *password = NULL; 518 519 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 520 &certfile, &keyfile, &password)) { 521 goto exit; 522 } 523 return_value = _ssl__SSLContext_load_cert_chain_impl(self, certfile, keyfile, password); 524 525 exit: 526 return return_value; 527 } 528 529 PyDoc_STRVAR(_ssl__SSLContext_load_verify_locations__doc__, 530 "load_verify_locations($self, /, cafile=None, capath=None, cadata=None)\n" 531 "--\n" 532 "\n"); 533 534 #define _SSL__SSLCONTEXT_LOAD_VERIFY_LOCATIONS_METHODDEF \ 535 {"load_verify_locations", (PyCFunction)_ssl__SSLContext_load_verify_locations, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_load_verify_locations__doc__}, 536 537 static PyObject * 538 _ssl__SSLContext_load_verify_locations_impl(PySSLContext *self, 539 PyObject *cafile, 540 PyObject *capath, 541 PyObject *cadata); 542 543 static PyObject * 544 _ssl__SSLContext_load_verify_locations(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 545 { 546 PyObject *return_value = NULL; 547 static const char * const _keywords[] = {"cafile", "capath", "cadata", NULL}; 548 static _PyArg_Parser _parser = {"|OOO:load_verify_locations", _keywords, 0}; 549 PyObject *cafile = NULL; 550 PyObject *capath = NULL; 551 PyObject *cadata = NULL; 552 553 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 554 &cafile, &capath, &cadata)) { 555 goto exit; 556 } 557 return_value = _ssl__SSLContext_load_verify_locations_impl(self, cafile, capath, cadata); 558 559 exit: 560 return return_value; 561 } 562 563 PyDoc_STRVAR(_ssl__SSLContext_load_dh_params__doc__, 564 "load_dh_params($self, path, /)\n" 565 "--\n" 566 "\n"); 567 568 #define _SSL__SSLCONTEXT_LOAD_DH_PARAMS_METHODDEF \ 569 {"load_dh_params", (PyCFunction)_ssl__SSLContext_load_dh_params, METH_O, _ssl__SSLContext_load_dh_params__doc__}, 570 571 PyDoc_STRVAR(_ssl__SSLContext__wrap_socket__doc__, 572 "_wrap_socket($self, /, sock, server_side, server_hostname=None, *,\n" 573 " owner=None, session=None)\n" 574 "--\n" 575 "\n"); 576 577 #define _SSL__SSLCONTEXT__WRAP_SOCKET_METHODDEF \ 578 {"_wrap_socket", (PyCFunction)_ssl__SSLContext__wrap_socket, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext__wrap_socket__doc__}, 579 580 static PyObject * 581 _ssl__SSLContext__wrap_socket_impl(PySSLContext *self, PyObject *sock, 582 int server_side, PyObject *hostname_obj, 583 PyObject *owner, PyObject *session); 584 585 static PyObject * 586 _ssl__SSLContext__wrap_socket(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 587 { 588 PyObject *return_value = NULL; 589 static const char * const _keywords[] = {"sock", "server_side", "server_hostname", "owner", "session", NULL}; 590 static _PyArg_Parser _parser = {"O!i|O$OO:_wrap_socket", _keywords, 0}; 591 PyObject *sock; 592 int server_side; 593 PyObject *hostname_obj = Py_None; 594 PyObject *owner = Py_None; 595 PyObject *session = Py_None; 596 597 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 598 PySocketModule.Sock_Type, &sock, &server_side, &hostname_obj, &owner, &session)) { 599 goto exit; 600 } 601 return_value = _ssl__SSLContext__wrap_socket_impl(self, sock, server_side, hostname_obj, owner, session); 602 603 exit: 604 return return_value; 605 } 606 607 PyDoc_STRVAR(_ssl__SSLContext__wrap_bio__doc__, 608 "_wrap_bio($self, /, incoming, outgoing, server_side,\n" 609 " server_hostname=None, *, owner=None, session=None)\n" 610 "--\n" 611 "\n"); 612 613 #define _SSL__SSLCONTEXT__WRAP_BIO_METHODDEF \ 614 {"_wrap_bio", (PyCFunction)_ssl__SSLContext__wrap_bio, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext__wrap_bio__doc__}, 615 616 static PyObject * 617 _ssl__SSLContext__wrap_bio_impl(PySSLContext *self, PySSLMemoryBIO *incoming, 618 PySSLMemoryBIO *outgoing, int server_side, 619 PyObject *hostname_obj, PyObject *owner, 620 PyObject *session); 621 622 static PyObject * 623 _ssl__SSLContext__wrap_bio(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 624 { 625 PyObject *return_value = NULL; 626 static const char * const _keywords[] = {"incoming", "outgoing", "server_side", "server_hostname", "owner", "session", NULL}; 627 static _PyArg_Parser _parser = {"O!O!i|O$OO:_wrap_bio", _keywords, 0}; 628 PySSLMemoryBIO *incoming; 629 PySSLMemoryBIO *outgoing; 630 int server_side; 631 PyObject *hostname_obj = Py_None; 632 PyObject *owner = Py_None; 633 PyObject *session = Py_None; 634 635 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 636 &PySSLMemoryBIO_Type, &incoming, &PySSLMemoryBIO_Type, &outgoing, &server_side, &hostname_obj, &owner, &session)) { 637 goto exit; 638 } 639 return_value = _ssl__SSLContext__wrap_bio_impl(self, incoming, outgoing, server_side, hostname_obj, owner, session); 640 641 exit: 642 return return_value; 643 } 644 645 PyDoc_STRVAR(_ssl__SSLContext_session_stats__doc__, 646 "session_stats($self, /)\n" 647 "--\n" 648 "\n"); 649 650 #define _SSL__SSLCONTEXT_SESSION_STATS_METHODDEF \ 651 {"session_stats", (PyCFunction)_ssl__SSLContext_session_stats, METH_NOARGS, _ssl__SSLContext_session_stats__doc__}, 652 653 static PyObject * 654 _ssl__SSLContext_session_stats_impl(PySSLContext *self); 655 656 static PyObject * 657 _ssl__SSLContext_session_stats(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 658 { 659 return _ssl__SSLContext_session_stats_impl(self); 660 } 661 662 PyDoc_STRVAR(_ssl__SSLContext_set_default_verify_paths__doc__, 663 "set_default_verify_paths($self, /)\n" 664 "--\n" 665 "\n"); 666 667 #define _SSL__SSLCONTEXT_SET_DEFAULT_VERIFY_PATHS_METHODDEF \ 668 {"set_default_verify_paths", (PyCFunction)_ssl__SSLContext_set_default_verify_paths, METH_NOARGS, _ssl__SSLContext_set_default_verify_paths__doc__}, 669 670 static PyObject * 671 _ssl__SSLContext_set_default_verify_paths_impl(PySSLContext *self); 672 673 static PyObject * 674 _ssl__SSLContext_set_default_verify_paths(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 675 { 676 return _ssl__SSLContext_set_default_verify_paths_impl(self); 677 } 678 679 #if !defined(OPENSSL_NO_ECDH) 680 681 PyDoc_STRVAR(_ssl__SSLContext_set_ecdh_curve__doc__, 682 "set_ecdh_curve($self, name, /)\n" 683 "--\n" 684 "\n"); 685 686 #define _SSL__SSLCONTEXT_SET_ECDH_CURVE_METHODDEF \ 687 {"set_ecdh_curve", (PyCFunction)_ssl__SSLContext_set_ecdh_curve, METH_O, _ssl__SSLContext_set_ecdh_curve__doc__}, 688 689 #endif /* !defined(OPENSSL_NO_ECDH) */ 690 691 PyDoc_STRVAR(_ssl__SSLContext_cert_store_stats__doc__, 692 "cert_store_stats($self, /)\n" 693 "--\n" 694 "\n" 695 "Returns quantities of loaded X.509 certificates.\n" 696 "\n" 697 "X.509 certificates with a CA extension and certificate revocation lists\n" 698 "inside the context\'s cert store.\n" 699 "\n" 700 "NOTE: Certificates in a capath directory aren\'t loaded unless they have\n" 701 "been used at least once."); 702 703 #define _SSL__SSLCONTEXT_CERT_STORE_STATS_METHODDEF \ 704 {"cert_store_stats", (PyCFunction)_ssl__SSLContext_cert_store_stats, METH_NOARGS, _ssl__SSLContext_cert_store_stats__doc__}, 705 706 static PyObject * 707 _ssl__SSLContext_cert_store_stats_impl(PySSLContext *self); 708 709 static PyObject * 710 _ssl__SSLContext_cert_store_stats(PySSLContext *self, PyObject *Py_UNUSED(ignored)) 711 { 712 return _ssl__SSLContext_cert_store_stats_impl(self); 713 } 714 715 PyDoc_STRVAR(_ssl__SSLContext_get_ca_certs__doc__, 716 "get_ca_certs($self, /, binary_form=False)\n" 717 "--\n" 718 "\n" 719 "Returns a list of dicts with information of loaded CA certs.\n" 720 "\n" 721 "If the optional argument is True, returns a DER-encoded copy of the CA\n" 722 "certificate.\n" 723 "\n" 724 "NOTE: Certificates in a capath directory aren\'t loaded unless they have\n" 725 "been used at least once."); 726 727 #define _SSL__SSLCONTEXT_GET_CA_CERTS_METHODDEF \ 728 {"get_ca_certs", (PyCFunction)_ssl__SSLContext_get_ca_certs, METH_FASTCALL|METH_KEYWORDS, _ssl__SSLContext_get_ca_certs__doc__}, 729 730 static PyObject * 731 _ssl__SSLContext_get_ca_certs_impl(PySSLContext *self, int binary_form); 732 733 static PyObject * 734 _ssl__SSLContext_get_ca_certs(PySSLContext *self, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 735 { 736 PyObject *return_value = NULL; 737 static const char * const _keywords[] = {"binary_form", NULL}; 738 static _PyArg_Parser _parser = {"|p:get_ca_certs", _keywords, 0}; 739 int binary_form = 0; 740 741 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 742 &binary_form)) { 743 goto exit; 744 } 745 return_value = _ssl__SSLContext_get_ca_certs_impl(self, binary_form); 746 747 exit: 748 return return_value; 749 } 750 751 static PyObject * 752 _ssl_MemoryBIO_impl(PyTypeObject *type); 753 754 static PyObject * 755 _ssl_MemoryBIO(PyTypeObject *type, PyObject *args, PyObject *kwargs) 756 { 757 PyObject *return_value = NULL; 758 759 if ((type == &PySSLMemoryBIO_Type) && 760 !_PyArg_NoPositional("MemoryBIO", args)) { 761 goto exit; 762 } 763 if ((type == &PySSLMemoryBIO_Type) && 764 !_PyArg_NoKeywords("MemoryBIO", kwargs)) { 765 goto exit; 766 } 767 return_value = _ssl_MemoryBIO_impl(type); 768 769 exit: 770 return return_value; 771 } 772 773 PyDoc_STRVAR(_ssl_MemoryBIO_read__doc__, 774 "read($self, size=-1, /)\n" 775 "--\n" 776 "\n" 777 "Read up to size bytes from the memory BIO.\n" 778 "\n" 779 "If size is not specified, read the entire buffer.\n" 780 "If the return value is an empty bytes instance, this means either\n" 781 "EOF or that no data is available. Use the \"eof\" property to\n" 782 "distinguish between the two."); 783 784 #define _SSL_MEMORYBIO_READ_METHODDEF \ 785 {"read", (PyCFunction)_ssl_MemoryBIO_read, METH_FASTCALL, _ssl_MemoryBIO_read__doc__}, 786 787 static PyObject * 788 _ssl_MemoryBIO_read_impl(PySSLMemoryBIO *self, int len); 789 790 static PyObject * 791 _ssl_MemoryBIO_read(PySSLMemoryBIO *self, PyObject *const *args, Py_ssize_t nargs) 792 { 793 PyObject *return_value = NULL; 794 int len = -1; 795 796 if (!_PyArg_ParseStack(args, nargs, "|i:read", 797 &len)) { 798 goto exit; 799 } 800 return_value = _ssl_MemoryBIO_read_impl(self, len); 801 802 exit: 803 return return_value; 804 } 805 806 PyDoc_STRVAR(_ssl_MemoryBIO_write__doc__, 807 "write($self, b, /)\n" 808 "--\n" 809 "\n" 810 "Writes the bytes b into the memory BIO.\n" 811 "\n" 812 "Returns the number of bytes written."); 813 814 #define _SSL_MEMORYBIO_WRITE_METHODDEF \ 815 {"write", (PyCFunction)_ssl_MemoryBIO_write, METH_O, _ssl_MemoryBIO_write__doc__}, 816 817 static PyObject * 818 _ssl_MemoryBIO_write_impl(PySSLMemoryBIO *self, Py_buffer *b); 819 820 static PyObject * 821 _ssl_MemoryBIO_write(PySSLMemoryBIO *self, PyObject *arg) 822 { 823 PyObject *return_value = NULL; 824 Py_buffer b = {NULL, NULL}; 825 826 if (!PyArg_Parse(arg, "y*:write", &b)) { 827 goto exit; 828 } 829 return_value = _ssl_MemoryBIO_write_impl(self, &b); 830 831 exit: 832 /* Cleanup for b */ 833 if (b.obj) { 834 PyBuffer_Release(&b); 835 } 836 837 return return_value; 838 } 839 840 PyDoc_STRVAR(_ssl_MemoryBIO_write_eof__doc__, 841 "write_eof($self, /)\n" 842 "--\n" 843 "\n" 844 "Write an EOF marker to the memory BIO.\n" 845 "\n" 846 "When all data has been read, the \"eof\" property will be True."); 847 848 #define _SSL_MEMORYBIO_WRITE_EOF_METHODDEF \ 849 {"write_eof", (PyCFunction)_ssl_MemoryBIO_write_eof, METH_NOARGS, _ssl_MemoryBIO_write_eof__doc__}, 850 851 static PyObject * 852 _ssl_MemoryBIO_write_eof_impl(PySSLMemoryBIO *self); 853 854 static PyObject * 855 _ssl_MemoryBIO_write_eof(PySSLMemoryBIO *self, PyObject *Py_UNUSED(ignored)) 856 { 857 return _ssl_MemoryBIO_write_eof_impl(self); 858 } 859 860 PyDoc_STRVAR(_ssl_RAND_add__doc__, 861 "RAND_add($module, string, entropy, /)\n" 862 "--\n" 863 "\n" 864 "Mix string into the OpenSSL PRNG state.\n" 865 "\n" 866 "entropy (a float) is a lower bound on the entropy contained in\n" 867 "string. See RFC 4086."); 868 869 #define _SSL_RAND_ADD_METHODDEF \ 870 {"RAND_add", (PyCFunction)_ssl_RAND_add, METH_FASTCALL, _ssl_RAND_add__doc__}, 871 872 static PyObject * 873 _ssl_RAND_add_impl(PyObject *module, Py_buffer *view, double entropy); 874 875 static PyObject * 876 _ssl_RAND_add(PyObject *module, PyObject *const *args, Py_ssize_t nargs) 877 { 878 PyObject *return_value = NULL; 879 Py_buffer view = {NULL, NULL}; 880 double entropy; 881 882 if (!_PyArg_ParseStack(args, nargs, "s*d:RAND_add", 883 &view, &entropy)) { 884 goto exit; 885 } 886 return_value = _ssl_RAND_add_impl(module, &view, entropy); 887 888 exit: 889 /* Cleanup for view */ 890 if (view.obj) { 891 PyBuffer_Release(&view); 892 } 893 894 return return_value; 895 } 896 897 PyDoc_STRVAR(_ssl_RAND_bytes__doc__, 898 "RAND_bytes($module, n, /)\n" 899 "--\n" 900 "\n" 901 "Generate n cryptographically strong pseudo-random bytes."); 902 903 #define _SSL_RAND_BYTES_METHODDEF \ 904 {"RAND_bytes", (PyCFunction)_ssl_RAND_bytes, METH_O, _ssl_RAND_bytes__doc__}, 905 906 static PyObject * 907 _ssl_RAND_bytes_impl(PyObject *module, int n); 908 909 static PyObject * 910 _ssl_RAND_bytes(PyObject *module, PyObject *arg) 911 { 912 PyObject *return_value = NULL; 913 int n; 914 915 if (!PyArg_Parse(arg, "i:RAND_bytes", &n)) { 916 goto exit; 917 } 918 return_value = _ssl_RAND_bytes_impl(module, n); 919 920 exit: 921 return return_value; 922 } 923 924 PyDoc_STRVAR(_ssl_RAND_pseudo_bytes__doc__, 925 "RAND_pseudo_bytes($module, n, /)\n" 926 "--\n" 927 "\n" 928 "Generate n pseudo-random bytes.\n" 929 "\n" 930 "Return a pair (bytes, is_cryptographic). is_cryptographic is True\n" 931 "if the bytes generated are cryptographically strong."); 932 933 #define _SSL_RAND_PSEUDO_BYTES_METHODDEF \ 934 {"RAND_pseudo_bytes", (PyCFunction)_ssl_RAND_pseudo_bytes, METH_O, _ssl_RAND_pseudo_bytes__doc__}, 935 936 static PyObject * 937 _ssl_RAND_pseudo_bytes_impl(PyObject *module, int n); 938 939 static PyObject * 940 _ssl_RAND_pseudo_bytes(PyObject *module, PyObject *arg) 941 { 942 PyObject *return_value = NULL; 943 int n; 944 945 if (!PyArg_Parse(arg, "i:RAND_pseudo_bytes", &n)) { 946 goto exit; 947 } 948 return_value = _ssl_RAND_pseudo_bytes_impl(module, n); 949 950 exit: 951 return return_value; 952 } 953 954 PyDoc_STRVAR(_ssl_RAND_status__doc__, 955 "RAND_status($module, /)\n" 956 "--\n" 957 "\n" 958 "Returns 1 if the OpenSSL PRNG has been seeded with enough data and 0 if not.\n" 959 "\n" 960 "It is necessary to seed the PRNG with RAND_add() on some platforms before\n" 961 "using the ssl() function."); 962 963 #define _SSL_RAND_STATUS_METHODDEF \ 964 {"RAND_status", (PyCFunction)_ssl_RAND_status, METH_NOARGS, _ssl_RAND_status__doc__}, 965 966 static PyObject * 967 _ssl_RAND_status_impl(PyObject *module); 968 969 static PyObject * 970 _ssl_RAND_status(PyObject *module, PyObject *Py_UNUSED(ignored)) 971 { 972 return _ssl_RAND_status_impl(module); 973 } 974 975 #if !defined(OPENSSL_NO_EGD) 976 977 PyDoc_STRVAR(_ssl_RAND_egd__doc__, 978 "RAND_egd($module, path, /)\n" 979 "--\n" 980 "\n" 981 "Queries the entropy gather daemon (EGD) on the socket named by \'path\'.\n" 982 "\n" 983 "Returns number of bytes read. Raises SSLError if connection to EGD\n" 984 "fails or if it does not provide enough data to seed PRNG."); 985 986 #define _SSL_RAND_EGD_METHODDEF \ 987 {"RAND_egd", (PyCFunction)_ssl_RAND_egd, METH_O, _ssl_RAND_egd__doc__}, 988 989 static PyObject * 990 _ssl_RAND_egd_impl(PyObject *module, PyObject *path); 991 992 static PyObject * 993 _ssl_RAND_egd(PyObject *module, PyObject *arg) 994 { 995 PyObject *return_value = NULL; 996 PyObject *path; 997 998 if (!PyArg_Parse(arg, "O&:RAND_egd", PyUnicode_FSConverter, &path)) { 999 goto exit; 1000 } 1001 return_value = _ssl_RAND_egd_impl(module, path); 1002 1003 exit: 1004 return return_value; 1005 } 1006 1007 #endif /* !defined(OPENSSL_NO_EGD) */ 1008 1009 PyDoc_STRVAR(_ssl_get_default_verify_paths__doc__, 1010 "get_default_verify_paths($module, /)\n" 1011 "--\n" 1012 "\n" 1013 "Return search paths and environment vars that are used by SSLContext\'s set_default_verify_paths() to load default CAs.\n" 1014 "\n" 1015 "The values are \'cert_file_env\', \'cert_file\', \'cert_dir_env\', \'cert_dir\'."); 1016 1017 #define _SSL_GET_DEFAULT_VERIFY_PATHS_METHODDEF \ 1018 {"get_default_verify_paths", (PyCFunction)_ssl_get_default_verify_paths, METH_NOARGS, _ssl_get_default_verify_paths__doc__}, 1019 1020 static PyObject * 1021 _ssl_get_default_verify_paths_impl(PyObject *module); 1022 1023 static PyObject * 1024 _ssl_get_default_verify_paths(PyObject *module, PyObject *Py_UNUSED(ignored)) 1025 { 1026 return _ssl_get_default_verify_paths_impl(module); 1027 } 1028 1029 PyDoc_STRVAR(_ssl_txt2obj__doc__, 1030 "txt2obj($module, /, txt, name=False)\n" 1031 "--\n" 1032 "\n" 1033 "Lookup NID, short name, long name and OID of an ASN1_OBJECT.\n" 1034 "\n" 1035 "By default objects are looked up by OID. With name=True short and\n" 1036 "long name are also matched."); 1037 1038 #define _SSL_TXT2OBJ_METHODDEF \ 1039 {"txt2obj", (PyCFunction)_ssl_txt2obj, METH_FASTCALL|METH_KEYWORDS, _ssl_txt2obj__doc__}, 1040 1041 static PyObject * 1042 _ssl_txt2obj_impl(PyObject *module, const char *txt, int name); 1043 1044 static PyObject * 1045 _ssl_txt2obj(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1046 { 1047 PyObject *return_value = NULL; 1048 static const char * const _keywords[] = {"txt", "name", NULL}; 1049 static _PyArg_Parser _parser = {"s|p:txt2obj", _keywords, 0}; 1050 const char *txt; 1051 int name = 0; 1052 1053 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 1054 &txt, &name)) { 1055 goto exit; 1056 } 1057 return_value = _ssl_txt2obj_impl(module, txt, name); 1058 1059 exit: 1060 return return_value; 1061 } 1062 1063 PyDoc_STRVAR(_ssl_nid2obj__doc__, 1064 "nid2obj($module, nid, /)\n" 1065 "--\n" 1066 "\n" 1067 "Lookup NID, short name, long name and OID of an ASN1_OBJECT by NID."); 1068 1069 #define _SSL_NID2OBJ_METHODDEF \ 1070 {"nid2obj", (PyCFunction)_ssl_nid2obj, METH_O, _ssl_nid2obj__doc__}, 1071 1072 static PyObject * 1073 _ssl_nid2obj_impl(PyObject *module, int nid); 1074 1075 static PyObject * 1076 _ssl_nid2obj(PyObject *module, PyObject *arg) 1077 { 1078 PyObject *return_value = NULL; 1079 int nid; 1080 1081 if (!PyArg_Parse(arg, "i:nid2obj", &nid)) { 1082 goto exit; 1083 } 1084 return_value = _ssl_nid2obj_impl(module, nid); 1085 1086 exit: 1087 return return_value; 1088 } 1089 1090 #if defined(_MSC_VER) 1091 1092 PyDoc_STRVAR(_ssl_enum_certificates__doc__, 1093 "enum_certificates($module, /, store_name)\n" 1094 "--\n" 1095 "\n" 1096 "Retrieve certificates from Windows\' cert store.\n" 1097 "\n" 1098 "store_name may be one of \'CA\', \'ROOT\' or \'MY\'. The system may provide\n" 1099 "more cert storages, too. The function returns a list of (bytes,\n" 1100 "encoding_type, trust) tuples. The encoding_type flag can be interpreted\n" 1101 "with X509_ASN_ENCODING or PKCS_7_ASN_ENCODING. The trust setting is either\n" 1102 "a set of OIDs or the boolean True."); 1103 1104 #define _SSL_ENUM_CERTIFICATES_METHODDEF \ 1105 {"enum_certificates", (PyCFunction)_ssl_enum_certificates, METH_FASTCALL|METH_KEYWORDS, _ssl_enum_certificates__doc__}, 1106 1107 static PyObject * 1108 _ssl_enum_certificates_impl(PyObject *module, const char *store_name); 1109 1110 static PyObject * 1111 _ssl_enum_certificates(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1112 { 1113 PyObject *return_value = NULL; 1114 static const char * const _keywords[] = {"store_name", NULL}; 1115 static _PyArg_Parser _parser = {"s:enum_certificates", _keywords, 0}; 1116 const char *store_name; 1117 1118 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 1119 &store_name)) { 1120 goto exit; 1121 } 1122 return_value = _ssl_enum_certificates_impl(module, store_name); 1123 1124 exit: 1125 return return_value; 1126 } 1127 1128 #endif /* defined(_MSC_VER) */ 1129 1130 #if defined(_MSC_VER) 1131 1132 PyDoc_STRVAR(_ssl_enum_crls__doc__, 1133 "enum_crls($module, /, store_name)\n" 1134 "--\n" 1135 "\n" 1136 "Retrieve CRLs from Windows\' cert store.\n" 1137 "\n" 1138 "store_name may be one of \'CA\', \'ROOT\' or \'MY\'. The system may provide\n" 1139 "more cert storages, too. The function returns a list of (bytes,\n" 1140 "encoding_type) tuples. The encoding_type flag can be interpreted with\n" 1141 "X509_ASN_ENCODING or PKCS_7_ASN_ENCODING."); 1142 1143 #define _SSL_ENUM_CRLS_METHODDEF \ 1144 {"enum_crls", (PyCFunction)_ssl_enum_crls, METH_FASTCALL|METH_KEYWORDS, _ssl_enum_crls__doc__}, 1145 1146 static PyObject * 1147 _ssl_enum_crls_impl(PyObject *module, const char *store_name); 1148 1149 static PyObject * 1150 _ssl_enum_crls(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) 1151 { 1152 PyObject *return_value = NULL; 1153 static const char * const _keywords[] = {"store_name", NULL}; 1154 static _PyArg_Parser _parser = {"s:enum_crls", _keywords, 0}; 1155 const char *store_name; 1156 1157 if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, 1158 &store_name)) { 1159 goto exit; 1160 } 1161 return_value = _ssl_enum_crls_impl(module, store_name); 1162 1163 exit: 1164 return return_value; 1165 } 1166 1167 #endif /* defined(_MSC_VER) */ 1168 1169 #ifndef _SSL__SSLSOCKET_SELECTED_NPN_PROTOCOL_METHODDEF 1170 #define _SSL__SSLSOCKET_SELECTED_NPN_PROTOCOL_METHODDEF 1171 #endif /* !defined(_SSL__SSLSOCKET_SELECTED_NPN_PROTOCOL_METHODDEF) */ 1172 1173 #ifndef _SSL__SSLSOCKET_SELECTED_ALPN_PROTOCOL_METHODDEF 1174 #define _SSL__SSLSOCKET_SELECTED_ALPN_PROTOCOL_METHODDEF 1175 #endif /* !defined(_SSL__SSLSOCKET_SELECTED_ALPN_PROTOCOL_METHODDEF) */ 1176 1177 #ifndef _SSL__SSLCONTEXT_GET_CIPHERS_METHODDEF 1178 #define _SSL__SSLCONTEXT_GET_CIPHERS_METHODDEF 1179 #endif /* !defined(_SSL__SSLCONTEXT_GET_CIPHERS_METHODDEF) */ 1180 1181 #ifndef _SSL__SSLCONTEXT_SET_ECDH_CURVE_METHODDEF 1182 #define _SSL__SSLCONTEXT_SET_ECDH_CURVE_METHODDEF 1183 #endif /* !defined(_SSL__SSLCONTEXT_SET_ECDH_CURVE_METHODDEF) */ 1184 1185 #ifndef _SSL_RAND_EGD_METHODDEF 1186 #define _SSL_RAND_EGD_METHODDEF 1187 #endif /* !defined(_SSL_RAND_EGD_METHODDEF) */ 1188 1189 #ifndef _SSL_ENUM_CERTIFICATES_METHODDEF 1190 #define _SSL_ENUM_CERTIFICATES_METHODDEF 1191 #endif /* !defined(_SSL_ENUM_CERTIFICATES_METHODDEF) */ 1192 1193 #ifndef _SSL_ENUM_CRLS_METHODDEF 1194 #define _SSL_ENUM_CRLS_METHODDEF 1195 #endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */ 1196 /*[clinic end generated code: output=c4e73b70ac3618ba input=a9049054013a1b77]*/ 1197