protonscr

Handle ALG_ID_ECDH_P384 in BCryptGenerateKeyPair to make Anno 1800 Multiplayer work

wineopen
ValveSoftware/wine#172 · opened 2022-12-31 by chrisbmr · updated 2023-01-03 · 8 comments · github
Cchrisbmr 2022-12-31 github

https://github.com/ValveSoftware/wine/blob/492470267af486cb24ad0deaa028168eb94618a4/dlls/bcrypt/bcrypt_main.c#L1713

Anno 1800 Multiplayer uses ALG_ID_ECDH_P384 in BCryptGenerateKeyPair when accepting an invite to a Multiplayer Game via Ubisoft Connect and fails with connection error LR05 if it is not handled.

Handling this case in the function seems to make it work (can start and see other player's actions in the game), although I'm not sure if anything else is required here or if the case was just forgotten.

MMaxXor 2023-01-01 github

I'm very interested in a solution to make Anno 1800 multiplayer work. However I'm not sure if I can follow you. Your linked commit with the ECDH_P384 case handled seems to be included since Proton 7.0. However using Proton 7.0-5 doesn't seem to work with Anno 1800 multiplayer. What exactly am I missing here?

SSubwaytime 2023-01-01 github

@chrisbmr Would be great if you could open a PR with your solution to make it work and how to replicate it. It probably needs more testing, but i would love it actually test this, before it ends up in a proton version :thinking:

Cchrisbmr 2023-01-01 github

I'm very interested in a solution to make Anno 1800 multiplayer work. However I'm not sure if I can follow you. Your linked commit with the ECDH_P384 case handled seems to be included since Proton 7.0. However using Proton 7.0-5 doesn't seem to work with Anno 1800 multiplayer. What exactly am I missing here?

It handles ECDSA_P384 and ECDH_P256 but not ECDH_P384.

MMaxXor 2023-01-01 github

It handles ECD_SA__P384 and ECDH_P_256_ but not ECDH_P384.

Thanks, I'm blind.

Cchrisbmr 2023-01-01 github

@chrisbmr Would be great if you could open a PR with your solution to make it work and how to replicate it. It probably needs more testing, but i would love it actually test this, before it ends up in a proton version thinking

Well. Someone who actually knows the bcrypt code needs to check this and see whether it is safe and whether other places in the code need to be modified, too...

MMaxXor 2023-01-01 github

My layman's assumption would be: the case for ALG_ID_ECDH_P256 is handled in a similar way, so it would be enough to add ALG_ID_ECDH_P384.

KKnogle 2023-01-02 github

Can you go for a PR, in order to reproduce your solution until it's in?
Unfortunately I wasn't able to get it working this way. At least when searching for a random session.

Ssvdragster 2023-01-03 github

Anno 2070 has a somewhat similar problem. The connection to a lobby is working fine, however when starting the game all players will be disconnected because of a connection error. Could this also solve the issue in Anno 2070?

Proton versions