def communicate(self, request): """Process SSH key signing request""" # pylint: disable=no-self-use packet = SSHPacket(request) request = packet.get_string() packet.check_end() packet = SSHPacket(request) version = packet.get_byte() _ = packet.get_uint32() # sock_fd data = packet.get_string() packet.check_end() if version == 0: return b'', b'' elif version == 1: return b'', b'invalid request' else: skey = asyncssh.load_keypairs('skey')[0] sig = skey.sign(data) return String(Byte(KEYSIGN_VERSION) + String(sig)), b''
def process_packet(self, data): """Process an incoming packet""" packet = SSHPacket(data) pkttype = packet.get_byte() if pkttype == MSG_USERAUTH_REQUEST: _ = packet.get_string() # username _ = packet.get_string() # service method = packet.get_string() if self._auth: self._auth.cancel() if self._override_gss_mech: self.send_packet(MSG_USERAUTH_GSSAPI_RESPONSE, String('mismatch')) elif self._override_pk_ok: self.send_packet(MSG_USERAUTH_PK_OK, String(''), String('')) else: self._auth = lookup_server_auth(self, 'user', method, packet) else: self._auth.process_packet(pkttype, None, packet)
def process_packet(self, data): """Process an incoming packet""" packet = SSHPacket(data) pkttype = packet.get_byte() if pkttype == MSG_USERAUTH_REQUEST: _ = packet.get_string() # username _ = packet.get_string() # service method = packet.get_string() if self._auth: self._auth.cancel() if self._override_pk_ok: self.send_packet(Byte(MSG_USERAUTH_PK_OK), String(''), String('')) else: self._auth = lookup_server_auth(self, 'user', method, packet) else: try: self._auth.process_packet(pkttype, packet) except DisconnectError as exc: self.connection_lost(exc)