From eeb28c7c8ad313c40a4b456292f85b9e32aa30d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Thu, 15 Aug 2019 23:09:46 +0200 Subject: [PATCH] Auto-generate Did --- gui/include/streamsession.h | 1 - gui/src/main.cpp | 7 +------ gui/src/streamsession.cpp | 6 ------ lib/include/chiaki/session.h | 1 - lib/src/session.c | 7 ++++++- 5 files changed, 7 insertions(+), 15 deletions(-) diff --git a/gui/include/streamsession.h b/gui/include/streamsession.h index ea8134b..bd8bdc3 100644 --- a/gui/include/streamsession.h +++ b/gui/include/streamsession.h @@ -48,7 +48,6 @@ struct StreamSessionConnectInfo QString host; QString regist_key; QString morning; - QString did; ChiakiConnectVideoProfile video_profile; }; diff --git a/gui/src/main.cpp b/gui/src/main.cpp index 6b7199e..acbaef1 100644 --- a/gui/src/main.cpp +++ b/gui/src/main.cpp @@ -75,10 +75,6 @@ int main(int argc, char *argv[]) QCommandLineOption morning_option("morning", "", "morning"); parser.addOption(morning_option); - QCommandLineOption did_option("did", "", "did"); - parser.addOption(did_option); - - parser.process(app); QStringList args = parser.positionalArguments(); @@ -100,13 +96,12 @@ int main(int argc, char *argv[]) connect_info.host = host; connect_info.regist_key = parser.value(regist_key_option); connect_info.morning = parser.value(morning_option); - connect_info.did = parser.value(did_option); chiaki_connect_video_profile_preset(&connect_info.video_profile, CHIAKI_VIDEO_RESOLUTION_PRESET_720p, CHIAKI_VIDEO_FPS_PRESET_30); - if(connect_info.regist_key.isEmpty() || connect_info.morning.isEmpty() || connect_info.did.isEmpty()) + if(connect_info.regist_key.isEmpty() || connect_info.morning.isEmpty()) parser.showHelp(1); return RunStream(app, connect_info); diff --git a/gui/src/streamsession.cpp b/gui/src/streamsession.cpp index 29a54eb..451eb15 100644 --- a/gui/src/streamsession.cpp +++ b/gui/src/streamsession.cpp @@ -64,12 +64,6 @@ StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObje if(err != CHIAKI_ERR_SUCCESS || morning_size != sizeof(chiaki_connect_info.morning)) throw ChiakiException("Morning invalid"); - size_t did_size = sizeof(chiaki_connect_info.did); - QByteArray did_str = connect_info.did.toUtf8(); - err = chiaki_base64_decode(did_str.constData(), did_str.length(), chiaki_connect_info.did, &did_size); - if(err != CHIAKI_ERR_SUCCESS || did_size != sizeof(chiaki_connect_info.did)) - throw ChiakiException("Did invalid"); - memset(&keyboard_state, 0, sizeof(keyboard_state)); err = chiaki_session_init(&session, &chiaki_connect_info, log.GetChiakiLog()); diff --git a/lib/include/chiaki/session.h b/lib/include/chiaki/session.h index 3ecad5e..0850710 100644 --- a/lib/include/chiaki/session.h +++ b/lib/include/chiaki/session.h @@ -72,7 +72,6 @@ typedef struct chiaki_connect_info_t const char *host; // null terminated char regist_key[CHIAKI_SESSION_AUTH_SIZE]; // must be completely filled (pad with \0) uint8_t morning[0x10]; - uint8_t did[CHIAKI_RP_DID_SIZE]; ChiakiConnectVideoProfile video_profile; } ChiakiConnectInfo; diff --git a/lib/src/session.c b/lib/src/session.c index 5149e04..60a34d5 100644 --- a/lib/src/session.c +++ b/lib/src/session.c @@ -155,7 +155,12 @@ CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, Chiaki memcpy(session->connect_info.regist_key, connect_info->regist_key, sizeof(session->connect_info.regist_key)); memcpy(session->connect_info.morning, connect_info->morning, sizeof(session->connect_info.morning)); - memcpy(session->connect_info.did, connect_info->did, sizeof(session->connect_info.did)); + + const uint8_t did_prefix[] = { 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x00, 0x80 }; + const uint8_t did_suffix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + memcpy(session->connect_info.did, did_prefix, sizeof(did_prefix)); + chiaki_random_bytes_crypt(session->connect_info.did + sizeof(did_prefix), sizeof(session->connect_info.did) - sizeof(did_prefix) - sizeof(did_suffix)); + memcpy(session->connect_info.did + sizeof(session->connect_info.did) - sizeof(did_suffix), did_suffix, sizeof(did_suffix)); session->connect_info.video_profile = connect_info->video_profile;