3.5.4.4.1 NetrServerReqChallenge (Opnum 4)

The NetrServerReqChallenge method SHOULD<172> receive a client challenge and return a server challenge (SC).

 NTSTATUS NetrServerReqChallenge(
   [in, unique, string] LOGONSRV_HANDLE PrimaryName,
   [in, string] wchar_t* ComputerName,
   [in] PNETLOGON_CREDENTIAL ClientChallenge,
   [out] PNETLOGON_CREDENTIAL ServerChallenge
 );

PrimaryName: The custom binding handle, as defined in section 3.5.4.1.

ComputerName: A Unicode string that contains the NetBIOS name of the client computer calling this method.

ClientChallenge: A pointer to a NETLOGON_CREDENTIAL structure, as specified in section 2.2.1.3.4, that contains the client challenge.

ServerChallenge: A pointer to a NETLOGON_CREDENTIAL structure, as specified in section 2.2.1.3.4, that contains the server challenge response.

Return Values: The method returns 0x00000000 on success; otherwise, it returns a nonzero error code.

On receiving this call, the server MUST perform the following validation steps:

  • Apply Common Error Processing Rule A, specified in section 3.

  • Apply Common Error Processing Rule B, specified in section 3, to  the PrimaryName parameter.

The server MUST generate 64 bits of random data as the server challenge to be returned in the ServerChallenge parameter. The ServerChallenge is saved in the ChallengeTable, along with the client name passed in the ComputerName parameter and the client challenge passed in the ClientChallenge parameter.