public static void ReadConfigReturn(ValidateNegotiateInfoConfig c)
        {
            Condition.IsTrue(State == ModelState.Uninitialized);
            Condition.IsNotNull(c);
            Config = c;
            State = ModelState.Initialized;

            Condition.IsTrue(Config.ValidateNegotiateInfoSupported ==
                             ValidateNegotiateInfoInServer.NotSupportValidateNegotiateInfo ||
                             Config.ValidateNegotiateInfoSupported ==
                             ValidateNegotiateInfoInServer.SupportValidateNegotiateInfo);
        }
        public void ReadConfig(out ValidateNegotiateInfoConfig c)
        {
            // Server will terminate connection if Validate Negotiate Info Request is not signed.
            testConfig.CheckSigning();

            c = new ValidateNegotiateInfoConfig
            {
                Platform = testConfig.Platform,
                ValidateNegotiateInfoSupported = testConfig.IsIoCtlCodeSupported(CtlCode_Values.FSCTL_VALIDATE_NEGOTIATE_INFO) ?
                                                 ValidateNegotiateInfoInServer.SupportValidateNegotiateInfo : ValidateNegotiateInfoInServer.NotSupportValidateNegotiateInfo
            };
            validateNegotiateInfoConfig = c;
        }
        public void ReadConfig(out ValidateNegotiateInfoConfig c)
        {
            // Server will terminate connection if Validate Negotiate Info Request is not signed.
            testConfig.CheckSigning();

            c = new ValidateNegotiateInfoConfig
            {
                Platform = testConfig.Platform,
                ValidateNegotiateInfoSupported = testConfig.IsIoCtlCodeSupported(CtlCode_Values.FSCTL_VALIDATE_NEGOTIATE_INFO) ?
                    ValidateNegotiateInfoInServer.SupportValidateNegotiateInfo : ValidateNegotiateInfoInServer.NotSupportValidateNegotiateInfo
            };
            validateNegotiateInfoConfig = c;
        }
        public static void ValidateNegotiateInfoResponse(ModelSmb2Status status, ValidateNegotiateInfoConfig c)
        {
            Condition.IsTrue(State == ModelState.Connected);
            Condition.IsTrue(IsSameWithNegotiate);
            Condition.IsTrue(Config.Platform == c.Platform);

            State = ModelState.Disconnected;

            if (Config.ValidateNegotiateInfoSupported == ValidateNegotiateInfoInServer.SupportValidateNegotiateInfo)
            {
                ModelHelper.Log(
                    LogType.TestInfo,
                    "FSCTL_VALIDATE_NEGOTIATE_INFO is allowed on the server");

                Condition.IsTrue(status == ModelSmb2Status.STATUS_SUCCESS);
                return;
            }

            ModelHelper.Log(
                LogType.TestInfo,
                "FSCTL_VALIDATE_NEGOTIATE_INFO is not allowed on the server");

            if (Config.Platform != Platform.NonWindows)
            {
                ModelHelper.Log(
                    LogType.Requirement,
                    "3.3.5.15: The server SHOULD<299> fail the request with STATUS_NOT_SUPPORTED when an FSCTL is not allowed on the server");
                ModelHelper.Log(
                    LogType.TestInfo,
                    "SUT platform is {0}, so follow the SHOULD requirement", Config.Platform);
                ModelHelper.Log(LogType.TestTag, TestTag.Compatibility);
                Condition.IsTrue(status == ModelSmb2Status.STATUS_NOT_SUPPORTED);
            }
            else
            {
                ModelHelper.Log(
                    LogType.TestInfo,
                    "SUT platform is {0}, so only assert status is not equal to STATUS_SUCCESS", Config.Platform);

                Condition.IsFalse(status == ModelSmb2Status.STATUS_SUCCESS);
            }
        }