gevent._ssl2 --python 2.7.8及更低版本上套接字对象的SSL包装器

Python 2.7.8及更低版本上套接字对象的SSL包装器。

有关文档,请参阅 ssl 模块手册。

该模块实现了协同的SSL套接字包装。

1.3 版后已移除: 此模块不安全。对只有这个级别的SSL的Python版本的支持将在gevent 1.4中删除。

CertificateError

alias of ssl.SSLCertVerificationError

exception SSLCertVerificationError

基类:ssl.SSLError, ValueError

无法验证证书。

exception SSLEOFError

基类:ssl.SSLError

SSL/TLS连接突然终止。

exception SSLError

基类:OSError

SSL实现中发生错误。

exception SSLSyscallError

基类:ssl.SSLError

尝试SSL操作时出现系统错误。

exception SSLWantReadError

基类:ssl.SSLError

在完成请求的操作之前,非阻塞的SSL套接字需要读取更多的数据。

exception SSLWantWriteError

基类:ssl.SSLError

非阻塞的SSL套接字需要在完成请求的操作之前写入更多数据。

exception SSLZeroReturnError

基类:ssl.SSLError

ssl/tls会话完全关闭。

socket_error

alias of OSError

class AlertDescription(value)

基类:enum.IntEnum

枚举。

class DefaultVerifyPaths(cafile, capath, openssl_cafile_env, openssl_cafile, openssl_capath_env, openssl_capath)

基类:tuple

创建defaultverifypaths的新实例(cafile、capath、openssl-cafile-env、openssl-cafile、openssl-capath-env、openssl-capath)

property cafile

字段编号0的别名

property capath

字段编号1的别名

property openssl_cafile

字段编号3的别名

property openssl_cafile_env

字段编号2的别名

property openssl_capath

字段5的别名

property openssl_capath_env

字段编号4的别名

class Options(value)

基类:enum.IntFlag

枚举。

class Purpose(value)

基类:ssl._ASN1Object, enum.Enum

带有X509v3扩展密钥用法对象的SSLContext用途标志

创建_ASN1Object(NID,短名,长名,OID)的新实例

class SSLContext(protocol=_SSLMethod.PROTOCOL_TLS, *args, **kwargs)[源代码]

基类:_ssl._SSLContext

sslcontext包含各种与ssl相关的配置选项和数据,例如证书和可能的私钥。

sslobject_class

alias of ssl.SSLObject

sslsocket_class

alias of ssl.SSLSocket

class SSLErrorNumber(value)

基类:enum.IntEnum

枚举。

class SSLObject(*args, **kwargs)[源代码]

基类:object

这个类在一个低级的ssl对象上实现了一个由openssl实现的接口。此对象捕获SSL连接的状态,但不提供任何网络IO本身。IO需要通过单独的“bio”对象来执行,这些对象是OpenSSL的IO抽象层。

此类没有公共构造函数。实例由返回 SSLContext.wrap_bio . 此类通常由框架作者使用,他们希望通过内存缓冲区为SSL实现异步IO。

与…相比 SSLSocket ,此对象缺少以下功能:

  • 任何形式的网络IO,包括 recvsend .

  • 这个 do_handshake_on_connectsuppress_ragged_eofs 机械。

cipher()[源代码]

将当前选定的密码作为3元组返回 (name, ssl_version, secret_bits) .

compression()[源代码]

返回当前使用的压缩算法,或者 None 如果压缩没有经过协商或某个对等机不支持。

do_handshake()[源代码]

启动SSL/TLS握手。

get_channel_binding(cb_type='tls-unique')[源代码]

获取当前连接的通道绑定数据。如果请求,则引发ValueError cb_type 不支持。如果数据不可用(例如握手前),返回数据字节或无。

getpeercert(binary_form=False)[源代码]

返回由SSL通道另一端提供的证书中数据的格式化版本。

如果没有提供证书,则返回“无”;如果提供了证书,但没有验证,则返回“无”。

pending()[源代码]

返回可以立即读取的字节数。

