an2linuxserver.py 文件源码

python
阅读 23 收藏 0 点赞 0 评论 0

项目:an2linuxserver 作者: rootkiwi 项目源码 文件源码
def do_handshake(self):
        # incoming <- ClientHello
        client_hello_size = struct.unpack('>I', recvall(self.socket, 4))[0]
        client_hello = recvall(self.socket, client_hello_size)
        self.incoming.write(client_hello)

        # ServerHello..ServerHelloDone -> outgoing
        try:
            self.tls_bio.do_handshake()
        except ssl.SSLWantReadError:
            server_hello = self.outgoing.read()
            server_hello_size = struct.pack('>I', len(server_hello))
            self.socket.sendall(server_hello_size)
            self.socket.sendall(server_hello)

        # incoming <- [client]Certificate*..ClientKeyExchange..Finished
        client_keyexchange_size = struct.unpack('>I', recvall(self.socket, 4))[0]
        client_keyexchange = recvall(self.socket, client_keyexchange_size)
        self.incoming.write(client_keyexchange)

        # ChangeCipherSpec..Finished -> outgoing
        self.tls_bio.do_handshake()
        server_change_cipher_spec = self.outgoing.read()
        server_change_cipher_spec_size = struct.pack('>I', len(server_change_cipher_spec))
        self.socket.sendall(server_change_cipher_spec_size)
        self.socket.sendall(server_change_cipher_spec)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号