Exemple #1
0
    def __init__(self, sock,
                 keyfile, certfile, ca_certs,
                 do_handshake_on_connect, server_side):
        self.sock = sock
        self.engine = _get_ssl_context(keyfile, certfile, ca_certs).createSSLEngine()
        self.engine.setUseClientMode(not server_side)
        self.ssl_handler = SslHandler(self.engine)
        self.already_handshaked = False
        self.do_handshake_on_connect = do_handshake_on_connect

        if self.do_handshake_on_connect and hasattr(self.sock, "connected") and self.sock.connected:
            self.already_handshaked = True
            print "Adding SSL handler to pipeline..."
            self.sock.channel.pipeline().addFirst("ssl", self.ssl_handler)
            self.sock._post_connect()
            self.sock._notify_selectors()
            self.sock._unlatch()

        def handshake_step(x):
            print "Handshaking result", x
            if not hasattr(self.sock, "activity_latch"):  # need a better discriminant
                self.sock._post_connect()
            self.sock._notify_selectors()

        self.ssl_handler.handshakeFuture().addListener(handshake_step)
Exemple #2
0
 def initChannel(self, ch):
     pipeline = ch.pipeline()
     engine = SSLContext.getDefault().createSSLEngine()
     engine.setUseClientMode(True);
     pipeline.addLast("ssl", SslHandler(engine))