Message Id:0x0B
Direction:Client to Server
Used By:Diablo II, Diablo II Lord of Destruction
Diablo Retail, Diablo Shareware
Starcraft Japanese, Starcraft Broodwar
Starcraft Shareware, Starcraft Original
Warcraft II BNE

(UINT32) Size of Data
(UINT32) Flags
(VOID) Data to be hashed

(UINT32) Client Key (Double Hash Only)
(UINT32) Server Key (Double Hash Only)
(UINT32) Cookie (Cookie Hash Only)


This message will calculate the hash of the given data. The hashing algorithm used is the standard hashing algorithm also known as "Broken SHA-1"

* For clarity, the optional fields come after the VOID and not before.

The flags may be zero, or any bitwise combination of the following flags:

0x01: Unused

This flag has no effect.

0x02: Double Hash

If this flag is present, the server will calculate a double hash. First it will calculate the hash of the data. Then it will prepend the client key and the server key to the resulting hash, and calculate the hash of the result. If this flag is present, the client key and server key UINT32s must be specified in the request after the data. This may be used to calculate password hashes for the "Old Logon System".

0x04: Cookie Hash

If this flag is present, a cookie UINT32 is specified in the request. This is an application-defined value that is echoed back to the client in the response.

| Edited:

Flags 0x00 is for a single hash request.