2.2.2 Package-Specific Messages

All package-specific messages are formatted by using the Distributed Computing Environment (DCE) data representation as specified in [C706], and as exposed by the type marshaling support in Remote Procedure Call (RPC), as specified in Type Serialization Version 1, [MS-RPCE] section 2.2.6. This requires that an Interface Definition Language (IDL) file for the types be created and that this IDL be used for marshaling the data into a single message. See also the MIDL Language Reference [MIDLINF].

All packages use messages in a call-and-response manner. For each call (input) message initiated by a CredSSP server, there is a corresponding response (output) that is returned by the CredSSP client.

The RemoteGuardCallId enumeration (section 2.2.1.1) defines all possible message pairs for all security packages.

A single structure defines all possible inputs, and another structure defines all possible outputs. The individual data for each input/output pair is contained within a union. The value from the RemoteGuardCallId enumeration that is held within the outer structure determines which union member is associated with the current message. In this way, the message encoding is known in advance by both ends of the connection, simplifying message processing.