Format: application/octet-stream
1 import enum
2 import socket
3 import sys
4 from _typeshed import StrPath
5 from typing import Any, Callable, ClassVar, Dict, Iterable, List, NamedTuple, Optional, Set, Text, Tuple, Type, Union, overload
6 from typing_extensions import Literal
7
8 _PCTRTT = Tuple[Tuple[str, str], ...]
9 _PCTRTTT = Tuple[_PCTRTT, ...]
10 _PeerCertRetDictType = Dict[str, Union[str, _PCTRTTT, _PCTRTT]]
11 _PeerCertRetType = Union[_PeerCertRetDictType, bytes, None]
12 _EnumRetType = List[Tuple[bytes, str, Union[Set[str], bool]]]
13 _PasswordType = Union[Callable[[], Union[str, bytes]], str, bytes]
14
15 if sys.version_info >= (3, 5):
16 _SC1ArgT = Union[SSLSocket, SSLObject]
17 else:
18 _SC1ArgT = SSLSocket
19 _SrvnmeCbType = Callable[[_SC1ArgT, Optional[str], SSLSocket], Optional[int]]
20
21 class SSLError(OSError):
22 library: str
23 reason: str
24
25 class SSLZeroReturnError(SSLError): ...
26 class SSLWantReadError(SSLError): ...
27 class SSLWantWriteError(SSLError): ...
28 class SSLSyscallError(SSLError): ...
29 class SSLEOFError(SSLError): ...
30
31 if sys.version_info >= (3, 7):
32 class SSLCertVerificationError(SSLError, ValueError):
33 verify_code: int
34 verify_message: str
35 CertificateError = SSLCertVerificationError
36 else:
37 class CertificateError(ValueError): ...
38
39 def wrap_socket(
40 sock: socket.socket,
41 keyfile: Optional[str] = ...,
42 certfile: Optional[str] = ...,
43 server_side: bool = ...,
44 cert_reqs: int = ...,
45 ssl_version: int = ...,
46 ca_certs: Optional[str] = ...,
47 do_handshake_on_connect: bool = ...,
48 suppress_ragged_eofs: bool = ...,
49 ciphers: Optional[str] = ...,
50 ) -> SSLSocket: ...
51 def create_default_context(
52 purpose: Any = ..., *, cafile: Optional[str] = ..., capath: Optional[str] = ..., cadata: Union[Text, bytes, None] = ...
53 ) -> SSLContext: ...
54
55 if sys.version_info >= (3, 7):
56 def _create_unverified_context(
57 protocol: int = ...,
58 *,
59 cert_reqs: int = ...,
60 check_hostname: bool = ...,
61 purpose: Any = ...,
62 certfile: Optional[str] = ...,
63 keyfile: Optional[str] = ...,
64 cafile: Optional[str] = ...,
65 capath: Optional[str] = ...,
66 cadata: Union[Text, bytes, None] = ...,
67 ) -> SSLContext: ...
68
69 else:
70 def _create_unverified_context(
71 protocol: int = ...,
72 *,
73 cert_reqs: Optional[int] = ...,
74 check_hostname: bool = ...,
75 purpose: Any = ...,
76 certfile: Optional[str] = ...,
77 keyfile: Optional[str] = ...,
78 cafile: Optional[str] = ...,
79 capath: Optional[str] = ...,
80 cadata: Union[Text, bytes, None] = ...,
81 ) -> SSLContext: ...
82
83 _create_default_https_context: Callable[..., SSLContext]
84
85 if sys.version_info >= (3, 3):
86 def RAND_bytes(__num: int) -> bytes: ...
87 def RAND_pseudo_bytes(__num: int) -> Tuple[bytes, bool]: ...
88
89 def RAND_status() -> bool: ...
90 def RAND_egd(path: str) -> None: ...
91 def RAND_add(__s: bytes, __entropy: float) -> None: ...
92 def match_hostname(cert: _PeerCertRetType, hostname: str) -> None: ...
93 def cert_time_to_seconds(cert_time: str) -> int: ...
94 def get_server_certificate(addr: Tuple[str, int], ssl_version: int = ..., ca_certs: Optional[str] = ...) -> str: ...
95 def DER_cert_to_PEM_cert(der_cert_bytes: bytes) -> str: ...
96 def PEM_cert_to_DER_cert(pem_cert_string: str) -> bytes: ...
97
98 class DefaultVerifyPaths(NamedTuple):
99 cafile: str
100 capath: str
101 openssl_cafile_env: str
102 openssl_cafile: str
103 openssl_capath_env: str
104 openssl_capath: str
105
106 def get_default_verify_paths() -> DefaultVerifyPaths: ...
107
108 if sys.platform == "win32":
109 def enum_certificates(store_name: str) -> _EnumRetType: ...
110 def enum_crls(store_name: str) -> _EnumRetType: ...
111
112 CERT_NONE: int
113 CERT_OPTIONAL: int
114 CERT_REQUIRED: int
115
116 VERIFY_DEFAULT: int
117 VERIFY_CRL_CHECK_LEAF: int
118 VERIFY_CRL_CHECK_CHAIN: int
119 VERIFY_X509_STRICT: int
120 VERIFY_X509_TRUSTED_FIRST: int
121
122 PROTOCOL_SSLv23: int
123 PROTOCOL_SSLv2: int
124 PROTOCOL_SSLv3: int
125 PROTOCOL_TLSv1: int
126 PROTOCOL_TLSv1_1: int
127 PROTOCOL_TLSv1_2: int
128 PROTOCOL_TLS: int
129 if sys.version_info >= (3, 6):
130 PROTOCOL_TLS_CLIENT: int
131 PROTOCOL_TLS_SERVER: int
132
133 if sys.version_info >= (3, 6):
134 class Options(enum.IntFlag):
135 OP_ALL: int
136 OP_NO_SSLv2: int
137 OP_NO_SSLv3: int
138 OP_NO_TLSv1: int
139 OP_NO_TLSv1_1: int
140 OP_NO_TLSv1_2: int
141 OP_CIPHER_SERVER_PREFERENCE: int
142 OP_SINGLE_DH_USE: int
143 OP_SINGLE_ECDH_USE: int
144 OP_NO_COMPRESSION: int
145 OP_NO_TICKET: int
146 if sys.version_info >= (3, 7):
147 OP_NO_RENEGOTIATION: int
148 OP_NO_TLSv1_3: int
149 if sys.version_info >= (3, 8):
150 OP_ENABLE_MIDDLEBOX_COMPAT: int
151 OP_ALL: Options
152 OP_NO_SSLv2: Options
153 OP_NO_SSLv3: Options
154 OP_NO_TLSv1: Options
155 OP_NO_TLSv1_1: Options
156 OP_NO_TLSv1_2: Options
157 OP_CIPHER_SERVER_PREFERENCE: Options
158 OP_SINGLE_DH_USE: Options
159 OP_SINGLE_ECDH_USE: Options
160 OP_NO_COMPRESSION: Options
161 OP_NO_TICKET: Options
162 if sys.version_info >= (3, 7):
163 OP_NO_RENEGOTIATION: Options
164 OP_NO_TLSv1_3: Options
165 if sys.version_info >= (3, 8):
166 OP_ENABLE_MIDDLEBOX_COMPAT: Options
167 else:
168 OP_ALL: int
169 OP_NO_SSLv2: int
170 OP_NO_SSLv3: int
171 OP_NO_TLSv1: int
172 OP_NO_TLSv1_1: int
173 OP_NO_TLSv1_2: int
174 OP_CIPHER_SERVER_PREFERENCE: int
175 OP_SINGLE_DH_USE: int
176 OP_SINGLE_ECDH_USE: int
177 OP_NO_COMPRESSION: int
178
179 if sys.version_info >= (3, 7):
180 HAS_NEVER_CHECK_COMMON_NAME: bool
181 HAS_SSLv2: bool
182 HAS_SSLv3: bool
183 HAS_TLSv1: bool
184 HAS_TLSv1_1: bool
185 HAS_TLSv1_2: bool
186 HAS_TLSv1_3: bool
187 HAS_ALPN: bool
188 HAS_ECDH: bool
189 HAS_SNI: bool
190 HAS_NPN: bool
191 CHANNEL_BINDING_TYPES: List[str]
192
193 OPENSSL_VERSION: str
194 OPENSSL_VERSION_INFO: Tuple[int, int, int, int, int]
195 OPENSSL_VERSION_NUMBER: int
196
197 ALERT_DESCRIPTION_HANDSHAKE_FAILURE: int
198 ALERT_DESCRIPTION_INTERNAL_ERROR: int
199 ALERT_DESCRIPTION_ACCESS_DENIED: int
200 ALERT_DESCRIPTION_BAD_CERTIFICATE: int
201 ALERT_DESCRIPTION_BAD_CERTIFICATE_HASH_VALUE: int
202 ALERT_DESCRIPTION_BAD_CERTIFICATE_STATUS_RESPONSE: int
203 ALERT_DESCRIPTION_BAD_RECORD_MAC: int
204 ALERT_DESCRIPTION_CERTIFICATE_EXPIRED: int
205 ALERT_DESCRIPTION_CERTIFICATE_REVOKED: int
206 ALERT_DESCRIPTION_CERTIFICATE_UNKNOWN: int
207 ALERT_DESCRIPTION_CERTIFICATE_UNOBTAINABLE: int
208 ALERT_DESCRIPTION_CLOSE_NOTIFY: int
209 ALERT_DESCRIPTION_DECODE_ERROR: int
210 ALERT_DESCRIPTION_DECOMPRESSION_FAILURE: int
211 ALERT_DESCRIPTION_DECRYPT_ERROR: int
212 ALERT_DESCRIPTION_ILLEGAL_PARAMETER: int
213 ALERT_DESCRIPTION_INSUFFICIENT_SECURITY: int
214 ALERT_DESCRIPTION_NO_RENEGOTIATION: int
215 ALERT_DESCRIPTION_PROTOCOL_VERSION: int
216 ALERT_DESCRIPTION_RECORD_OVERFLOW: int
217 ALERT_DESCRIPTION_UNEXPECTED_MESSAGE: int
218 ALERT_DESCRIPTION_UNKNOWN_CA: int
219 ALERT_DESCRIPTION_UNKNOWN_PSK_IDENTITY: int
220 ALERT_DESCRIPTION_UNRECOGNIZED_NAME: int
221 ALERT_DESCRIPTION_UNSUPPORTED_CERTIFICATE: int
222 ALERT_DESCRIPTION_UNSUPPORTED_EXTENSION: int
223 ALERT_DESCRIPTION_USER_CANCELLED: int
224
225 class _ASN1Object(NamedTuple):
226 nid: int
227 shortname: str
228 longname: str
229 oid: str
230
231 if sys.version_info < (3,):
232 class Purpose(_ASN1Object):
233 SERVER_AUTH: ClassVar[Purpose]
234 CLIENT_AUTH: ClassVar[Purpose]
235
236 else:
237 class Purpose(_ASN1Object, enum.Enum):
238 SERVER_AUTH: _ASN1Object
239 CLIENT_AUTH: _ASN1Object
240
241 class SSLSocket(socket.socket):
242 context: SSLContext
243 server_side: bool
244 server_hostname: Optional[str]
245 if sys.version_info >= (3, 6):
246 session: Optional[SSLSession]
247 session_reused: Optional[bool]
248 def read(self, len: int = ..., buffer: Optional[bytearray] = ...) -> bytes: ...
249 def write(self, data: bytes) -> int: ...
250 def do_handshake(self, block: bool = ...) -> None: ... # block is undocumented
251 @overload
252 def getpeercert(self, binary_form: Literal[False] = ...) -> Optional[_PeerCertRetDictType]: ...
253 @overload
254 def getpeercert(self, binary_form: Literal[True]) -> Optional[bytes]: ...
255 @overload
256 def getpeercert(self, binary_form: bool) -> _PeerCertRetType: ...
257 def cipher(self) -> Optional[Tuple[str, str, int]]: ...
258 if sys.version_info >= (3, 5):
259 def shared_ciphers(self) -> Optional[List[Tuple[str, str, int]]]: ...
260 def compression(self) -> Optional[str]: ...
261 def get_channel_binding(self, cb_type: str = ...) -> Optional[bytes]: ...
262 def selected_alpn_protocol(self) -> Optional[str]: ...
263 def selected_npn_protocol(self) -> Optional[str]: ...
264 def accept(self) -> Tuple[SSLSocket, socket._RetAddress]: ...
265 def unwrap(self) -> socket.socket: ...
266 def version(self) -> Optional[str]: ...
267 def pending(self) -> int: ...
268 if sys.version_info >= (3, 8):
269 def verify_client_post_handshake(self) -> None: ...
270
271 if sys.version_info >= (3, 7):
272 class TLSVersion(enum.IntEnum):
273 MINIMUM_SUPPORTED: int
274 MAXIMUM_SUPPORTED: int
275 SSLv3: int
276 TLSv1: int
277 TLSv1_1: int
278 TLSv1_2: int
279 TLSv1_3: int
280
281 class SSLContext:
282 check_hostname: bool
283 if sys.version_info >= (3, 6):
284 options: Options
285 else:
286 options: int
287 if sys.version_info >= (3, 8):
288 post_handshake_auth: bool
289 @property
290 def protocol(self) -> int: ...
291 verify_flags: int
292 verify_mode: int
293 if sys.version_info >= (3, 5):
294 def __init__(self, protocol: int = ...) -> None: ...
295 else:
296 def __init__(self, protocol: int) -> None: ...
297 def cert_store_stats(self) -> Dict[str, int]: ...
298 def load_cert_chain(
299 self, certfile: StrPath, keyfile: Optional[StrPath] = ..., password: Optional[_PasswordType] = ...
300 ) -> None: ...
301 def load_default_certs(self, purpose: Purpose = ...) -> None: ...
302 def load_verify_locations(
303 self, cafile: Optional[StrPath] = ..., capath: Optional[StrPath] = ..., cadata: Union[Text, bytes, None] = ...
304 ) -> None: ...
305 def get_ca_certs(self, binary_form: bool = ...) -> Union[List[_PeerCertRetDictType], List[bytes]]: ...
306 def set_default_verify_paths(self) -> None: ...
307 def set_ciphers(self, __cipherlist: str) -> None: ...
308 def set_alpn_protocols(self, alpn_protocols: Iterable[str]) -> None: ...
309 if sys.version_info >= (3, 7):
310 sni_callback: Optional[Callable[[SSLObject, str, SSLContext], Union[None, int]]]
311 sslobject_class: Type[SSLObject]
312 def set_npn_protocols(self, npn_protocols: Iterable[str]) -> None: ...
313 if sys.version_info >= (3, 7):
314 def set_servername_callback(self, server_name_callback: Optional[_SrvnmeCbType]) -> None: ...
315 else:
316 def set_servername_callback(self, __method: Optional[_SrvnmeCbType]) -> None: ...
317 def load_dh_params(self, __path: str) -> None: ...
318 def set_ecdh_curve(self, __name: str) -> None: ...
319 if sys.version_info >= (3, 6):
320 def wrap_socket(
321 self,
322 sock: socket.socket,
323 server_side: bool = ...,
324 do_handshake_on_connect: bool = ...,
325 suppress_ragged_eofs: bool = ...,
326 server_hostname: Optional[str] = ...,
327 session: Optional[SSLSession] = ...,
328 ) -> SSLSocket: ...
329 else:
330 def wrap_socket(
331 self,
332 sock: socket.socket,
333 server_side: bool = ...,
334 do_handshake_on_connect: bool = ...,
335 suppress_ragged_eofs: bool = ...,
336 server_hostname: Optional[str] = ...,
337 ) -> SSLSocket: ...
338 if sys.version_info >= (3, 6):
339 def wrap_bio(
340 self,
341 incoming: MemoryBIO,
342 outgoing: MemoryBIO,
343 server_side: bool = ...,
344 server_hostname: Optional[str] = ...,
345 session: Optional[SSLSession] = ...,
346 ) -> SSLObject: ...
347 elif sys.version_info >= (3, 5):
348 def wrap_bio(
349 self, incoming: MemoryBIO, outgoing: MemoryBIO, server_side: bool = ..., server_hostname: Optional[str] = ...
350 ) -> SSLObject: ...
351 def session_stats(self) -> Dict[str, int]: ...
352 if sys.version_info >= (3, 7):
353 hostname_checks_common_name: bool
354 maximum_version: TLSVersion
355 minimum_version: TLSVersion
356
357 if sys.version_info >= (3, 5):
358 class SSLObject:
359 context: SSLContext
360 server_side: bool
361 server_hostname: Optional[str]
362 if sys.version_info >= (3, 6):
363 session: Optional[SSLSession]
364 session_reused: bool
365 def read(self, len: int = ..., buffer: Optional[bytearray] = ...) -> bytes: ...
366 def write(self, data: bytes) -> int: ...
367 @overload
368 def getpeercert(self, binary_form: Literal[False] = ...) -> Optional[_PeerCertRetDictType]: ...
369 @overload
370 def getpeercert(self, binary_form: Literal[True]) -> Optional[bytes]: ...
371 @overload
372 def getpeercert(self, binary_form: bool) -> _PeerCertRetType: ...
373 def selected_alpn_protocol(self) -> Optional[str]: ...
374 def selected_npn_protocol(self) -> Optional[str]: ...
375 def cipher(self) -> Optional[Tuple[str, str, int]]: ...
376 def shared_ciphers(self) -> Optional[List[Tuple[str, str, int]]]: ...
377 def compression(self) -> Optional[str]: ...
378 def pending(self) -> int: ...
379 def do_handshake(self) -> None: ...
380 def unwrap(self) -> None: ...
381 def version(self) -> Optional[str]: ...
382 def get_channel_binding(self, cb_type: str = ...) -> Optional[bytes]: ...
383 if sys.version_info >= (3, 8):
384 def verify_client_post_handshake(self) -> None: ...
385 class MemoryBIO:
386 pending: int
387 eof: bool
388 def read(self, __size: int = ...) -> bytes: ...
389 def write(self, __buf: bytes) -> int: ...
390 def write_eof(self) -> None: ...
391
392 if sys.version_info >= (3, 6):
393 class SSLSession:
394 id: bytes
395 time: int
396 timeout: int
397 ticket_lifetime_hint: int
398 has_ticket: bool
399 class VerifyFlags(enum.IntFlag):
400 VERIFY_DEFAULT: int
401 VERIFY_CRL_CHECK_LEAF: int
402 VERIFY_CRL_CHECK_CHAIN: int
403 VERIFY_X509_STRICT: int
404 VERIFY_X509_TRUSTED_FIRST: int
405 class VerifyMode(enum.IntEnum):
406 CERT_NONE: int
407 CERT_OPTIONAL: int
408 CERT_REQUIRED: int
409
410 # TODO below documented in cpython but not in docs.python.org
411 # taken from python 3.4
412 SSL_ERROR_EOF: int
413 SSL_ERROR_INVALID_ERROR_CODE: int
414 SSL_ERROR_SSL: int
415 SSL_ERROR_SYSCALL: int
416 SSL_ERROR_WANT_CONNECT: int
417 SSL_ERROR_WANT_READ: int
418 SSL_ERROR_WANT_WRITE: int
419 SSL_ERROR_WANT_X509_LOOKUP: int
420 SSL_ERROR_ZERO_RETURN: int
421
422 def get_protocol_name(protocol_code: int) -> str: ...
423
424 AF_INET: int
425 PEM_FOOTER: str
426 PEM_HEADER: str
427 SOCK_STREAM: int
428 SOL_SOCKET: int
429 SO_TYPE: int
430