diff --git a/Difi.SikkerDigitalPost.Klient.Tester/XmlValidering/ResponseValidatorTests.cs b/Difi.SikkerDigitalPost.Klient.Tester/XmlValidering/ResponseValidatorTests.cs old mode 100755 new mode 100644 index 6c81f36e..0f6f7342 --- a/Difi.SikkerDigitalPost.Klient.Tester/XmlValidering/ResponseValidatorTests.cs +++ b/Difi.SikkerDigitalPost.Klient.Tester/XmlValidering/ResponseValidatorTests.cs @@ -29,7 +29,7 @@ public void InitializesWithProperties() var sentMessage = XmlUtility.TilXmlDokument(SendtMelding.FunksjoneltTestMiljø); var response = XmlUtility.TilXmlDokument(TransportKvittering.TransportOkKvittertingFunksjoneltTestmiljø); var miljø = Miljø.FunksjoneltTestmiljø; - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentMessage, response, certificateValidationProperties); @@ -51,7 +51,7 @@ public void TestsertifikatValiderer() var miljø = Miljø.FunksjoneltTestmiljø; var sentMessage = XmlUtility.TilXmlDokument(SendtMelding.FunksjoneltTestMiljø); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentMessage, XmlUtility.TilXmlDokument(TransportKvittering.TransportOkKvittertingFunksjoneltTestmiljø), certificateValidationProperties); var guidUtility = new GuidUtility { @@ -82,7 +82,7 @@ public void FeilDokumentpakkeIdITransportkvitteringSkalKasteSecurityException() var transportReceipt = XmlUtility.TilXmlDokument(TransportKvittering.TransportOkKvittertingFunksjoneltTestmiljøMedInput(idResponse)); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentMessage, transportReceipt, certificateValidationProperties); var guidUtility = new GuidUtility @@ -113,7 +113,7 @@ public void FeilSecurityBinaryITransportKvitteringSkalKasteException() var receivedTransportReceipt = XmlUtility.TilXmlDokument(TransportKvittering.TransportOkKvittertingFunksjoneltTestmiljøMedInput(securityBinary: corruptSecurityBinaryResponse)); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sendtMeldingXmlDocument, receivedTransportReceipt,certificateValidationProperties); var guidUtility = new GuidUtility { @@ -140,7 +140,7 @@ public void IncorrectTransportReceiptThrowsSecurityException() var receivedTransportReceipt = XmlUtility.TilXmlDokument(TransportKvittering.TransportOkKvitteringMedByttetDokumentpakkeIdFunksjoneltTestmiljø); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentMessage, receivedTransportReceipt,certificateValidationProperties); var guidUtility = new GuidUtility @@ -170,7 +170,7 @@ public void TestCertificateValidates() var sentReceiptRequest = new XmlDocument(); sentReceiptRequest.LoadXml(Kvitteringsforespørsel.FunksjoneltTestmiljø); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentReceiptRequest, XmlUtility.TilXmlDokument(KvitteringsRespons.FunksjoneltTestmiljø), certificateValidationProperties); //Act @@ -192,7 +192,7 @@ public void TestCertificateValidates() var sentReceiptRequest = new XmlDocument(); sentReceiptRequest.LoadXml(Kvitteringsforespørsel.FunksjoneltTestmiljø); - var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler()); + var certificateValidationProperties = new CertificateValidationProperties(miljø.GodkjenteKjedeSertifikater, DomainUtility.OrganisasjonsnummerMeldingsformidler(), true); var responseValidator = new ResponseValidator(sentReceiptRequest, XmlUtility.TilXmlDokument(KvitteringsRespons.TomKøResponsFunksjoneltTestmiljø), certificateValidationProperties); //Act diff --git a/Difi.SikkerDigitalPost.Klient/Api/SikkerDigitalPostKlient.cs b/Difi.SikkerDigitalPost.Klient/Api/SikkerDigitalPostKlient.cs old mode 100755 new mode 100644 index 48fa05ab..e3976b8a --- a/Difi.SikkerDigitalPost.Klient/Api/SikkerDigitalPostKlient.cs +++ b/Difi.SikkerDigitalPost.Klient/Api/SikkerDigitalPostKlient.cs @@ -49,7 +49,7 @@ public SikkerDigitalPostKlient(Databehandler databehandler, Klientkonfigurasjon Databehandler = databehandler; Klientkonfigurasjon = klientkonfigurasjon; RequestHelper = new RequestHelper(klientkonfigurasjon); - CertificateValidationProperties = new CertificateValidationProperties(klientkonfigurasjon.Miljø.GodkjenteKjedeSertifikater, Klientkonfigurasjon.MeldingsformidlerOrganisasjon); + CertificateValidationProperties = new CertificateValidationProperties(klientkonfigurasjon.Miljø.GodkjenteKjedeSertifikater, Klientkonfigurasjon.MeldingsformidlerOrganisasjon, Klientkonfigurasjon.ValiderRespons); } private void ValidateDatabehandlerCertificateAndThrowIfInvalid(Databehandler databehandler, Miljø miljø) diff --git a/Difi.SikkerDigitalPost.Klient/KlientKonfigurasjon.cs b/Difi.SikkerDigitalPost.Klient/KlientKonfigurasjon.cs old mode 100755 new mode 100644 index 1d94d8e0..42bbe226 --- a/Difi.SikkerDigitalPost.Klient/KlientKonfigurasjon.cs +++ b/Difi.SikkerDigitalPost.Klient/KlientKonfigurasjon.cs @@ -74,5 +74,11 @@ public void AktiverLagringAvDokumentpakkeTilDisk(string katalog) ((List) Dokumentpakkeprosessorer).Add(documentBundleToDiskProcessor); ((List) Dokumentpakkeprosessorer).Add(documentBundleToDiskProcessor); } + + /// + /// Validering av respons. Settes denne til false vi akseptere responser fra utgÃ¥tte sertifikater og vi validerer ikke signatur. + /// Dette vil i størst grad være aktuelt om man skal hente gamle kvitteringer. Gjøres pÃ¥ avsenders eget ansvar. + /// + public bool ValiderRespons { get; set; } = true; } } \ No newline at end of file diff --git a/Difi.SikkerDigitalPost.Klient/XmlValidering/CertificateValidationProperties.cs b/Difi.SikkerDigitalPost.Klient/XmlValidering/CertificateValidationProperties.cs old mode 100755 new mode 100644 index 6a47970e..68d5141e --- a/Difi.SikkerDigitalPost.Klient/XmlValidering/CertificateValidationProperties.cs +++ b/Difi.SikkerDigitalPost.Klient/XmlValidering/CertificateValidationProperties.cs @@ -5,14 +5,17 @@ namespace Difi.SikkerDigitalPost.Klient.XmlValidering { internal class CertificateValidationProperties { - public CertificateValidationProperties(X509Certificate2Collection allowedChainCertificates, Organisasjonsnummer organisasjonsnummerMeldingsformidler) + public CertificateValidationProperties(X509Certificate2Collection allowedChainCertificates, Organisasjonsnummer organisasjonsnummerMeldingsformidler, bool validateResponse) { AllowedChainCertificates = allowedChainCertificates; OrganisasjonsnummerMeldingsformidler = organisasjonsnummerMeldingsformidler; + ValidateResponse = validateResponse; } public X509Certificate2Collection AllowedChainCertificates { get; } public Organisasjonsnummer OrganisasjonsnummerMeldingsformidler { get; } + + public bool ValidateResponse { get; } } } \ No newline at end of file diff --git a/Difi.SikkerDigitalPost.Klient/XmlValidering/ResponseValidator.cs b/Difi.SikkerDigitalPost.Klient/XmlValidering/ResponseValidator.cs old mode 100755 new mode 100644 index f05256db..bfb2ade8 --- a/Difi.SikkerDigitalPost.Klient/XmlValidering/ResponseValidator.cs +++ b/Difi.SikkerDigitalPost.Klient/XmlValidering/ResponseValidator.cs @@ -44,18 +44,24 @@ public ResponseValidator(XmlDocument sentMessage, XmlDocument responseMessage, C public void ValidateMessageReceipt() { + if (!_certificateValidationProperties.ValidateResponse) return; + ValidateHeaderSignature(); ValidateReceiptSignature(); } public void ValidateTransportReceipt(GuidUtility guidUtility) { + if (!_certificateValidationProperties.ValidateResponse) return; + ValidateHeaderSignature(); ValidateDigest(guidUtility); } public void ValidateEmptyQueueReceipt() { + if (!_certificateValidationProperties.ValidateResponse) return; + ValidateHeaderSignature(); } diff --git a/SolutionItems/SharedAssemblyInfo.cs b/SolutionItems/SharedAssemblyInfo.cs index 94e1fda6..5e2eb23a 100644 --- a/SolutionItems/SharedAssemblyInfo.cs +++ b/SolutionItems/SharedAssemblyInfo.cs @@ -4,8 +4,8 @@ [assembly: AssemblyTrademark("Direktoratet for forvaltning og IKT (Difi)")] [assembly: AssemblyProduct("Difi Opppslagstjeneste Klient")] [assembly: AssemblyDescription("Klientbibliotek for integrasjon mot Oppslagstjenesten for kontakt og reservasjonregisteret")] -[assembly: AssemblyVersion("2.1.0")] -[assembly: AssemblyFileVersion("2.1.0")] -[assembly: AssemblyInformationalVersion("2.1.0")] +[assembly: AssemblyVersion("2.2.0")] +[assembly: AssemblyFileVersion("2.2.0")] +[assembly: AssemblyInformationalVersion("2.2.0")] [assembly: AssemblyCopyright("© 2015-2016 Direktoratet for forvaltning og IKT (Difi)")] [assembly: AssemblyCulture("")] \ No newline at end of file diff --git a/difi-sikker-digital-post-klient.sln b/difi-sikker-digital-post-klient.sln old mode 100755 new mode 100644 index fd607f1e..0d719248 --- a/difi-sikker-digital-post-klient.sln +++ b/difi-sikker-digital-post-klient.sln @@ -1,14 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 14 -VisualStudioVersion = 14.0.24720.0 +# Visual Studio 15 +VisualStudioVersion = 15.0.28010.2046 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0CC279EA-A5FB-4BB0-AE55-946B5A7E8834}" ProjectSection(SolutionItems) = preProject SolutionItems\App.config = SolutionItems\App.config SolutionItems\SharedAssemblyInfo.cs = SolutionItems\SharedAssemblyInfo.cs - C:\Keys\signingkey.snk = C:\Keys\signingkey.snk - SolutionItems\VersionInfo.cs = SolutionItems\VersionInfo.cs SolutionItems\VersionInfo.ps1 = SolutionItems\VersionInfo.ps1 EndProjectSection EndProject @@ -54,4 +52,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {95722C3F-2E33-4C46-B98C-80E699110A94} + EndGlobalSection EndGlobal