Conversation
1fdc013 to
65c4dc0
Compare
|
Is this related to be able to login into Microsoft account? like in Minecraft Bedrock? |
Yes that is the purpose, although it is not yet complete |
|
Thank you for working on this! Can't wait to see a working product |
Somehow while pulling this into the default branch locally, for debugging purposes, I had a duplicated type definition error and applied this patchdiff --git a/include/xuser.idl b/include/xuser.idl
index 2f7292b..877c59c 100644
--- a/include/xuser.idl
+++ b/include/xuser.idl
@@ -37,7 +37,6 @@ typedef enum XUserState XUserState;
typedef enum XUserPlatformOperationResult XUserPlatformOperationResult;
typedef enum XUserPlatformSpopOperationResult XUserPlatformSpopOperationResult;
-typedef struct APP_LOCAL_DEVICE_ID APP_LOCAL_DEVICE_ID;
typedef struct XUserDeviceAssociationChange XUserDeviceAssociationChange;
typedef struct XUserGetTokenAndSignatureData XUserGetTokenAndSignatureData;
typedef struct XUserGetTokenAndSignatureHttpHeader XUserGetTokenAndSignatureHttpHeader;
@@ -53,6 +52,20 @@ typedef void (__stdcall *XUserPlatformRemoteConnectShowPromptEventHandler)( PVOI
typedef void (__stdcall *XUserPlatformRemoteConnectClosePromptEventHandler)( PVOID context, UINT32 userIdentifier, XUserPlatformOperation operation );
typedef void (__stdcall *XUserPlatformSpopPromptEventHandler)( PVOID context, UINT32 userIdentifier, XUserPlatformOperation operation, LPCSTR modernGamertag, LPCSTR modernGamertagSuffix );
+cpp_quote("#if 0")
+typedef unsigned __int64 uint64_t;
+typedef __int64 int64_t;
+typedef unsigned __int3264 size_t;
+typedef unsigned int uint32_t;
+typedef int int32_t;
+typedef unsigned short uint16_t;
+typedef unsigned char uint8_t;
+typedef boolean bool;
+typedef struct APP_LOCAL_DEVICE_ID
+{
+ BYTE value[32];
+} APP_LOCAL_DEVICE_ID;
+cpp_quote("#endif")
enum XUserAddOptions
{
@@ -170,11 +183,6 @@ enum XUserPlatformSpopOperationResult
XUserPlatformSpopOperationResult_Canceled = 3
};
-struct APP_LOCAL_DEVICE_ID
-{
- BYTE value[32];
-};
-
struct XUserLocalId {
UINT64 value;
};
|
Thanks, I'm aware of this issue, I just haven't got round to pushing my changes yet. To elaborate more on the auth hold up, the Although I couldn't say for sure without further testing, as I am not super familiar with other projects, Minecraft/PlayFabApi may not verify the message integrity, which may allow a semi-stub of The last part might be completely incorrect and if you know more please let me know 🙂 |
I hope so (and understood this from your original post), but I almost had the conclusion that I have a much bigger problem that I do not have stub idl files of the unknown interfaces that might or not be other xbox live libraries. My general Idea is to intercept the XCurl http client, if it finds the fake signature and remove that from the url. Since I would expect that a provied signature would be validated. Based on examples on msdocs, it reads like signature might be optional and could be NULL, however this depends on how the code interacts with the result. I also read all cross platform games needs to somehow lift such a requirement, but anyhow ms might be able to apply this only on supported platforms.
I wonder did the game call this XUserGetTokenAndSignature function on your end? Could failed for me, since I yet have to figure out how you got the authenticated user credentials for injection.
Yes I let you know once I have more time with experimenting with winegdk, till now no news. |
This PR adds:
Minimal XLauncher implementation(moved to XLauncher Implementation #37)windows.web.dll[HKLM\Software\Wine\WineGDK]"RefreshToken"The
XUserGetTokenAndSignaturemethods seem to be the main roadblock to full online services, token requesting can be adapted from what is here already, but signature generation requires the appropriate keys to be provisioned tocrypt32during package installation, which will likely require more work with XStoreCurrently the oauth
client_id/MSAAppIdhas to be manually set asMicrosoftGame.configparsing is not here yet.