code: def do_handshake(self, callback=None):
          
          if self._state != self.S_UNWRAPPED:
              raise RuntimeError('handshake in progress or completed')
          self._sslobj = sslcompat.wrap_bio(self._context, self._incoming, self._outgoing,
                                            self._server_side, self._server_hostname)
          self._state = self.S_DO_HANDSHAKE
          self._handshake_cb = callback
          ssldata, appdata = self.feed_ssldata(b'')
          assert len(appdata) == 0
          return ssldata
docs: Start the SSL handshake. Return a list of ssldata.
  
          The optional *callback* argument can be used to install a callback that
          will be called when the handshake is complete. The callback will be
          called without arguments.