2.2.1.3.6 MSV1_0_REMOTE_ENCRYPTED_SECRETS

The MSV1_0_REMOTE_ENCRYPTED_SECRETS structure is the opaque representation of NLTM secrets.<2> This data structure is understood and consumed only by the CredSSP client; therefore, contents can be unique to each implementation and implementation version. The CredSSP server SHOULD treat this as an opaque blob and return what is provided by the client without assumptions of structure or size. Each implementation of CredSSP client SHOULD be allowed to create a structure that makes sense for their NTLM implementation.

 typedef struct _MSV1_0_REMOTE_ENCRYPTED_SECRETS
 {
     BOOLEAN reserved1;
     BOOLEAN reserved2;
     BOOLEAN reserved3;
     MSV1_0_CREDENTIAL_KEY_TYPE reserved4;
     MSV1_0_CREDENTIAL_KEY reserved5;
     ULONG reservedSize;
     [size_is(reservedSize)] UCHAR* reserved6;
 } MSV1_0_REMOTE_ENCRYPTED_SECRETS, *PMSV1_0_REMOTE_ENCRYPTED_SECRETS;

reserved1: A BOOLEAN ([MS-DTYP] section 2.2.4) reserved for implementation-specific use.

reserved2: A BOOLEAN reserved for implementation-specific use.

reserved3: A BOOLEAN reserved for implementation-specific use.

reserved4: An MSV1_0_CREDENTIAL_KEY_TYPE enumerated value that indicates the type of credential key that is used. Values are reserved or for internal use only.

 typedef enum _MSV1_0_CREDENTIAL_KEY_TYPE{
     InvalidCredKey,        // reserved 
     IUMCredKey,            // reserved 
     DomainUserCredKey,     
     LocalUserCredKey,      // For internal use only - should never be present in
                            // MSV1_0_REMOTE_ENCRYPTED_SECRETS
     ExternallySuppliedCredKey // reserved
 } MSV1_0_CREDENTIAL_KEY_TYPE;

reserved5: An MSV1_0_CREDENTIAL_KEY structure (section 2.2.1.3.5) that contains the credential key.

reservedSize: A ULONG ([MS-DTYP] section 2.2.51) that indicates the size of the reserved6 field.

reserved6: A pointer to a UCHAR ([MS-DTYP] section 2.2.45), an array of characters that contains the credential.