3.2.5.5 Processing Client Platform Challenge Responses

When a server receives the Client Platform Challenge Response (section 2.2.2.5) message, it decrypts the EncryptedPlatformChallengeResponse and EncryptedHWID fields in the message using the license encryption key generated while processing earlier licensing messages.

The server MUST then generate the MAC checksum over the decrypted Platform Challenge Response Data (section 2.2.2.5.1) packet and decrypted Client Hardware Identification (section 2.2.2.3.1) packet, and MUST compare it with the received MAC checksum to verify the data integrity. Handling invalid MACs is specified in section 3.2.5.9.

The following cases can result:

Case 1: A Client License Information (section 2.2.2.3) message was received earlier by the server, and the CAL (LicenseInfo BLOB) in the message required an upgrade.

If the license server cannot be contacted to upgrade the license, and the old license is still valid, the terminal server sends the Server Upgrade License (section 2.2.2.6) message and returns the old license to the client.

Case 2: If either of the following conditions occurs:

  • The CAL (LicenseInfo BLOB) received in the Client License Information message required an upgrade, and the license server cannot be contacted to upgrade the CAL and the old license is not valid.

Or:

  • A Client New License Request (section 2.2.2.2) message was received earlier, and the license server cannot be contacted to issue a new CAL.

In this case, if the server's grace period has not been exceeded, the server responds as if the client presented a valid license by sending a Licensing Error Message (section 2.2.2.8) with an error code of STATUS_VALID_CLIENT (0x00000007) and a state transition code of ST_NO_TRANSITION (0x00000002), ending the licensing protocol.

If the server's grace period has been exceeded, it sends a Licensing Error Message with error code ERR_NO_LICENSE_SERVER (0x00000006) and a state transition of ST_TOTAL_ABORT (0x00000001). The licensing protocol is aborted.

Case 3: If either of the following conditions occurs:

  • The CAL (LicenseInfo BLOB) received in the Client License Information message required an upgrade, and the license server is available to upgrade the CAL, but it cannot upgrade the license and the old license is not valid.

Or:

  • A Client New License Request message was received earlier, and the license server is available to issue a new CAL, but the server was not able to issue a new license.

In this case, if the grace period has not been exceeded, the server responds as if the client presented a valid license by sending a Licensing Error Message with an error code of STATUS_VALID_CLIENT (0x00000007) and a state transition code of ST_NO_TRANSITION (0x00000002), ending the licensing protocol.

If the server's grace period has been exceeded, it sends a Licensing Error Message with an error code of ERR_INVALID_CLIENT (0x00000008) and a state transition of ST_TOTAL_ABORT (0x00000001). The licensing protocol is aborted.

Case 4: The CAL (LicenseInfo BLOB) in the Client License Information message received by the server required an upgrade, and the CAL is valid and the license server available, but the license server cannot upgrade the license. In this case, the terminal server sends the Server Upgrade License message and returns the old license to the client.

Case 5: A Client License Information message was received earlier by the server; the CAL (LicenseInfo BLOB) in the message required an upgrade; the license server can be contacted; and the old license is successfully upgraded. In this case, the terminal server returns the upgraded CAL in a Server Upgrade License message.

Case 6: A Client New License Request message was received earlier, the license server was contacted, and it issued a new license. In this case, the terminal server sends the new license to the client in a Server New License (section 2.2.2.7) message.