Transport Layer:Transmission Control Protocol (TCP)
Application Layer:BNLS Messages (BNLS)
Message Id:0x0B
Direction:Client to Server
Used By:Starcraft Original, Starcraft Broodwar
Starcraft Shareware, Starcraft Japanese
Diablo Retail, Diablo Shareware
Diablo II, Diablo II Lord of Destruction
Warcraft II BNE
Message Format:
(does not include protocol header)
(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 Battle.net 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: Anonymous



Flags 0x00 is for a single hash request.