From b1acc088d87caeeb256da0c022a9f8fc45d4e468 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 25 Jun 2024 11:55:53 -0600 Subject: [PATCH] Fix namespaces, update yaml. --- .../AzureAppInstance.cs | 109 ----- ...slBindingCertificatePersistenceStrategy.cs | 381 ------------------ .../AzureCertificate.cs | 28 -- .../AzureOptions.cs | 15 - ...ffySpoon.AspNet.EncryptWeMust.Azure.csproj | 16 - .../GenericLoggerAdapter.cs | 30 -- ...slBindingCertificatePersistenceStrategy.cs | 8 - .../RegistrationExtensions.cs | 40 -- .../Certificate.cs | 16 - .../Challenge.cs | 12 - .../DatabaseContext.cs | 21 - ...ncryptWeMust.EntityFramework.Sample.csproj | 21 - .../Program.cs | 25 -- .../Properties/launchSettings.json | 27 -- .../Startup.cs | 96 ----- ...FrameworkCertificatePersistenceStrategy.cs | 40 -- ...tyFrameworkChallengePersistenceStrategy.cs | 53 --- ...spNet.EncryptWeMust.EntityFramework.csproj | 16 - .../RegistrationExtensions.cs | 41 -- ...utedCacheCertificatePersistenceStrategy.cs | 29 -- ...ibutedCacheChallengePersistenceStrategy.cs | 64 --- ...pNet.EncryptWeMust.DistributedCache.csproj | 16 - .../RegistrationExtensions.cs | 34 -- ...fySpoon.AspNet.EncryptWeMust.Sample.csproj | 24 -- .../Program.cs | 25 -- .../Properties/launchSettings.json | 19 - .../Startup.cs | 53 --- .../CertificateValidatorTests.cs | 6 +- .../CustomPersistenceTests.cs | 6 +- .../FilePersistenceTests.cs | 6 +- .../LetsEncryptClientTests.cs | 10 +- .../MiddlewareTests.cs | 9 +- .../PersistenceServiceTests.cs | 7 +- ...anTools.AspNet.EncryptWeMust.Tests.csproj} | 3 +- .../ResolutionTests.cs | 5 +- .../SelfSignedCertificate.cs | 4 +- ... => PingmanTools.AspNet.EncryptWeMust.sln} | 4 +- ...ools.AspNet.EncryptWeMust.sln.DotSettings} | 0 ...ILetsEncryptChallengeApprovalMiddleware.cs | 2 +- .../Certes/ILetsEncryptRenewalService.cs | 2 +- .../LetsEncryptChallengeApprovalMiddleware.cs | 4 +- .../Certes/LetsEncryptClient.cs | 6 +- .../Certes/LetsEncryptClientFactory.cs | 4 +- .../Certes/LetsEncryptOptions.cs | 2 +- .../Certes/LetsEncryptRenewalService.cs | 6 +- .../Certes/PfxCertificate.cs | 2 +- .../Certes/PlacedOrder.cs | 4 +- .../Certes/RenewalFailMode.cs | 2 +- .../Certificates/AccountKeyCertificate.cs | 2 +- .../Certificates/CertificateInterfaces.cs | 2 +- .../Certificates/CertificateProvider.cs | 6 +- .../Certificates/CertificateRenewalResult.cs | 2 +- .../Certificates/CertificateRenewalStatus.cs | 2 +- .../Certificates/CertificateValidator.cs | 4 +- .../Certificates/IAbstractCertificate.cs | 2 +- .../Certificates/ICertificateProvider.cs | 2 +- .../LetsEncryptX509Certificate.cs | 2 +- .../Exceptions/OrderInvalidException.cs | 2 +- .../ICertificateRenewalLifecycleHook.cs | 2 +- .../KestrelOptionsSetup.cs | 8 +- .../Persistence/ChallengeDto.cs | 2 +- .../CustomCertificatePersistenceStrategy.cs | 4 +- .../CustomChallengePersistenceStrategy.cs | 2 +- .../FileCertificatePersistenceStrategy.cs | 4 +- .../FileChallengePersistenceStrategy.cs | 2 +- .../ICertificatePersistenceStrategy.cs | 4 +- .../IChallengePersistenceStrategy.cs | 2 +- .../Persistence/IPersistenceService.cs | 4 +- .../MemoryCertificatePersistenceStrategy.cs | 6 +- .../MemoryChallengePersistenceStrategy.cs | 4 +- .../Persistence/PersistenceService.cs | 6 +- .../PingmanTools.AspNet.EncryptWeMust.csproj} | 0 .../RegistrationExtensions.cs | 10 +- 73 files changed, 92 insertions(+), 1347 deletions(-) delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppInstance.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppServiceSslBindingCertificatePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureCertificate.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureOptions.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/FluffySpoon.AspNet.EncryptWeMust.Azure.csproj delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/GenericLoggerAdapter.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/IAzureAppServiceSslBindingCertificatePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Azure/RegistrationExtensions.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Certificate.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Challenge.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/DatabaseContext.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample.csproj delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Program.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Properties/launchSettings.json delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Startup.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkCertificatePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkChallengePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.csproj delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/RegistrationExtensions.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheCertificatePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheChallengePersistenceStrategy.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Redis/FluffySpoon.AspNet.EncryptWeMust.DistributedCache.csproj delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Redis/RegistrationExtensions.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Sample/FluffySpoon.AspNet.EncryptWeMust.Sample.csproj delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Sample/Program.cs delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Sample/Properties/launchSettings.json delete mode 100644 src/FluffySpoon.AspNet.EncryptWeMust.Sample/Startup.cs rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/CertificateValidatorTests.cs (96%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/CustomPersistenceTests.cs (93%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/FilePersistenceTests.cs (93%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/LetsEncryptClientTests.cs (96%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/MiddlewareTests.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/PersistenceServiceTests.cs (90%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests/FluffySpoon.AspNet.EncryptWeMust.Tests.csproj => PingmanTools.AspNet.EncryptWeMust.Tests/PingmanTools.AspNet.EncryptWeMust.Tests.csproj} (84%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/ResolutionTests.cs (92%) rename src/{FluffySpoon.AspNet.EncryptWeMust.Tests => PingmanTools.AspNet.EncryptWeMust.Tests}/SelfSignedCertificate.cs (83%) rename src/{FluffySpoon.AspNet.EncryptWeMust.sln => PingmanTools.AspNet.EncryptWeMust.sln} (75%) rename src/{FluffySpoon.AspNet.EncryptWeMust.sln.DotSettings => PingmanTools.AspNet.EncryptWeMust.sln.DotSettings} (100%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/ILetsEncryptChallengeApprovalMiddleware.cs (77%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/ILetsEncryptRenewalService.cs (81%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/LetsEncryptChallengeApprovalMiddleware.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/LetsEncryptClient.cs (96%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/LetsEncryptClientFactory.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/LetsEncryptOptions.cs (97%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/LetsEncryptRenewalService.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/PfxCertificate.cs (77%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/PlacedOrder.cs (82%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certes/RenewalFailMode.cs (91%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/AccountKeyCertificate.cs (94%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/CertificateInterfaces.cs (87%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/CertificateProvider.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/CertificateRenewalResult.cs (86%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/CertificateRenewalStatus.cs (67%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/CertificateValidator.cs (94%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/IAbstractCertificate.cs (83%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/ICertificateProvider.cs (77%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Certificates/LetsEncryptX509Certificate.cs (94%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Exceptions/OrderInvalidException.cs (89%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/ICertificateRenewalLifecycleHook.cs (83%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/KestrelOptionsSetup.cs (82%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/ChallengeDto.cs (79%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/CustomCertificatePersistenceStrategy.cs (91%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/CustomChallengePersistenceStrategy.cs (95%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/FileCertificatePersistenceStrategy.cs (93%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/FileChallengePersistenceStrategy.cs (96%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/ICertificatePersistenceStrategy.cs (86%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/IChallengePersistenceStrategy.cs (91%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/IPersistenceService.cs (82%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/MemoryCertificatePersistenceStrategy.cs (81%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/MemoryChallengePersistenceStrategy.cs (85%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/Persistence/PersistenceService.cs (96%) rename src/{FluffySpoon.AspNet.EncryptWeMust/FluffySpoon.AspNet.EncryptWeMust.csproj => PingmanTools.AspNet.EncryptWeMust/PingmanTools.AspNet.EncryptWeMust.csproj} (100%) rename src/{FluffySpoon.AspNet.EncryptWeMust => PingmanTools.AspNet.EncryptWeMust}/RegistrationExtensions.cs (95%) diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppInstance.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppInstance.cs deleted file mode 100644 index 0edd37b..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppInstance.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.Azure.Management.AppService.Fluent; -using Microsoft.Azure.Management.AppService.Fluent.Models; -using Microsoft.Azure.Management.Fluent; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - /// - /// A reference to an Azure app, which might be either a simple app, or a deployment slot - /// - public class AzureAppInstance - { - readonly IWebApp _app; - readonly IDeploymentSlot _slot; - - public AzureAppInstance(IWebApp app) - { - _app = app; - } - - public AzureAppInstance(IWebApp app, IDeploymentSlot slot) - { - _app = app; - _slot = slot; - } - - /// - /// A general purpose name for this instance - /// - public string DisplayName => IsSlot ? $"{_app.Name}/{_slot.Name}" : _app.Name; - - /// - /// Get the host names associated with this instance - /// - public ISet HostNames => IsSlot ? _slot.HostNames : _app.HostNames; - - private bool IsSlot => _slot != null; - - public Task GetHostNameBindingAsync(IAzure client, string resourceGroupName, string domain) - { - if (IsSlot) - { - return client.WebApps.Inner.GetHostNameBindingSlotAsync(resourceGroupName, - _app.Name, - _slot.Name, - domain); - } - else - { - return client.WebApps.Inner.GetHostNameBindingAsync(resourceGroupName, - _app.Name, - domain); - } - } - - public Task SetHostNameBindingAsync(IAzure client, string resourceGroupName, string domain, HostNameBindingInner binding) - { - if (IsSlot) - { - return client.WebApps.Inner.CreateOrUpdateHostNameBindingSlotWithHttpMessagesAsync( - resourceGroupName, - _app.Name, - domain, - binding, - _slot.Name); - } - else - { - return client.WebApps.Inner.CreateOrUpdateHostNameBindingWithHttpMessagesAsync( - resourceGroupName, - _app.Name, - domain, - binding - ); - } - } - - public Task> GetAppSettings() - { - if (IsSlot) - { - return _slot.GetAppSettingsAsync(); - } - else - { - return _app.GetAppSettingsAsync(); - } - } - - public Task UpdateAppSettingAsync(string key, string value) - { - if (IsSlot) - { - return _slot.Update() - .WithAppSetting(key, value) - .ApplyAsync(); - } - else - { - return _app.Update() - .WithAppSetting(key, value) - .ApplyAsync(); - } - } - - public string RegionName => IsSlot ? _slot.RegionName : _app.RegionName; - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppServiceSslBindingCertificatePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppServiceSslBindingCertificatePersistenceStrategy.cs deleted file mode 100644 index d320516..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureAppServiceSslBindingCertificatePersistenceStrategy.cs +++ /dev/null @@ -1,381 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.Azure.Management.AppService.Fluent; -using Microsoft.Azure.Management.AppService.Fluent.Models; -using Microsoft.Azure.Management.Fluent; -using Microsoft.Extensions.Logging; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - using Azure = Microsoft.Azure.Management.Fluent.Azure; - - public class AzureAppServiceSslBindingCertificatePersistenceStrategy : ICertificatePersistenceStrategy, IAzureAppServiceSslBindingCertificatePersistenceStrategy - { - private const string WildcardPrefix = "*."; - - private readonly AzureOptions _azureOptions; - private readonly LetsEncryptOptions _letsEncryptOptions; - - private readonly ILogger _logger; - private readonly IAzure _client; - - private string TagName - { - get - { - const string prefix = "FluffySpoonAspNetLetsEncrypt"; - - var domainsTag = _letsEncryptOptions - .Domains - .Aggregate(string.Empty, (a, b) => a + "," + b); - return prefix + "_" + domainsTag; - } - } - - public AzureAppServiceSslBindingCertificatePersistenceStrategy( - AzureOptions azureOptions, - LetsEncryptOptions letsEncryptOptions, - ILogger logger) - { - _azureOptions = azureOptions; - _letsEncryptOptions = letsEncryptOptions; - _logger = logger; - - _client = Authenticate(); - } - - private IAzure Authenticate() - { - return Azure.Authenticate(_azureOptions.Credentials).WithDefaultSubscription(); - } - - private bool DoesDomainMatch(string boundDomain, string certificateDomain) - { - if (certificateDomain.StartsWith(WildcardPrefix)) - { - var regexPattern = ConstructWildcardDomainMatchingRegularExpression(certificateDomain); - - return Regex.IsMatch(boundDomain, regexPattern); - } - - return certificateDomain.ToLower() == boundDomain.ToLower(); - } - - private string ConstructWildcardDomainMatchingRegularExpression(string wildcardDomain) - { - var regexPattern = wildcardDomain.Replace(@".", @"\."); - regexPattern = Regex.Replace(regexPattern, @"^\*\\\.", @"^[^.]+\."); - regexPattern = Regex.Replace(regexPattern, @"\.?$", @"\.?$"); - - return regexPattern; - } - - private bool DoesDomainMatch(string boundDomain, IEnumerable certificateDomains) - { - return certificateDomains.Any(certDomain => DoesDomainMatch(boundDomain, certDomain)); - } - - private bool DoDomainsMatch(IEnumerable boundDomains, IEnumerable certificateDomains) - { - return boundDomains.Any(boundDomain => DoesDomainMatch(boundDomain, certificateDomains)); - } - - public async Task PersistAsync(CertificateType persistenceType, IPersistableCertificate certificate) - { - if (certificate.RawData.Length == 0) - { - _logger.LogWarning("Tried to persist empty certificate."); - return; - } - - if (persistenceType != CertificateType.Site) - { - _logger.LogTrace("Skipping certificate persistence because a certificate of type {CertificateType} can't be persisted in Azure.", persistenceType); - return; - } - - var domains = _letsEncryptOptions.Domains.ToArray(); - - _logger.LogInformation("Creating new Azure certificate of type {CertificateType} and domains {DomainNames}.", persistenceType, String.Join(", ", domains)); - - var apps = await _client.WebApps.ListByResourceGroupAsync(_azureOptions.ResourceGroupName); - - var relevantApps = new HashSet(); - foreach (var app in apps) - { - _logger.LogTrace("Checking hostnames of app {AppName} (AppHostNames: {HostNames}) against domains {DomainNames}.", app.Name, app.HostNames, String.Join(", ", domains)); - - if (DoDomainsMatch(app.HostNames, domains)) - { - _logger.LogTrace("App {AppName} matches a domain", app.Name); - - relevantApps.Add(new AzureAppInstance(app)); - } - - if (app.DeploymentSlots != null) - { - var slots = await app.DeploymentSlots.ListAsync(); - - foreach (var slot in slots) - { - _logger.LogTrace( - "Checking hostnames of app {AppName}/slot {slot} (AppHostNames: {HostNames}) against domains {Domains}.", - app.Name, slot.Name, - slot.HostNames, String.Join(", ", domains)); - - if (DoDomainsMatch(slot.HostNames, domains)) - { - _logger.LogTrace("App {AppName}/slot {slot} matches a domain", app.Name, slot.Name); - - relevantApps.Add(new AzureAppInstance(app, slot)); - } - } - } - } - - if (!relevantApps.Any()) - throw new InvalidOperationException( - $"Could not find an app that has a hostname created for domains {String.Join(", ", domains)}."); - - var regionName = relevantApps.FirstOrDefault()?.RegionName; - - _logger.LogInformation("Found region name to use to use for new certificate: {RegionName}", regionName); - - IAppServiceCertificate newCertificate = await CreateOrUpdateCertificateAsync(certificate.RawData, regionName); - - foreach (var appTuple in relevantApps) - { - await UpdateAppBindingsAsync(appTuple, newCertificate, domains); - } - - await DeleteOldCertificatesAsync(newCertificate); - } - - public Task RetrieveAccountCertificateAsync() - { - _logger.LogTrace("Azure persistence do not store account certificates"); - return Task.FromResult(null); - } - - /// - /// If we've had to replace an existing certificate, then we'll need to delete the old one - /// We actually delete any matching certificate created by FluffySpoon which ISN'T the one we - /// just created - /// - /// - private async Task DeleteOldCertificatesAsync(IAppServiceCertificate newCertificate) - { - foreach (var certificate in await GetExistingAzureCertificatesAsync(CertificateType.Site)) - { - if (certificate.Thumbprint != newCertificate.Thumbprint) - { - _logger.LogInformation("Deleting old Azure certificate {CertificateName}", certificate.Name); - - await _client.WebApps.Manager - .AppServiceCertificates - .Inner - .DeleteAsync( - _azureOptions.ResourceGroupName, - certificate.Name); - } - } - } - - private async Task CreateOrUpdateCertificateAsync(byte[] bytes, string regionName) - { - var azureCertificate = await GetExistingAzureCertificateAsync(CertificateType.Site); - if (azureCertificate != null) - { - return await UpdateExistingCertificateAsync(azureCertificate, bytes); - } - else - { - return await CreateNewCertificateAsync(bytes, regionName); - } - } - - /// - /// Update an existing certificate - /// - private async Task UpdateExistingCertificateAsync(IAppServiceCertificate existingCertificate, byte[] bytes) - { - _logger.LogInformation("Updating existing Azure certificate name {CertificateName}.", existingCertificate.Name); - - // Azure doesn't let us update a certificate which is bound (the api fails with 409 Conflict), and we can't - // unbind the running certificate without causing problems for a running site - // So we will need to create a new certificate, bind to that, and then delete the existing one - return await CreateNewCertificateAsync(bytes, existingCertificate.RegionName); - } - - /// - /// Create a new certificate from scratch - /// - private async Task CreateNewCertificateAsync(byte[] bytes, string regionName) - { - var certificateName = TagName + "_" + Guid.NewGuid(); - - _logger.LogInformation("Creating new Azure certificate with name {CertificateName} in resource group {ResourceGroupName}, region {Region}.", - certificateName, _azureOptions.ResourceGroupName, regionName); - - IAppServiceCertificate azureCertificate = await _client.WebApps.Manager - .AppServiceCertificates - .Define(certificateName) - .WithRegion(regionName) - .WithExistingResourceGroup(_azureOptions.ResourceGroupName) - .WithPfxByteArray(bytes) - .WithPfxPassword(nameof(FluffySpoon)) - .CreateAsync(); - - _logger.LogTrace("Created new Azure certificate with name {CertificateName}", azureCertificate.Name); - - var tags = new Dictionary(); - foreach (var tag in azureCertificate.Tags) - tags.Add(tag.Key, tag.Value); - - tags.Add(TagName, GetTagValue(CertificateType.Site)); - - _logger.LogInformation("Updating tags: {Tags} on certificate {CertificateName}", tags, azureCertificate.Name); - - await _client.WebApps.Manager - .AppServiceCertificates - .Inner - .UpdateAsync( - _azureOptions.ResourceGroupName, - azureCertificate.Name, - new CertificatePatchResource() - { - Tags = tags - }); - return azureCertificate; - } - - - private async Task UpdateAppBindingsAsync(AzureAppInstance appInstance, - IAppServiceCertificate azureCertificate, - string[] domains) - { - _logger.LogInformation("Checking host name bindings for app {AppName}", appInstance.DisplayName); - - string[] domainsToUpgrade = appInstance.HostNames - .Where(boundDomain => DoesDomainMatch(boundDomain, domains)) - .ToArray(); - - foreach (var domain in domainsToUpgrade) - { - _logger.LogDebug("Checking host name binding for domain {DomainName}", domain); - - HostNameBindingInner existingBinding = - await appInstance.GetHostNameBindingAsync(_client, _azureOptions.ResourceGroupName, domain); - - if (DoesBindingNeedUpdating(existingBinding, azureCertificate.Thumbprint)) - { - _logger.LogDebug("Updating host name binding for app {AppName} domain {DomainName}", - appInstance.DisplayName, domain); - - var newBinding = new HostNameBindingInner( - azureResourceType: AzureResourceType.Website, - hostNameType: HostNameType.Verified, - customHostNameDnsRecordType: CustomHostNameDnsRecordType.CName, - sslState: SslState.SniEnabled, - thumbprint: azureCertificate.Thumbprint); - - await appInstance.SetHostNameBindingAsync(_client, - _azureOptions.ResourceGroupName, - domain, - newBinding); - } - } - } - - private bool DoesBindingNeedUpdating(HostNameBindingInner existingBinding, string certificateThumbprint) - { - return existingBinding == null || existingBinding.SslState != SslState.SniEnabled || existingBinding.Thumbprint != certificateThumbprint; - } - - public async Task RetrieveSiteCertificateAsync() - { - var certificate = await GetExistingCertificateAsync(CertificateType.Site); - - if (certificate == null) - { - _logger.LogInformation("Azure site certificate not found."); - return null; - } - - return certificate; - } - - /// - /// Get the existing certificate with the longest available lifetime, or null if we can't find one - /// - private async Task GetExistingAzureCertificateAsync(CertificateType certificateType) - { - return (await GetExistingAzureCertificatesAsync(certificateType)).OrderByDescending(cert => cert.ExpirationDate).FirstOrDefault(); - } - - private async Task> GetExistingAzureCertificatesAsync(CertificateType certificateType) - { - var result = new List(); - - if (certificateType != CertificateType.Site) - { - _logger.LogTrace("Skipping certificate retrieval of a certificate of type {CertificateType}, which can't be persisted in Azure.", certificateType); - return result; - } - - var certificates = await _client.WebApps.Manager - .AppServiceCertificates - .ListByResourceGroupAsync(_azureOptions.ResourceGroupName); - - var expectedTagValue = GetTagValue(certificateType); - - _logger.LogInformation("Trying to find existing Azure certificate of type {CertificateType} expected tag {TagName}:{ExpectedTagValue}.", certificateType, TagName, expectedTagValue); - - foreach (var certificate in certificates) - { - var tags = certificate.Tags; - - _logger.LogTrace("Considering Azure certificate name {CertificateName}, with tags {Tags}", certificate.Name, tags); - - if (!tags.ContainsKey(TagName) || tags[TagName] != expectedTagValue) - continue; - - _logger.LogTrace("Matched Azure certificate name {CertificateName}", certificate.Name, tags); - - result.Add(certificate); - } - - if (!result.Any()) - { - _logger.LogInformation("Did not find any matching Azure certificates."); - } - - return result; - } - - - private string GetTagValue(CertificateType certificateType) - { - if (_letsEncryptOptions.UseStaging) - return $"{certificateType}-Staging"; - else - return certificateType.ToString(); - } - - private async Task GetExistingCertificateAsync(CertificateType persistenceType) - { - var azureCert = await GetExistingAzureCertificateAsync(persistenceType); - - if (azureCert == null) - return null; - - return new AzureCertificate(azureCert); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureCertificate.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureCertificate.cs deleted file mode 100644 index 415dbcc..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureCertificate.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using Microsoft.Azure.Management.AppService.Fluent; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - /// - /// The representation of the kind of metadata-only certificate which Azure Appservices can provide via the API - /// - public class AzureCertificate : IAbstractCertificate - { - readonly IAppServiceCertificate _certificate; - - public AzureCertificate(IAppServiceCertificate certificate) - { - _certificate = certificate; - } - - public DateTime NotAfter => _certificate.ExpirationDate; - public DateTime NotBefore => _certificate.IssueDate; - public string Thumbprint => _certificate.Thumbprint; - - public override string ToString() - { - return $"Azure-{Thumbprint}: From {NotBefore} until {NotAfter}"; - } - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureOptions.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureOptions.cs deleted file mode 100644 index 2bcad54..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/AzureOptions.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Microsoft.Azure.Management.ResourceManager.Fluent.Authentication; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - public class AzureOptions - { - public string ResourceGroupName { get; set; } - - public AzureCredentials Credentials { get; set; } - - [Obsolete("This is no longer necessary, all matching apps & slots are automatically included")] - public string Slot { get;set; } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/FluffySpoon.AspNet.EncryptWeMust.Azure.csproj b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/FluffySpoon.AspNet.EncryptWeMust.Azure.csproj deleted file mode 100644 index 9e32720..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/FluffySpoon.AspNet.EncryptWeMust.Azure.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - netstandard2.1 - - - - - - - - - - - - diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/GenericLoggerAdapter.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/GenericLoggerAdapter.cs deleted file mode 100644 index 20c9e3c..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/GenericLoggerAdapter.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using Microsoft.Extensions.Logging; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - class GenericLoggerAdapter : ILogger - { - private readonly ILogger logger; - - public GenericLoggerAdapter(ILogger logger) - { - this.logger = logger; - } - - public IDisposable BeginScope(TState state) - { - return logger.BeginScope(state); - } - - public bool IsEnabled(LogLevel logLevel) - { - return logger.IsEnabled(logLevel); - } - - public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter) - { - logger.Log(logLevel, eventId, state, exception, formatter); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/IAzureAppServiceSslBindingCertificatePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/IAzureAppServiceSslBindingCertificatePersistenceStrategy.cs deleted file mode 100644 index 6bb4251..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/IAzureAppServiceSslBindingCertificatePersistenceStrategy.cs +++ /dev/null @@ -1,8 +0,0 @@ -using FluffySpoon.AspNet.EncryptWeMust.Persistence; - -namespace FluffySpoon.AspNet.EncryptWeMust.Azure -{ - public interface IAzureAppServiceSslBindingCertificatePersistenceStrategy : ICertificatePersistenceStrategy - { - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/RegistrationExtensions.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Azure/RegistrationExtensions.cs deleted file mode 100644 index 77bcb07..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Azure/RegistrationExtensions.cs +++ /dev/null @@ -1,40 +0,0 @@ -using FluffySpoon.AspNet.EncryptWeMust.Azure; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -// ReSharper disable once CheckNamespace -namespace FluffySpoon.AspNet.EncryptWeMust -{ - public static class RegistrationExtensions - { - public static void AddFluffySpoonLetsEncryptAzureFunctionLogging( - this IServiceCollection services, - ILogger logger) - { - void AddGenericLogger() - { - services.AddSingleton, GenericLoggerAdapter>(); - } - - services.AddSingleton(logger); - - AddGenericLogger(); - AddGenericLogger(); - AddGenericLogger(); - AddGenericLogger(); - } - - public static void AddFluffySpoonLetsEncryptAzureAppServiceSslBindingCertificatePersistence( - this IServiceCollection services, - AzureOptions azureOptions) - { - services.AddFluffySpoonLetsEncryptCertificatePersistence( - (provider) => new AzureAppServiceSslBindingCertificatePersistenceStrategy( - azureOptions, - provider.GetRequiredService(), - provider.GetRequiredService>())); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Certificate.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Certificate.cs deleted file mode 100644 index d48c1a5..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Certificate.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample -{ - public class Certificate - { - [Key] - public string Key { get; set; } - - public byte[] Bytes { get; set; } - - public Certificate() - { - } - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Challenge.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Challenge.cs deleted file mode 100644 index 8239c1a..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Challenge.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.ComponentModel.DataAnnotations; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample -{ - public class Challenge - { - [Key] - public string Token { get; set; } - public string Response { get; set; } - public string Domains { get; set; } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/DatabaseContext.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/DatabaseContext.cs deleted file mode 100644 index f1df593..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/DatabaseContext.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Diagnostics; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample -{ - public class DatabaseContext : DbContext - { - public DbSet Certificates { get; set; } - public DbSet Challenges { get; set; } - - protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { - base.OnConfiguring(optionsBuilder); - - optionsBuilder.UseInMemoryDatabase("FluffySpoon"); - optionsBuilder.ConfigureWarnings(x => { - x.Ignore(InMemoryEventId.TransactionIgnoredWarning); - }); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample.csproj b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample.csproj deleted file mode 100644 index 7623670..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample.csproj +++ /dev/null @@ -1,21 +0,0 @@ - - - - netcoreapp3.1 - - - - - - - - - - - - - - - - - diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Program.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Program.cs deleted file mode 100644 index f870279..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Logging; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample -{ - public class Program - { - public const string DomainToUse = "ffmathyletsencrypt.ngrok.io"; - - public static void Main(string[] args) - { - CreateWebHostBuilder(args).Build().Run(); - } - - public static IWebHostBuilder CreateWebHostBuilder(string[] args) => - WebHost.CreateDefaultBuilder(args) - .ConfigureLogging(l => l.AddConsole(x => x.IncludeScopes = true)) - .UseKestrel() - .UseUrls( - "http://" + DomainToUse, - "https://" + DomainToUse) - .UseStartup(); - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Properties/launchSettings.json b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Properties/launchSettings.json deleted file mode 100644 index 3957549..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Properties/launchSettings.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:55633", - "sslPort": 0 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample": { - "commandName": "Project", - "launchBrowser": true, - "applicationUrl": "http://localhost:5000", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - } - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Startup.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Startup.cs deleted file mode 100644 index 8a2b672..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample/Startup.cs +++ /dev/null @@ -1,96 +0,0 @@ -using System; -using System.Linq; -using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.DependencyInjection; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework.Sample -{ - public class Startup - { - // This method gets called by the runtime. Use this method to add services to the container. - // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 - public void ConfigureServices(IServiceCollection services) - { - services.AddEntityFrameworkInMemoryDatabase(); - services.AddDbContext(); - - services.AddFluffySpoonLetsEncryptEntityFrameworkCertificatePersistence( - async (databaseContext, key, bytes) => databaseContext.Certificates.Add(new Certificate() { - Bytes = bytes, - Key = key.ToString() - }), - async (databaseContext, key) => databaseContext - .Certificates - .SingleOrDefault(x => x.Key == key.ToString()) - ?.Bytes); - - services.AddFluffySpoonLetsEncryptEntityFrameworkChallengePersistence( - async (databaseContext, challenges) => databaseContext - .Challenges - .AddRange( - challenges.Select(x => - new Challenge() - { - Token = x.Token, - Response = x.Response, - Domains = string.Join(",", x.Domains) - })), - async (databaseContext) => databaseContext - .Challenges - .Select(x => - new ChallengeDto() - { - Token = x.Token, - Response = x.Response, - Domains = x.Domains.Split(',', StringSplitOptions.RemoveEmptyEntries) - }), - async (databaseContext, challenges) => databaseContext - .Challenges - .RemoveRange( - databaseContext - .Challenges - .Where(x => challenges.Any(y => y.Token == x.Token)) - )); - - services.AddFluffySpoonLetsEncrypt(new LetsEncryptOptions() - { - Email = "some-email@github.com", - UseStaging = true, - Domains = new[] { Program.DomainToUse }, - TimeUntilExpiryBeforeRenewal = TimeSpan.FromDays(30), - CertificateSigningRequest = new CsrInfo() - { - CountryName = "CountryNameStuff", - Locality = "LocalityStuff", - Organization = "OrganizationStuff", - OrganizationUnit = "OrganizationUnitStuff", - State = "StateStuff" - } - }); - - services.AddFluffySpoonLetsEncryptFileCertificatePersistence(); - services.AddFluffySpoonLetsEncryptMemoryChallengePersistence(); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - app.UseFluffySpoonLetsEncrypt(); - - app.Run(async (context) => - { - await context.Response.WriteAsync("Hello world"); - }); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkCertificatePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkCertificatePersistenceStrategy.cs deleted file mode 100644 index 0f5f395..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkCertificatePersistenceStrategy.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework -{ - public class EntityFrameworkCertificatePersistenceStrategy : CustomCertificatePersistenceStrategy - where TDbContext : DbContext - { - public EntityFrameworkCertificatePersistenceStrategy( - ServiceProvider serviceProvider, - Func persistAsync, - Func> retrieveAsync) : base( - async (key, bytes) => - { - using (var scope = serviceProvider.CreateScope()) - using (var databaseContext = scope.ServiceProvider.GetRequiredService()) - using (var transaction = await databaseContext.Database.BeginTransactionAsync()) - { - await persistAsync(databaseContext, key, bytes); - await databaseContext.SaveChangesAsync(); - - transaction.Commit(); - } - }, - async (key) => - { - using (var scope = serviceProvider.CreateScope()) - using (var databaseContext = scope.ServiceProvider.GetRequiredService()) - using (var transaction = await databaseContext.Database.BeginTransactionAsync()) - { - return await retrieveAsync(databaseContext, key); - } - }) - { - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkChallengePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkChallengePersistenceStrategy.cs deleted file mode 100644 index 00ee6aa..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/EntityFrameworkChallengePersistenceStrategy.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework -{ - public class EntityFrameworkChallengePersistenceStrategy : CustomChallengePersistenceStrategy - where TDbContext : DbContext - { - public EntityFrameworkChallengePersistenceStrategy( - ServiceProvider serviceProvider, - Func, Task> persistAsync, - Func>> retrieveAsync, - Func, Task> deleteAsync) : base( - async (challenges) => - { - using (var scope = serviceProvider.CreateScope()) - using (var databaseContext = scope.ServiceProvider.GetRequiredService()) - using (var transaction = await databaseContext.Database.BeginTransactionAsync()) - { - await persistAsync(databaseContext, challenges); - await databaseContext.SaveChangesAsync(); - - transaction.Commit(); - } - }, - async () => - { - using (var scope = serviceProvider.CreateScope()) - using (var databaseContext = scope.ServiceProvider.GetRequiredService()) - { - return await retrieveAsync(databaseContext); - } - }, - async (challenges) => - { - using (var scope = serviceProvider.CreateScope()) - using (var databaseContext = scope.ServiceProvider.GetRequiredService()) - using (var transaction = await databaseContext.Database.BeginTransactionAsync()) - { - await deleteAsync(databaseContext, challenges); - await databaseContext.SaveChangesAsync(); - - transaction.Commit(); - } - }) - { - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.csproj b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.csproj deleted file mode 100644 index 7385972..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/FluffySpoon.AspNet.EncryptWeMust.EntityFramework.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - netstandard2.1 - - - - - - - - - - - - diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/RegistrationExtensions.cs b/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/RegistrationExtensions.cs deleted file mode 100644 index d63df8a..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.EntityFramework/RegistrationExtensions.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.DependencyInjection; - -namespace FluffySpoon.AspNet.EncryptWeMust.EntityFramework -{ - public static class RegistrationExtensions - { - public static void AddFluffySpoonLetsEncryptEntityFrameworkCertificatePersistence( - this IServiceCollection services, - Func persistAsync, - Func> retrieveAsync) - where TDbContext : DbContext - { - services.AddFluffySpoonLetsEncryptCertificatePersistence( - (provider) => new EntityFrameworkCertificatePersistenceStrategy( - services.BuildServiceProvider(), - persistAsync, - retrieveAsync)); - } - - public static void AddFluffySpoonLetsEncryptEntityFrameworkChallengePersistence( - this IServiceCollection services, - Func, Task> persistAsync, - Func>> retrieveAsync, - Func, Task> deleteAsync) - where TDbContext : DbContext - { - services.AddFluffySpoonLetsEncryptChallengePersistence( - (provider) => new EntityFrameworkChallengePersistenceStrategy( - services.BuildServiceProvider(), - persistAsync, - retrieveAsync, - deleteAsync - )); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheCertificatePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheCertificatePersistenceStrategy.cs deleted file mode 100644 index fca7d44..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheCertificatePersistenceStrategy.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.Logging; - -namespace FluffySpoon.AspNet.EncryptWeMust.DistributedCache -{ - public class DistributedCacheCertificatePersistenceStrategy : CustomCertificatePersistenceStrategy - { - private const string KeyPrefix = "FluffySpoon_"; - - public DistributedCacheCertificatePersistenceStrategy( - ILogger logger, - IDistributedCache cache, - TimeSpan expiry) : base( - async (key, bytes) => - { - await cache.SetAsync(KeyPrefix + key, bytes, new DistributedCacheEntryOptions() - { - AbsoluteExpirationRelativeToNow = expiry - }); - }, - async (key) => { - return await cache.GetAsync(KeyPrefix + key); - }) - { - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheChallengePersistenceStrategy.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheChallengePersistenceStrategy.cs deleted file mode 100644 index 37f22ef..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/DistributedCacheChallengePersistenceStrategy.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; - -namespace FluffySpoon.AspNet.EncryptWeMust.DistributedCache -{ - public class DistributedCacheChallengePersistenceStrategy : IChallengePersistenceStrategy - { - private const string Key = "FluffySpoon_Challenges"; - - private readonly ILogger _logger; - private readonly IDistributedCache _cache; - private readonly TimeSpan _expiry; - - public DistributedCacheChallengePersistenceStrategy( - ILogger logger, - IDistributedCache cache, - TimeSpan expiry) - { - _logger = logger; - _cache = cache; - _expiry = expiry; - } - - public async Task DeleteAsync(IEnumerable challenges) - { - var persistedChallenges = await RetrieveAsync(); - var challengesToPersist = persistedChallenges - .Where(x => - !challenges.Any(y => y.Token == x.Token)) - .ToList(); - - await PersistAsync(challengesToPersist); - } - - public async Task PersistAsync(IEnumerable challenges) - { - var json = challenges == null ? null : JsonConvert.SerializeObject(challenges.ToArray()); - _logger.LogDebug("Persisting challenges {0}", json); - - var bytes = json == null ? null : Encoding.UTF8.GetBytes(json); - - await _cache.SetAsync(Key, bytes, new DistributedCacheEntryOptions() - { - AbsoluteExpirationRelativeToNow = _expiry - }); - } - - public async Task> RetrieveAsync() - { - var bytes = await _cache.GetAsync(Key); - var json = Encoding.UTF8.GetString(bytes); - var challenges = JsonConvert.DeserializeObject>(json); - - return challenges; - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/FluffySpoon.AspNet.EncryptWeMust.DistributedCache.csproj b/src/FluffySpoon.AspNet.EncryptWeMust.Redis/FluffySpoon.AspNet.EncryptWeMust.DistributedCache.csproj deleted file mode 100644 index 0540205..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/FluffySpoon.AspNet.EncryptWeMust.DistributedCache.csproj +++ /dev/null @@ -1,16 +0,0 @@ - - - - netstandard2.1 - - - - - - - - - - - - diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/RegistrationExtensions.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Redis/RegistrationExtensions.cs deleted file mode 100644 index 4f37ad1..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Redis/RegistrationExtensions.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using FluffySpoon.AspNet.EncryptWeMust.DistributedCache; -using Microsoft.Extensions.Caching.Distributed; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; - -// ReSharper disable once CheckNamespace -namespace FluffySpoon.AspNet.EncryptWeMust -{ - public static class RegistrationExtensions - { - public static void AddFluffySpoonLetsEncryptDistributedCacheCertificatePersistence( - this IServiceCollection services, - TimeSpan expiry) - { - services.AddFluffySpoonLetsEncryptCertificatePersistence( - (provider) => new DistributedCacheCertificatePersistenceStrategy( - provider.GetRequiredService>(), - provider.GetRequiredService(), - expiry)); - } - - public static void AddFluffySpoonLetsEncryptDistributedCacheChallengePersistence( - this IServiceCollection services, - TimeSpan expiry) - { - services.AddFluffySpoonLetsEncryptChallengePersistence( - (provider) => new DistributedCacheChallengePersistenceStrategy( - provider.GetRequiredService>(), - provider.GetRequiredService(), - expiry)); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/FluffySpoon.AspNet.EncryptWeMust.Sample.csproj b/src/FluffySpoon.AspNet.EncryptWeMust.Sample/FluffySpoon.AspNet.EncryptWeMust.Sample.csproj deleted file mode 100644 index 27be465..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/FluffySpoon.AspNet.EncryptWeMust.Sample.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - netcoreapp3.1 - - - - - - - - - - - - - - - - - - - - diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Program.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Program.cs deleted file mode 100644 index ec82eda..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Program.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.AspNetCore; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Logging; - -namespace FluffySpoon.AspNet.EncryptWeMust.Sample -{ - public class Program - { - public const string DomainToUse = "ffmathyletsencrypt.ngrok.io"; - - public static void Main(string[] args) - { - CreateWebHostBuilder(args).Build().Run(); - } - - public static IWebHostBuilder CreateWebHostBuilder(string[] args) => - WebHost.CreateDefaultBuilder(args) - .ConfigureLogging(l => l.AddConsole(x => x.IncludeScopes = true)) - .UseKestrel() - .UseUrls( - "http://" + DomainToUse, - "https://" + DomainToUse) - .UseStartup(); - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Properties/launchSettings.json b/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Properties/launchSettings.json deleted file mode 100644 index f76fa32..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Properties/launchSettings.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "http://localhost:13370", - "sslPort": 44377 - } - }, - "profiles": { - "FluffySpoon.AspNet.EncryptWeMust.Sample": { - "commandName": "Project", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "http://localhost" - } - } -} \ No newline at end of file diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Startup.cs b/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Startup.cs deleted file mode 100644 index c742346..0000000 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Sample/Startup.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.DependencyInjection; - -namespace FluffySpoon.AspNet.EncryptWeMust.Sample -{ - public class Startup - { - // This method gets called by the runtime. Use this method to add services to the container. - // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 - public void ConfigureServices(IServiceCollection services) - { - services.AddFluffySpoonLetsEncrypt(new LetsEncryptOptions() - { - Email = "some-email@github.com", - UseStaging = true, - Domains = new[] { Program.DomainToUse }, - TimeUntilExpiryBeforeRenewal = TimeSpan.FromDays(30), - CertificateSigningRequest = new CsrInfo() - { - CountryName = "CountryNameStuff", - Locality = "LocalityStuff", - Organization = "OrganizationStuff", - OrganizationUnit = "OrganizationUnitStuff", - State = "StateStuff" - } - }); - - services.AddFluffySpoonLetsEncryptFileCertificatePersistence(); - services.AddFluffySpoonLetsEncryptFileChallengePersistence(); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IHostingEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - - app.UseFluffySpoonLetsEncrypt(); - - app.Run(async (context) => - { - await context.Response.WriteAsync("Hello world"); - }); - } - } -} diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs similarity index 96% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs index ebb3ea1..9b8cb2b 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/CertificateValidatorTests.cs @@ -2,12 +2,12 @@ using System.Collections.Generic; using FluentAssertions; using FluentAssertions.Extensions; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class CertificateValidatorTests diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs similarity index 93% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs index 039cca9..cc544ea 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/CustomPersistenceTests.cs @@ -1,11 +1,11 @@ using System; using System.Threading.Tasks; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.VisualStudio.TestTools.UnitTesting; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class CustomCertificatePersistence diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs similarity index 93% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs index 5f2a2bc..6066aef 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/FilePersistenceTests.cs @@ -3,11 +3,11 @@ using System.Threading.Tasks; using Certes; using FluentAssertions; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.VisualStudio.TestTools.UnitTesting; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class FileCertificatePersistence diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs similarity index 96% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs index cea16b3..9e85f17 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/LetsEncryptClientTests.cs @@ -7,15 +7,15 @@ using Certes.Acme.Resource; using FluentAssertions; using FluentAssertions.Extensions; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; using NSubstitute; -using static FluffySpoon.AspNet.EncryptWeMust.Certificates.CertificateRenewalStatus; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; +using static PingmanTools.AspNet.EncryptWeMust.Certificates.CertificateRenewalStatus; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class LetsEncryptClientTests diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs index 269394f..a8327ca 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/MiddlewareTests.cs @@ -5,9 +5,7 @@ using System.Threading.Tasks; using Certes; using Certes.Acme; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; +using FluffySpoon.AspNet.EncryptWeMust; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -17,8 +15,11 @@ using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; using NSubstitute; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class LetsEncryptChallengeApprovalMiddlewareMiddlewareTests diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs similarity index 90% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs index 73dc0f4..db9feb7 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/PersistenceServiceTests.cs @@ -1,13 +1,12 @@ using System; using System.Threading.Tasks; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using FluffySpoon.AspNet.EncryptWeMust.Tests; using Microsoft.Extensions.Logging.Abstractions; using Microsoft.VisualStudio.TestTools.UnitTesting; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Azure +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class PersistenceServiceTests diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/FluffySpoon.AspNet.EncryptWeMust.Tests.csproj b/src/PingmanTools.AspNet.EncryptWeMust.Tests/PingmanTools.AspNet.EncryptWeMust.Tests.csproj similarity index 84% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/FluffySpoon.AspNet.EncryptWeMust.Tests.csproj rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/PingmanTools.AspNet.EncryptWeMust.Tests.csproj index 763901d..9ecbaab 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/FluffySpoon.AspNet.EncryptWeMust.Tests.csproj +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/PingmanTools.AspNet.EncryptWeMust.Tests.csproj @@ -16,7 +16,8 @@ - + + diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/ResolutionTests.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/ResolutionTests.cs similarity index 92% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/ResolutionTests.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/ResolutionTests.cs index d38fb13..bad9004 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/ResolutionTests.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/ResolutionTests.cs @@ -1,13 +1,14 @@ using System; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certes; +using FluffySpoon.AspNet.EncryptWeMust; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.VisualStudio.TestTools.UnitTesting; +using PingmanTools.AspNet.EncryptWeMust.Certes; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { [TestClass] public class ResolutionTests diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs b/src/PingmanTools.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs similarity index 83% rename from src/FluffySpoon.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs rename to src/PingmanTools.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs index 826802a..74ac82f 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust.Tests/SelfSignedCertificate.cs @@ -1,9 +1,9 @@ using System; using System.Security.Cryptography; using System.Security.Cryptography.X509Certificates; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Tests +namespace PingmanTools.AspNet.EncryptWeMust.Tests { public static class SelfSignedCertificate { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.sln b/src/PingmanTools.AspNet.EncryptWeMust.sln similarity index 75% rename from src/FluffySpoon.AspNet.EncryptWeMust.sln rename to src/PingmanTools.AspNet.EncryptWeMust.sln index 82532de..0c8a0aa 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust.sln +++ b/src/PingmanTools.AspNet.EncryptWeMust.sln @@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29512.175 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FluffySpoon.AspNet.EncryptWeMust", "FluffySpoon.AspNet.EncryptWeMust\FluffySpoon.AspNet.EncryptWeMust.csproj", "{A9D071D3-B82E-45C7-8480-D6EA7F8C6F41}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PingmanTools.AspNet.EncryptWeMust", "PingmanTools.AspNet.EncryptWeMust\PingmanTools.AspNet.EncryptWeMust.csproj", "{A9D071D3-B82E-45C7-8480-D6EA7F8C6F41}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FluffySpoon.AspNet.EncryptWeMust.Tests", "FluffySpoon.AspNet.EncryptWeMust.Tests\FluffySpoon.AspNet.EncryptWeMust.Tests.csproj", "{C9071FEE-4116-474F-B2B1-61766EAE0907}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PingmanTools.AspNet.EncryptWeMust.Tests", "PingmanTools.AspNet.EncryptWeMust.Tests\PingmanTools.AspNet.EncryptWeMust.Tests.csproj", "{C9071FEE-4116-474F-B2B1-61766EAE0907}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/FluffySpoon.AspNet.EncryptWeMust.sln.DotSettings b/src/PingmanTools.AspNet.EncryptWeMust.sln.DotSettings similarity index 100% rename from src/FluffySpoon.AspNet.EncryptWeMust.sln.DotSettings rename to src/PingmanTools.AspNet.EncryptWeMust.sln.DotSettings diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs similarity index 77% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs index 053f60c..b797616 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptChallengeApprovalMiddleware.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; using Microsoft.AspNetCore.Http; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public interface ILetsEncryptChallengeApprovalMiddleware { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs similarity index 81% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs index f59905d..1808cb7 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/ILetsEncryptRenewalService.cs @@ -2,7 +2,7 @@ using System.Threading.Tasks; using Microsoft.Extensions.Hosting; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public interface ILetsEncryptRenewalService: IHostedService, IDisposable { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs index 2e236d9..6c55ad7 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptChallengeApprovalMiddleware.cs @@ -1,10 +1,10 @@ using System.Linq; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public class LetsEncryptChallengeApprovalMiddleware : ILetsEncryptChallengeApprovalMiddleware { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs similarity index 96% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs index b309968..62132af 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClient.cs @@ -4,11 +4,11 @@ using Certes; using Certes.Acme; using Certes.Acme.Resource; -using FluffySpoon.AspNet.EncryptWeMust.Exceptions; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Exceptions; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public interface ILetsEncryptClient { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs index 9c1bb6c..6abb3a4 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptClientFactory.cs @@ -1,9 +1,9 @@ using System.Threading.Tasks; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public interface ILetsEncryptClientFactory { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs similarity index 97% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs index 429b52b..7370821 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptOptions.cs @@ -3,7 +3,7 @@ using Certes; using Certes.Acme; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public class LetsEncryptOptions { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs index b4a219f..8a4c375 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/LetsEncryptRenewalService.cs @@ -3,11 +3,11 @@ using System.Security.Cryptography.X509Certificates; using System.Threading; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; using Microsoft.Extensions.Logging; -using static FluffySpoon.AspNet.EncryptWeMust.Certificates.CertificateRenewalStatus; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using static PingmanTools.AspNet.EncryptWeMust.Certificates.CertificateRenewalStatus; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public class LetsEncryptRenewalService : ILetsEncryptRenewalService { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/PfxCertificate.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/PfxCertificate.cs similarity index 77% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/PfxCertificate.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/PfxCertificate.cs index 6b9e97c..a85aec8 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/PfxCertificate.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/PfxCertificate.cs @@ -1,4 +1,4 @@ -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public class PfxCertificate { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/PlacedOrder.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/PlacedOrder.cs similarity index 82% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/PlacedOrder.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/PlacedOrder.cs index 33ae866..26574de 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/PlacedOrder.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/PlacedOrder.cs @@ -1,7 +1,7 @@ using Certes.Acme; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { public class PlacedOrder { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs similarity index 91% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs index be472b1..ec4663b 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certes/RenewalFailMode.cs @@ -1,4 +1,4 @@ -namespace FluffySpoon.AspNet.EncryptWeMust.Certes +namespace PingmanTools.AspNet.EncryptWeMust.Certes { /// /// Defines the ways errors are handle by the . diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs similarity index 94% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs index 0115d10..5a02eef 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/AccountKeyCertificate.cs @@ -2,7 +2,7 @@ using System.Text; using Certes; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { /// /// The type of certificate used to store a Let's Encrypt account key diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs similarity index 87% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs index 748b0f6..d9eda8c 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateInterfaces.cs @@ -1,6 +1,6 @@ using Certes; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { /// /// A certificate which can be persisted as a stream of bytes diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs index db0f475..6105550 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateProvider.cs @@ -1,11 +1,11 @@ using System; using System.Linq; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Persistence; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Persistence; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public class CertificateProvider : ICertificateProvider diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs similarity index 86% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs index 0e7d09c..d0a03c0 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalResult.cs @@ -1,4 +1,4 @@ -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public class CertificateRenewalResult { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs similarity index 67% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs index e753a6e..5b5e1aa 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateRenewalStatus.cs @@ -1,4 +1,4 @@ -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public enum CertificateRenewalStatus { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs similarity index 94% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs index eeef4bb..cf57700 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/CertificateValidator.cs @@ -1,9 +1,9 @@ using System; using System.Security.Cryptography; -using FluffySpoon.AspNet.EncryptWeMust.Certes; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Certes; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public interface ICertificateValidator { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs similarity index 83% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs index dbb8e83..4e0d75b 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/IAbstractCertificate.cs @@ -1,6 +1,6 @@ using System; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { /// /// The most generic form of certificate, metadata provision only diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs similarity index 77% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs index 9ea2f81..43d24d4 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/ICertificateProvider.cs @@ -1,6 +1,6 @@ using System.Threading.Tasks; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public interface ICertificateProvider { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs similarity index 94% rename from src/FluffySpoon.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs index da041db..1e35c59 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Certificates/LetsEncryptX509Certificate.cs @@ -1,7 +1,7 @@ using System; using System.Security.Cryptography.X509Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Certificates +namespace PingmanTools.AspNet.EncryptWeMust.Certificates { public class LetsEncryptX509Certificate : IPersistableCertificate { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs b/src/PingmanTools.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs similarity index 89% rename from src/FluffySpoon.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs index 36d5a0e..0a59a38 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Exceptions/OrderInvalidException.cs @@ -1,7 +1,7 @@ using System; using System.Runtime.Serialization; -namespace FluffySpoon.AspNet.EncryptWeMust.Exceptions +namespace PingmanTools.AspNet.EncryptWeMust.Exceptions { class OrderInvalidException : Exception { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs b/src/PingmanTools.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs similarity index 83% rename from src/FluffySpoon.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs rename to src/PingmanTools.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs index 17fad9b..2df7c11 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/ICertificateRenewalLifecycleHook.cs @@ -1,7 +1,7 @@ using System; using System.Threading.Tasks; -namespace FluffySpoon.AspNet.EncryptWeMust +namespace PingmanTools.AspNet.EncryptWeMust { public interface ICertificateRenewalLifecycleHook { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/KestrelOptionsSetup.cs b/src/PingmanTools.AspNet.EncryptWeMust/KestrelOptionsSetup.cs similarity index 82% rename from src/FluffySpoon.AspNet.EncryptWeMust/KestrelOptionsSetup.cs rename to src/PingmanTools.AspNet.EncryptWeMust/KestrelOptionsSetup.cs index 14439a1..e2d62d0 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/KestrelOptionsSetup.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/KestrelOptionsSetup.cs @@ -1,10 +1,10 @@ -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; -using Microsoft.AspNetCore.Server.Kestrel.Core; +using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust +namespace PingmanTools.AspNet.EncryptWeMust { internal class KestrelOptionsSetup : IConfigureOptions { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs similarity index 79% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs index dc1c30b..db6b817 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/ChallengeDto.cs @@ -1,4 +1,4 @@ -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public class ChallengeDto { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs similarity index 91% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs index 60bcf92..b19b9e3 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomCertificatePersistenceStrategy.cs @@ -1,8 +1,8 @@ using System; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public class CustomCertificatePersistenceStrategy : ICertificatePersistenceStrategy { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs index 80b039a..b506657 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/CustomChallengePersistenceStrategy.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public delegate Task PersistChallengesDelegate(IEnumerable challenges); public delegate Task DeleteChallengesDelegate(IEnumerable challenges); diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs similarity index 93% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs index 8d264e0..b9741db 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileCertificatePersistenceStrategy.cs @@ -1,8 +1,8 @@ using System.IO; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public class FileCertificatePersistenceStrategy : ICertificatePersistenceStrategy { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs similarity index 96% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs index 3692b54..5490743 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/FileChallengePersistenceStrategy.cs @@ -5,7 +5,7 @@ using System.Threading.Tasks; using Newtonsoft.Json; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public class FileChallengePersistenceStrategy : IChallengePersistenceStrategy { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs similarity index 86% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs index e729184..08ea20e 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/ICertificatePersistenceStrategy.cs @@ -1,7 +1,7 @@ using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public interface ICertificatePersistenceStrategy { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs similarity index 91% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs index 275b2ba..719a5dc 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/IChallengePersistenceStrategy.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Threading.Tasks; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public interface IChallengePersistenceStrategy { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs similarity index 82% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs index cd56e8e..e8164d6 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/IPersistenceService.cs @@ -1,8 +1,8 @@ using System.Threading.Tasks; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public interface IPersistenceService { diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs similarity index 81% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs index 23a9883..884ade3 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryCertificatePersistenceStrategy.cs @@ -1,10 +1,10 @@ using System; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { - class MemoryCertificatePersistenceStrategy : ICertificatePersistenceStrategy + public class MemoryCertificatePersistenceStrategy : ICertificatePersistenceStrategy { IKeyCertificate _accountCertificate; IAbstractCertificate _siteCertificate; diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs similarity index 85% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs index 10a60b2..315f7bb 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/MemoryChallengePersistenceStrategy.cs @@ -2,9 +2,9 @@ using System.Linq; using System.Threading.Tasks; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { - class MemoryChallengePersistenceStrategy : IChallengePersistenceStrategy + public class MemoryChallengePersistenceStrategy : IChallengePersistenceStrategy { private IEnumerable _challenges; diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/PersistenceService.cs b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/PersistenceService.cs similarity index 96% rename from src/FluffySpoon.AspNet.EncryptWeMust/Persistence/PersistenceService.cs rename to src/PingmanTools.AspNet.EncryptWeMust/Persistence/PersistenceService.cs index 9f20c9a..064a0dd 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/Persistence/PersistenceService.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/Persistence/PersistenceService.cs @@ -4,17 +4,17 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; using Microsoft.Extensions.Logging; +using PingmanTools.AspNet.EncryptWeMust.Certificates; -namespace FluffySpoon.AspNet.EncryptWeMust.Persistence +namespace PingmanTools.AspNet.EncryptWeMust.Persistence { public enum CertificateType { Account, Site } - class PersistenceService : IPersistenceService + public class PersistenceService : IPersistenceService { private const string DnsChallengeNameFormat = "_acme-challenge.{0}"; private const string WildcardRegex = "^\\*\\."; diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/FluffySpoon.AspNet.EncryptWeMust.csproj b/src/PingmanTools.AspNet.EncryptWeMust/PingmanTools.AspNet.EncryptWeMust.csproj similarity index 100% rename from src/FluffySpoon.AspNet.EncryptWeMust/FluffySpoon.AspNet.EncryptWeMust.csproj rename to src/PingmanTools.AspNet.EncryptWeMust/PingmanTools.AspNet.EncryptWeMust.csproj diff --git a/src/FluffySpoon.AspNet.EncryptWeMust/RegistrationExtensions.cs b/src/PingmanTools.AspNet.EncryptWeMust/RegistrationExtensions.cs similarity index 95% rename from src/FluffySpoon.AspNet.EncryptWeMust/RegistrationExtensions.cs rename to src/PingmanTools.AspNet.EncryptWeMust/RegistrationExtensions.cs index e1dd3e9..ab9735d 100644 --- a/src/FluffySpoon.AspNet.EncryptWeMust/RegistrationExtensions.cs +++ b/src/PingmanTools.AspNet.EncryptWeMust/RegistrationExtensions.cs @@ -1,16 +1,18 @@ -using FluffySpoon.AspNet.EncryptWeMust.Persistence; -using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Linq; using System.Threading.Tasks; -using FluffySpoon.AspNet.EncryptWeMust.Certes; -using FluffySpoon.AspNet.EncryptWeMust.Certificates; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.Extensions.Options; using System.Runtime.CompilerServices; +using PingmanTools.AspNet.EncryptWeMust; +using PingmanTools.AspNet.EncryptWeMust.Certes; +using PingmanTools.AspNet.EncryptWeMust.Certificates; +using PingmanTools.AspNet.EncryptWeMust.Persistence; + [assembly:InternalsVisibleTo("FluffySpoon.AspNet.EncryptWeMust.Tests")] // ReSharper disable once CheckNamespace