read(len=1024, buffer=None)[源代码]

从ssl对象读取最多“len”个字节并返回它们。

如果提供了“buffer”,则读取此缓冲区并返回读取的字节数。

selected_alpn_protocol()[源代码]

以字符串形式返回当前选定的ALPN协议,或者 None 如果没有协商下一个协议,或者其中一个对等方不支持ALPN。

selected_npn_protocol()[源代码]

以字符串形式返回当前选定的NPN协议,或者 None 如果没有协商下一个协议,或者其中一个对等方不支持NPN。

shared_ciphers()[源代码]

返回客户机在握手过程中共享的密码列表,如果这不是有效的服务器连接,则返回“无”。

unwrap()[源代码]

启动SSL关闭握手。

version()[源代码]

返回一个字符串,用于标识当前SSL通道使用的协议版本。

write(data)[源代码]

将“data”写入ssl对象并返回写入的字节数。

“data”参数必须支持缓冲区接口。

property context

当前正在使用的sslcontext。

property server_hostname

当前设置的服务器主机名(用于sni),或 None 如果没有设置服务器主机。

property server_side

这是否是服务器端套接字。

property session

客户端套接字的SSLSession。

property session_reused

在握手过程中是否重复使用客户端会话?

class SSLSocket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=VerifyMode.CERT_NONE, ssl_version=_SSLMethod.PROTOCOL_TLS, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True, ciphers=None)[源代码]

基类:gevent._socket2.socket

Gevent ssl.SSLSocket 对于小于2.7.9的 Python 。

accept()[源代码]

接受来自远程客户机的新连接,并返回一个包含用服务器端SSL通道包装的新连接的元组,以及远程客户机的地址。

connect(addr)[源代码]

连接到远程地址,然后将连接包装在SSL通道中。

do_handshake()[源代码]

执行TLS/SSL握手。

getpeercert(binary_form=False)[源代码]

返回由SSL通道另一端提供的证书中数据的格式化版本。如果没有提供证书,则返回“无”;如果提供了证书,但没有验证,则返回“无”。

makefile(mode='r', bufsize=- 1)[源代码]

生成并返回一个与SSL连接一起工作的类似文件的对象。只需使用来自插座模块的代码。

read(len=1024)[源代码]

读取最多len字节并返回它们。返回EOF上的零长度字符串。

recv(buffersize[, flags]) data[源代码]

从套接字接收最大缓冲区大小的字节。有关可选标志参数,请参阅Unix手册。当没有数据可用时,挡路会一直使用,直到至少有一个字节可用,或者直到远程端关闭。当远端关闭并读取所有数据时,返回空字符串。

recv_into(buffer[, nbytes[, flags]]) nbytes_read[源代码]

recv()的一个版本,它将其数据存储到缓冲区中,而不是创建新字符串。从套接字接收最大缓冲区大小的字节。如果未指定BufferSize(或0),则最多接收给定缓冲区中可用的大小。

有关标志的文档,请参见recv()。

recvfrom(buffersize[, flags]) -> (data, address info)[源代码]

如recv(Buffersize,flag),但也返回发送者的地址信息。

recvfrom_into(buffer[, nbytes[, flags]]) -> (nbytes, address info)[源代码]

LIKE recv_into(缓冲区 [,n字节[,标志] ]),而且还返回发件人的地址信息。

send(data[, flags]) count[源代码]

将数据字符串发送到套接字。有关可选标志参数,请参阅Unix手册。返回发送的字节数;如果网络繁忙,该值可能小于len(数据)。

sendall(data[, flags])[源代码]

将数据字符串发送到套接字。有关可选标志参数,请参阅Unix手册。该函数重复调用send(),直到发送完所有数据。如果发生错误,就不可能知道已经发送了多少数据。

sendto(data, [flags, ]address) count[源代码]

与SEND(数据、标志)类似,但允许指定目的地址。对于IP套接字,地址是一对(主机地址、端口)。

shutdown(flag)[源代码]

