feat(RSACryptographer) Init-Methode zur Verwaltung des pem-Importprozesses hinzugefügt
This commit is contained in:
parent
0ff89b4906
commit
bea57a25e8
@ -1,8 +1,9 @@
|
|||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace DigitalData.Core.Abstractions.Security
|
namespace DigitalData.Core.Abstractions.Security
|
||||||
{
|
{
|
||||||
public interface IRSACryptographer
|
public interface IRSACryptographer : IJsonOnDeserialized
|
||||||
{
|
{
|
||||||
public string Pem { get; init; }
|
public string Pem { get; init; }
|
||||||
|
|
||||||
@ -11,5 +12,7 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
public string Issuer { get; init; }
|
public string Issuer { get; init; }
|
||||||
|
|
||||||
public string Audience { get; init; }
|
public string Audience { get; init; }
|
||||||
|
|
||||||
|
public void Init();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10,28 +10,9 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
|
|
||||||
private string? _pemPath;
|
private string? _pemPath;
|
||||||
|
|
||||||
public virtual string Pem
|
public virtual string Pem { get => _pem; init => _pem = value; }
|
||||||
{
|
|
||||||
get => _pem!;
|
|
||||||
init
|
|
||||||
{
|
|
||||||
ValidatePemInit();
|
|
||||||
_pem = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public string? PemPath
|
public string? PemPath { get => _pemPath; init => _pemPath = value; }
|
||||||
{
|
|
||||||
get => _pemPath;
|
|
||||||
init
|
|
||||||
{
|
|
||||||
_pemPath = value;
|
|
||||||
if (value is null)
|
|
||||||
return;
|
|
||||||
ValidatePemInit();
|
|
||||||
_pem = File.ReadAllText(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
||||||
|
|
||||||
@ -45,14 +26,19 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
|
|
||||||
public void OnDeserialized()
|
public void OnDeserialized()
|
||||||
{
|
{
|
||||||
if (Pem is null)
|
Init();
|
||||||
throw new InvalidOperationException($"Pem must be initialized. Issuer: {Issuer} and Audience: {Audience}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ValidatePemInit()
|
// TODO: make file read asynchronous, consider multiple routing
|
||||||
|
public virtual void Init()
|
||||||
{
|
{
|
||||||
if (_pem is not null)
|
if(_pem is null)
|
||||||
throw new InvalidOperationException($"Pem can only be initilized once. Remove one of the Pem or Pem file initilizations. Issuer: {Issuer} and Audience: {Audience}");
|
{
|
||||||
|
if (File.Exists(PemPath))
|
||||||
|
_pem = File.ReadAllText(PemPath);
|
||||||
|
else
|
||||||
|
throw new FileNotFoundException($"Pem is not assigned. Furthermore Pem file is not found in {PemPath}. Issuer is {Issuer} and audience {Audience}.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user