Both the request and reply to SID_AUTH_ACCOUNTUPGRADEPROOF are completely undocumented. SID_AUTH_ACCOUNTUPGRADE is documented, but has been set to draft pending the publication of this message.
C->S
* (DWORD) Client Token
* (DWORD[5]) Double XSHA-1 password hash (Old password)
* (DWORD[8]) Salt
* (DWORD[8]) Password verifyer (New Password)
And I beleave:
S->C
* (DWORD) Status
With I belevae status are:
0x01 Success
0x00 Failed.
If success, reconnect and login using NLS-SRP, or it logs in automatically, I cant remember.
Failed is.. failed...
I think this is what it is, unless my memory has failed me (happens a lot)
Note: Tiz defunct seince WC3 is no longer in beta.
May be re-implamented when they upgrade D2/SC the the new SRP login.
~-~(HDX)~-~
According to BNLS Protocol Spec:
SID_AUTH_ACCOUNTUPGRADEPROOF (0x58)
-----------------------------------
(22 DWORDs) Data from BNLS_UPGRADEPROOF (0x08).
Response:
---------
(DWORD) Status code.*
(5 DWORDs) Password proof.**
* Valid status codes are:
0x00: Account upgraded!
0x02: Incorrect old password.
** This proves the Battle.net server knows your password. The client should use BNLS_CONFIRMLOGON (0x0a) to verify the proof, and if it is incorrect, terminate the connection.
If the statuscode is nonzero, these 5 DWORDs are zero.
The 5 DWORDs are the M2 value generated by Battle.net's implementation of SRP.
Ah I was mistaken, it's been a little while, sorry. But the C->S end of my post is correct.
~-~(HDX)~-~