关闭插座的读取端(FLAG==SHUT_RD)、插座的写入端(FLAG==SHUT_WR)或两端(FLAG==SHUT_RDWR)。

write(data)[源代码]

将数据写入底层的SSL通道。返回实际传输的数据字节数。

class TLSVersion(value)[源代码]

基类:enum.IntEnum

枚举。

class VerifyFlags(value)

基类:enum.IntFlag

枚举。

class VerifyMode(value)

基类:enum.IntEnum

枚举。

DER_cert_to_PEM_cert(der_cert_bytes)[源代码]

获取二进制DER格式的证书,并将其PEM版本作为字符串返回。

PEM_cert_to_DER_cert(pem_cert_string)[源代码]

采用ASCIIPEM格式的证书,并以字节序列的形式返回其DER编码版本。

RAND_add(string, entropy, /)

将字符串混合到openssl prng状态。

熵(float)是字符串中熵的下限。见RFC 4086。

RAND_bytes(n, /)

生成n个加密的强伪随机字节。

RAND_pseudo_bytes(n, /)

生成n个伪随机字节。

返回一对(字节,是加密的)。如果生成的字节具有密码学强度,则“加密”为“真”。

RAND_status()

如果openssl prng的种子中有足够的数据,则返回1;否则返回0。

在使用ssl()函数之前,必须在某些平台上用rand_add()为prng种子。

cert_time_to_seconds(cert_time)[源代码]

返回从epoch开始的时间(以秒为单位),给定表示中证书的“notbefore”或“notafter”日期的时间线。 "%b %d %H:%M:%S %Y %Z" strptime格式(C语言环境)。

“NotBefore”或“NotAfter”日期必须使用UTC(RFC 5280)。

月份是以下之一:1-2-3-4-5-6-7-8-9-10-11-12应将UTC指定为GMT(请参阅asn1_time_print())

create_connection(address, timeout=<object object>, source_address=None)[源代码]

连接到 地址 然后返回socket对象。

方便功能。连接到 地址 (2元组) (host, port) )然后返回socket对象。通过选项 超时 参数将在尝试连接之前设置套接字实例的超时。如果没有 超时 如果提供,则返回全局默认超时设置 getdefaulttimeout() 使用。如果 source_address 如果已设置,则必须是(主机、端口)的元组,以便在进行连接之前将套接字绑定为源地址。“”或端口0的主机通知操作系统使用默认值。

create_default_context(purpose=Purpose.SERVER_AUTH, *, cafile=None, capath=None, cadata=None)[源代码]

使用默认设置创建sslcontext对象。

注意:协议和设置可能随时更改,无需事先

折旧。这些值表示最大兼容性和安全性之间的公平平衡。

get_default_verify_paths()[源代码]

将路径返回到默认的cafile和capath。

get_server_certificate(addr, ssl_version=_SSLMethod.PROTOCOL_TLS, ca_certs=None)[源代码]

从指定地址的服务器检索证书,并将其作为PEM编码字符串返回。如果指定了“ca-certs”,请根据它验证服务器证书。如果指定了'ssl_version',请在连接尝试中使用它。

match_hostname(cert, hostname)[源代码]

验证 cert (在sslsocket.getpeercert()返回的解码格式中)与 主机名 . 遵循RFC 2818和RFC 6125规则。

如果hostname是有效的ipaddress字符串,则函数匹配IP地址而不是dnsnames。所有平台都支持IPv4地址。在支持IPv6的平台上支持IPv6地址(af-inet6和inet-pton)。

失败时引发certificateerror。如果成功,函数将不返回任何内容。

sslwrap_simple(sock, keyfile=None, certfile=None)[源代码]

旧socket.ssl函数的替换。专为与python 2.5及更早版本兼容而设计。将在python 3.0中消失。

wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=VerifyMode.CERT_NONE, ssl_version=_SSLMethod.PROTOCOL_TLS, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True, ciphers=None)[源代码]

创建新的 SSLSocket 实例。

Next page: gevent.select --等待I/O完成