Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 18f71856 authored by Stefanos Doumpoulakis's avatar Stefanos Doumpoulakis
Browse files

implemented MRF hash validation check

parent ee2bb22c
No related branches found
No related tags found
No related merge requests found
......@@ -244,6 +244,10 @@ Public Class VectoVTPJob
End Sub
Public Sub ValidateHash() Implements IManufacturerReport.ValidateHash
End Sub
Public ReadOnly Property DataSource As DataSource Implements IInputDataProvider.DataSource
Get
Dim retVal As DataSource = New DataSource()
......
......@@ -79,5 +79,7 @@ namespace TUGraz.VectoCommon.InputData
DigestData JobDigest { get; }
void ValidateSimulationToolVersion();
void ValidateHash();
}
}
......@@ -52,6 +52,8 @@ using TUGraz.VectoCore.Models.Declaration;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.Utils;
using TUGraz.VectoHashing;
using TUGraz.VectoHashing.Impl;
using System.Globalization;
namespace TUGraz.VectoCore.InputData.FileIO.JSON
{
......@@ -980,6 +982,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON
}
}
public void ValidateHash()
{
var xmlDoc = new XmlDocument();
xmlDoc.Load(Path.Combine(Path.GetFullPath(BasePath), Body["ManufacturerRecord"].Value<string>()));
var signatureNode = xmlDoc.SelectSingleNode("//*[local-name()='Signature']");
var signatureDigest = new DigestData(signatureNode);
var parent = signatureNode.ParentNode;
parent.RemoveChild(signatureNode);
var hash = XMLHashProvider.ComputeHash(xmlDoc, signatureDigest.Reference.Remove(0, 1), signatureDigest.CanonicalizationMethods,
signatureDigest.DigestMethod);
if (!hash.InnerText.Equals(signatureDigest.DigestValue)) {
throw new VectoException($"Manufacturer Report hash: {signatureDigest.DigestValue} differs from calculated hash: {hash.InnerText}");
}
}
#endregion
private void ReadManufacturerReport()
......
......@@ -493,6 +493,7 @@ namespace TUGraz.VectoCore.OutputData.XML
}
ManufacturerRecord.ValidateSimulationToolVersion();
ManufacturerRecord.ValidateHash();
var allSuccess = true;
......
......@@ -129,7 +129,10 @@ namespace TUGraz.VectoCore.Tests.Integration
//TestCase(@"TestData\XML\XMLReaderDeclaration\GroupTest\Tractor_6x2_vehicle-class-10_EURO6_2018.xml"),
//TestCase(@"TestData\XML\XMLReaderDeclaration\GroupTest\Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml"),
//TestCase(@"TestData\XML\XMLReaderDeclaration\GroupTest\Tractor_6x4_vehicle-class-12_EURO6_2018.xml"),
TestCase(@"TestData\XML\XMLReaderDeclaration\GroupTest\Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml")]
TestCase(@"TestData\XML\XMLReaderDeclaration\GroupTest\Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml"),
TestCase(@"TestData\Integration\VTPMode\DualFuelVehicle\vehicle_sampleSingleModeDualFuel.xml", TestName = "MRF report Dual-Fuel"),
TestCase(@"TestData\Integration\VTPMode\Group2_RigidTruck_4x2\Class2_RigidTruck_DECL_SS.xml", TestName = "MRF report RigidTruck 4x2"),
]
public void TestXMLSummaryReportExists(string jobfile)
{
var dataProvider = xmlInputReader.CreateDeclaration(jobfile);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment