From ebcf72fb10035e2b449da547cbf1f38f1e2e634e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Sun, 30 Jun 2019 16:30:26 +0200 Subject: [PATCH] Fix Feedback State Encryption --- gui/src/streamsession.cpp | 6 +++--- lib/src/ctrl.c | 2 +- lib/src/takion.c | 7 +++++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gui/src/streamsession.cpp b/gui/src/streamsession.cpp index 34442f2..3be2589 100644 --- a/gui/src/streamsession.cpp +++ b/gui/src/streamsession.cpp @@ -129,9 +129,9 @@ void StreamSession::SendFeedbackState() return; ChiakiControllerState state; state.left_x = static_cast(gamepad->axisLeftX() * 0x7fff); - state.left_y = static_cast(gamepad->axisLeftX() * 0x7fff); - state.right_x = static_cast(gamepad->axisLeftX() * 0x7fff); - state.right_y = static_cast(gamepad->axisLeftX() * 0x7fff); + state.left_y = static_cast(gamepad->axisLeftY() * 0x7fff); + state.right_x = static_cast(gamepad->axisRightX() * 0x7fff); + state.right_y = static_cast(gamepad->axisRightY() * 0x7fff); chiaki_session_set_controller_state(&session, &state); } diff --git a/lib/src/ctrl.c b/lib/src/ctrl.c index 3eac979..b7c9568 100644 --- a/lib/src/ctrl.c +++ b/lib/src/ctrl.c @@ -229,7 +229,7 @@ static void ctrl_message_received_heartbeat_req(ChiakiCtrl *ctrl, uint8_t *paylo if(payload_size != 0) CHIAKI_LOGW(&ctrl->session->log, "Received Heartbeat request with non-empty payload\n"); - CHIAKI_LOGD(&ctrl->session->log, "Received Ctrl Heartbeat\n"); + CHIAKI_LOGI(&ctrl->session->log, "Received Ctrl Heartbeat, sending reply\n"); ctrl_message_send(ctrl, CTRL_MESSAGE_TYPE_HEARTBEAT_REP, NULL, 0); } diff --git a/lib/src/takion.c b/lib/src/takion.c index 47e2cc4..ee27c82 100644 --- a/lib/src/takion.c +++ b/lib/src/takion.c @@ -418,16 +418,19 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_feedback_state(ChiakiTakion *ta *((uint32_t *)(buf + 8)) = 0; // gmac chiaki_feedback_state_format(buf + 0xc, feedback_state); + //CHIAKI_LOGD(takion->log, "Takion sending Feedback State:\n"); + //chiaki_log_hexdump(takion->log, CHIAKI_LOG_DEBUG, buf, sizeof(buf)); + ChiakiErrorCode err = chiaki_mutex_lock(&takion->gkcrypt_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; size_t key_pos; - err = chiaki_takion_crypt_advance_key_pos(takion, CHIAKI_FEEDBACK_STATE_BUF_SIZE, &key_pos); + err = chiaki_takion_crypt_advance_key_pos(takion, CHIAKI_FEEDBACK_STATE_BUF_SIZE + CHIAKI_GKCRYPT_BLOCK_SIZE, &key_pos); if(err != CHIAKI_ERR_SUCCESS) goto beach; - err = chiaki_gkcrypt_encrypt(takion->gkcrypt_local, key_pos, buf + 0xc, CHIAKI_FEEDBACK_STATE_BUF_SIZE); + err = chiaki_gkcrypt_encrypt(takion->gkcrypt_local, key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, buf + 0xc, CHIAKI_FEEDBACK_STATE_BUF_SIZE); if(err != CHIAKI_ERR_SUCCESS) goto beach;