From 65989b23b35163ace15764fb1fcf7ae449596874 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Thu, 5 Dec 2024 00:43:42 +0100 Subject: [PATCH] =?UTF-8?q?refactor(RSAFactoryParams):=20Eigenschaft=20Pbe?= =?UTF-8?q?Parameters=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DigitalData.Core.Security.Extensions/RSAExtensions.cs | 4 ++-- DigitalData.Core.Security/RSAFactory.cs | 10 ++-------- DigitalData.Core.Security/RSAFactoryParams.cs | 7 +++++++ 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/DigitalData.Core.Security.Extensions/RSAExtensions.cs b/DigitalData.Core.Security.Extensions/RSAExtensions.cs index be2ef74..afad98a 100644 --- a/DigitalData.Core.Security.Extensions/RSAExtensions.cs +++ b/DigitalData.Core.Security.Extensions/RSAExtensions.cs @@ -13,10 +13,10 @@ namespace DigitalData.Core.Security.Extensions return rsa; } - public static IRSADecryptor GetRSADecryptor(this IAsymCryptService factory, string issuer, string audience, Version? version = null, string? seperator = null) + public static IRSADecryptor GetRSADecryptor(this IAsymCryptService factory, string issuer, string audience, Version? version = null, string? seperator = null) => factory[factory.RSAKeyNameFormatter(issuer, audience, true, version, seperator)]; - public static bool TryGetRSADecryptor(this IAsymCryptService factory, string issuer, string audience, out IRSADecryptor? decryptor, Version? version = null, string? seperator = null) + public static bool TryGetRSADecryptor(this IAsymCryptService factory, string issuer, string audience, out IRSADecryptor? decryptor, Version? version = null, string? seperator = null) => factory.TryGetRSADecryptor(factory.RSAKeyNameFormatter(issuer, audience, true, version, seperator), out decryptor); private static string CreatePath(string filename, string? directory = null) diff --git a/DigitalData.Core.Security/RSAFactory.cs b/DigitalData.Core.Security/RSAFactory.cs index c56cc13..c403549 100644 --- a/DigitalData.Core.Security/RSAFactory.cs +++ b/DigitalData.Core.Security/RSAFactory.cs @@ -12,13 +12,7 @@ namespace DigitalData.Core.Security protected readonly TRSAFactoryParams _params; - private readonly PbeParameters _pbeParameters; - - public RSAFactory(IOptions options) - { - _params = options.Value; - _pbeParameters = new PbeParameters(_params.PbeEncryptionAlgorithm, _params.PbeHashAlgorithmName, _params.PbeIterationCount); - } + public RSAFactory(IOptions options) => _params = options.Value; public string CreateRSAPrivateKeyPem(int? keySizeInBits = null) => RSA.Create(keySizeInBits ?? _params.KeySizeInBits).ExportRSAPrivateKeyPem(); @@ -37,7 +31,7 @@ namespace DigitalData.Core.Security pbeEncryptionAlgorithm ?? _params.PbeEncryptionAlgorithm, hashAlgorithmName ?? _params.PbeHashAlgorithmName, iterationCount ?? _params.PbeIterationCount) - : _pbeParameters; + : _params.PbeParameters; var encryptedPrivateKey = RSA.Create(keySizeInBits ?? _params.KeySizeInBits).ExportEncryptedPkcs8PrivateKey(password.AsSpan(), pbeParameters); diff --git a/DigitalData.Core.Security/RSAFactoryParams.cs b/DigitalData.Core.Security/RSAFactoryParams.cs index 6673a90..6a093af 100644 --- a/DigitalData.Core.Security/RSAFactoryParams.cs +++ b/DigitalData.Core.Security/RSAFactoryParams.cs @@ -23,5 +23,12 @@ namespace DigitalData.Core.Security public int PbeIterationCount { get; init; } = 100_000; public string EncryptedPrivateKeyPemLabel { get; init; } = "ENCRYPTED PRIVATE KEY"; + + private readonly Lazy _lazyPbeParameters; + + public PbeParameters PbeParameters => _lazyPbeParameters.Value; + + public RSAFactoryParams() + => _lazyPbeParameters = new(() => new PbeParameters(PbeEncryptionAlgorithm, PbeHashAlgorithmName, PbeIterationCount)); } } \ No newline at end of file