refactor decryption out of Protocol::_handle and into Client