using System.Security.Cryptography; using System.Text.Json.Serialization; namespace DigitalData.Core.Security.Config { public class RSAFactoryParams : IJsonOnDeserialized { public int KeySizeInBits { get; init; } = 2048; public string PbePassword { internal get; init; } = Secrets.PBE_PASSWORD; public PbeEncryptionAlgorithm PbeEncryptionAlgorithm { get; init; } = PbeEncryptionAlgorithm.Aes256Cbc; public HashAlgorithmName PbeHashAlgorithmName { get; init; } = HashAlgorithmName.SHA256; public int PbeIterationCount { get; init; } = 100_000; public string EncryptedPrivateKeyPemLabel { get; init; } = "ENCRYPTED PRIVATE KEY"; private PbeParameters? _pbeParameters; [JsonIgnore] public PbeParameters PbeParameters => _pbeParameters!; public virtual void OnDeserialized() => _pbeParameters = new PbeParameters(PbeEncryptionAlgorithm, PbeHashAlgorithmName, PbeIterationCount); } }