From 5e058be7b68ec26158ad7fdd9e5924e994f412dd Mon Sep 17 00:00:00 2001 From: Klaus Fischer <klaus.fischer@eloware.com> Date: Sat, 3 Sep 2022 18:12:06 +0200 Subject: [PATCH] Loading key in Tests --- .idea/.idea.FitConnect/.idea/.name | 1 + FitConnect/Encryption/CertificateHelper.cs | 2 +- FitConnect/Models/FitConnectEnvironment.cs | 25 +++++++++------ FitConnect/Sender.cs | 2 +- IntegrationTests/CertificateValidation.cs | 36 +++++++++++++++++++--- 5 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 .idea/.idea.FitConnect/.idea/.name diff --git a/.idea/.idea.FitConnect/.idea/.name b/.idea/.idea.FitConnect/.idea/.name new file mode 100644 index 00000000..04b5af4f --- /dev/null +++ b/.idea/.idea.FitConnect/.idea/.name @@ -0,0 +1 @@ +FitConnect \ No newline at end of file diff --git a/FitConnect/Encryption/CertificateHelper.cs b/FitConnect/Encryption/CertificateHelper.cs index abf25d6c..f3dce044 100644 --- a/FitConnect/Encryption/CertificateHelper.cs +++ b/FitConnect/Encryption/CertificateHelper.cs @@ -21,7 +21,7 @@ public class CertificateHelper { var certificates = key.X5c.Select(s => new X509Certificate2(Convert.FromBase64String(s))) .ToList(); - var root = new X509Certificate2("./certificates/root.pem"); + X509Certificate2? root = null; //new X509Certificate2("./certificates/root.pem"); _logger?.LogTrace("Found {Count} certificate(s)", certificates.Count); diff --git a/FitConnect/Models/FitConnectEnvironment.cs b/FitConnect/Models/FitConnectEnvironment.cs index 64e910c6..fd377f51 100644 --- a/FitConnect/Models/FitConnectEnvironment.cs +++ b/FitConnect/Models/FitConnectEnvironment.cs @@ -4,25 +4,32 @@ public class FitConnectEnvironment { // List of Domains // https://wiki.fit-connect.fitko.dev/de/Betrieb/Dokumentation/Domains + public static readonly FitConnectEnvironment Develop = new( + "https://auth-dev.fit-connect.fitko.dev/token", + new[] { "https://submission-api-dev.fit-connect.fitko.dev" }, + string.Empty, // "https://routing-api-testing.fit-connect.fitko.dev", // Dev does not have a routing API + "https://portal.auth-dev.fit-connect.fitko.dev" + ) { VerifiedKeysAreMandatory = false }; + public static readonly FitConnectEnvironment Testing = new( "https://auth-testing.fit-connect.fitko.dev/token", new[] { "https://submission-api-testing.fit-connect.fitko.dev" }, "https://routing-api-testing.fit-connect.fitko.dev", "https://portal.auth-testing.fit-connect.fitko.dev" - ){VerifiedKeysAreMandatory = false}; + ) { VerifiedKeysAreMandatory = false }; public static readonly FitConnectEnvironment Staging = new( - "https://auth-testing.fit-connect.fitko.dev/token", - new[] { "https://submission-api-testing.fit-connect.fitko.dev" }, - "https://routing-api-testing.fit-connect.fitko.dev", - "https://portal.auth-testing.fit-connect.fitko.dev" + "https://auth-refz.fit-connect.fitko.net/token", + new[] { "submission-api-refz.fit-connect.niedersachsen.de" }, + string.Empty, // "https://routing-api-testing.fit-connect.fitko.dev", // Stage does not have a routing API + "https://portal.auth-refz.fit-connect.fitko.net" ); public static readonly FitConnectEnvironment Production = new( - "https://auth.fit-connect.fitko.net/token", - new[] { "https://submission-api.fit-connect.fitko.net" }, - "https://routing-api.fit-connect.fitko.net", - "https://portal.auth.fit-connect.fitko.net" + "https://auth-prod.fit-connect.fitko.net/token", + new[] { "https://submission-api-prod.fit-connect.niedersachsen.de" }, + "https://routing-api-prod.fit-connect.fitko.net", + "https://portal.auth-prod.fit-connect.fitko.net" ); public FitConnectEnvironment(string sspUrl, string tokenUrl, string[] submissionUrl, diff --git a/FitConnect/Sender.cs b/FitConnect/Sender.cs index f371798a..a140a1e4 100644 --- a/FitConnect/Sender.cs +++ b/FitConnect/Sender.cs @@ -181,7 +181,7 @@ public class Sender : FitConnectClient, ISender, ISenderWithDestination, return submission; } - private async Task<string> GetPublicKeyFromDestination(string destinationId) { + internal async Task<string> GetPublicKeyFromDestination(string destinationId) { var publicKey = await DestinationService.GetPublicKey(destinationId); var keyIsValid = new CertificateHelper(Logger).ValidateCertificate(publicKey, diff --git a/IntegrationTests/CertificateValidation.cs b/IntegrationTests/CertificateValidation.cs index 38f32682..8b0c1fad 100644 --- a/IntegrationTests/CertificateValidation.cs +++ b/IntegrationTests/CertificateValidation.cs @@ -39,6 +39,19 @@ public class CertificateValidation { _certificateHelper = new CertificateHelper(_logger); } + [Test] + public void CheckCertificateInEnvironment_Dev() { + var environment = FitConnectEnvironment.Develop; + var sender = Client.GetSender(environment, _settings.SenderClientId, + _settings.SenderClientSecret, + _logger); + + var certificate = (sender as FitConnect.Sender) + .GetPublicKeyFromDestination(_settings.DestinationId).Result; + new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate), + LogLevel.Trace); + } + [Test] public void CheckCertificateInEnvironment_Testing() { var environment = FitConnectEnvironment.Testing; @@ -46,10 +59,10 @@ public class CertificateValidation { _settings.SenderClientSecret, _logger); - sender.WithDestination(_settings.DestinationId) - .WithServiceType("", _settings.LeikaKey) - .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF")) - .Submit(); + var certificate = (sender as FitConnect.Sender) + .GetPublicKeyFromDestination(_settings.DestinationId).Result; + new CertificateHelper(_logger).ValidateCertificate(JsonWebKey.Create(certificate), + LogLevel.Trace); } [Test] @@ -67,6 +80,21 @@ public class CertificateValidation { }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)); } + [Test] + public void CheckCertificateInEnvironment_Production() { + var environment = FitConnectEnvironment.Production; + var sender = Client.GetSender(environment, _settings.SenderClientId, + _settings.SenderClientSecret, + _logger); + + Assert.Throws<AggregateException>(() => { + sender.WithDestination(_settings.DestinationId) + .WithServiceType("", _settings.LeikaKey) + .WithAttachments(new Attachment("Test.pdf", "Simple Test PDF")) + .Submit(); + }).InnerExceptions.Any(e => e.GetType() == typeof(SecurityException)); + } + [Test] public void CheckPublicKeyEncryption() { _certificateHelper.ValidateCertificate(new JsonWebKey(_settings.PublicKeyEncryption)) -- GitLab