/// <summary> /// Verify RopSeekRow Failure Response /// </summary> /// <param name="ropSeekRowResponse">The response of RopSeekRow request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSeekRow request</param> private void VerifyRopSeekRowFailureResponse(RopSeekRowResponse ropSeekRowResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1315"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1315 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSeekRowResponse.RopId.GetType(), 1315, @"[In RopSeekRow ROP Failure Response Buffer] RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1317"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1317 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopSeekRow, ropSeekRowResponse.RopId, 1317, @"[In RopSeekRow ROP Failure Response Buffer] RopId (1 byte): For this operation[RopSeekRow], this field[RopId (1 byte)] is set to 0x18."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1318"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1318 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSeekRowResponse.InputHandleIndex.GetType(), 1318, @"[In RopSeekRow ROP Failure Response Buffer] InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1319"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1319 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropSeekRowResponse.InputHandleIndex, 1319, @"[In RopSeekRow ROP Failure Response Buffer] InputHandleIndex (1 byte): This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1320"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1320 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropSeekRowResponse.ReturnValue.GetType(), 1320, @"[In RopSeekRow ROP Failure Response Buffer] ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1322"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1322 Site.CaptureRequirementIfAreNotEqual<uint>( SuccessReturnValue, ropSeekRowResponse.ReturnValue, 1322, @"[In RopSeekRow ROP Failure Response Buffer] ReturnValue (4 bytes): For this response[Failure Response], this field is set to a value other than 0x00000000."); }
/// <summary> /// Verify RopSeekRow Response /// </summary> /// <param name="seekRowResponse">RopSeekRowResponse structure data that needs verification</param> /// <param name="rowCountValueInTheRequest">The value of the RowCount field in the request</param> private void VerifyRopSeekRowResponse(RopSeekRowResponse seekRowResponse, long rowCountValueInTheRequest) { this.VerifyRPCLayerRequirement(); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R153"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R153 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), seekRowResponse.HasSoughtLess.GetType(), 153, @"[In RopSeekRow ROP Response Buffer] HasSoughtLess (1 byte): A Boolean that specifies whether the number of rows moved is less than the number of rows requested."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R159"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R159 Site.CaptureRequirementIfAreEqual<Type>( typeof(int), seekRowResponse.RowsSought.GetType(), 159, @"[In RopSeekRow ROP Response Buffer] RowsSought (4 bytes): A signed integer that specifies the actual number of rows moved."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R156"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R156 // That the field is not null means it is present. Site.CaptureRequirementIfIsNotNull( seekRowResponse.HasSoughtLess, 156, @"[In RopSeekRow ROP Response Buffer] The HasSoughtLess field MUST be present in the response."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R162"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R162 // That the field is not null means it is present. Site.CaptureRequirementIfIsNotNull( seekRowResponse.RowsSought, 162, @"[In RopSeekRow ROP Response Buffer] This field [RowsSought] MUST be present in the response."); if (rowCountValueInTheRequest > 0) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R161: the value of the RowsSought field in the response for RopSeekRow is set to {0}", seekRowResponse.RowsSought); // Verify MS-OXCTABL requirement: MS-OXCTABL_R161 bool isVerifyR161 = seekRowResponse.RowsSought > 0; Site.CaptureRequirementIfIsTrue( isVerifyR161, 161, @"[In RopSeekRow ROP Response Buffer] If the value of the RowCount field (in the request) is positive, then the value of the RowsSought field MUST also be positive."); } else if (rowCountValueInTheRequest < 0) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R160: the value of the RowsSought field in the response for RopSeekRow is set to {0}", seekRowResponse.RowsSought); // Verify MS-OXCTABL requirement: MS-OXCTABL_R160 bool isVerifyR160 = seekRowResponse.RowsSought <= 0; Site.CaptureRequirementIfIsTrue( isVerifyR160, 160, @"[In RopSeekRow ROP Response Buffer] If the value of the RowCount field (in the request) is negative, the value of the RowsSought field MUST also be negative or 0x00000000, indicating that the seek was performed backwards."); } }
/// <summary> /// Verify RopSeekRow Success Response /// </summary> /// <param name="ropSeekRowResponse">The response of RopSeekRow request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSeekRow request</param> private void VerifyRopSeekRowSuccessResponse(RopSeekRowResponse ropSeekRowResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1303"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1303 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSeekRowResponse.RopId.GetType(), 1303, @"[In RopSeekRow ROP Success Response Buffer] RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1305"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1305 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopSeekRow, ropSeekRowResponse.RopId, 1305, @"[In RopSeekRow ROP Success Response Buffer] RopId (1 byte): For this operation[RopSeekRow], this field[RopId (1 byte)] is set to 0x18."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1306"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1306 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSeekRowResponse.InputHandleIndex.GetType(), 1306, @"[In RopSeekRow ROP Success Response Buffer] InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1307"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1307 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropSeekRowResponse.InputHandleIndex, 1307, @"[In RopSeekRow ROP Success Response Buffer] InputHandleIndex (1 byte): This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1308"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1308 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropSeekRowResponse.ReturnValue.GetType(), 1308, @"[In RopSeekRow ROP Success Response Buffer] ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1310"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1310 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropSeekRowResponse.ReturnValue, 1310, @"[In RopSeekRow ROP Success Response Buffer] ReturnValue (4 bytes): For this response[Success Response], this field is set to 0x00000000."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1311,HasSoughtLess:{0}", ropSeekRowResponse.HasSoughtLess); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1311 // If HasSoughtLess is byte type and can be boolean type representation, then verify R1311 bool isVerifyR1311 = (typeof(byte) == ropSeekRowResponse.HasSoughtLess.GetType()) && ((Convert.ToBoolean(ropSeekRowResponse.HasSoughtLess) == true) || (Convert.ToBoolean(ropSeekRowResponse.HasSoughtLess) == false)); Site.CaptureRequirementIfIsTrue( isVerifyR1311, 1311, @"[In RopSeekRow ROP Success Response Buffer] HasSoughtLess (1 byte): A Boolean."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1313"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1313 Site.CaptureRequirementIfAreEqual<Type>( typeof(int), ropSeekRowResponse.RowsSought.GetType(), 1313, @"[In RopSeekRow ROP Success Response Buffer] RowsSought (4 bytes): A signed integer."); }