refactor(RSACryptographer): Entfernen von _pem, IsPemNull, SetPem, Init und Methoden zur Vereinfachung von RSAEncryptor
This commit is contained in:
parent
fe2ee78d14
commit
68ef0a7537
@ -11,7 +11,5 @@ 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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5,19 +5,8 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
{
|
{
|
||||||
public class RSACryptographer : IRSACryptographer
|
public class RSACryptographer : IRSACryptographer
|
||||||
{
|
{
|
||||||
protected string? _pem;
|
public virtual string Pem { get; init; }
|
||||||
|
|
||||||
public string Pem
|
|
||||||
{
|
|
||||||
get => _pem
|
|
||||||
?? throw PemIsNullException;
|
|
||||||
init => _pem = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal bool IsPemNull => _pem is null;
|
|
||||||
|
|
||||||
private InvalidOperationException PemIsNullException => new($"Pem is not initialized. Please ensure that the PEM is set or properly loaded from the file. Issuer: {Issuer}, Audience: {Audience}.");
|
|
||||||
|
|
||||||
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
||||||
|
|
||||||
protected virtual RSA RSA { get; } = RSA.Create();
|
protected virtual RSA RSA { get; } = RSA.Create();
|
||||||
@ -26,14 +15,8 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
|
|
||||||
public string Audience { get; init; } = string.Empty;
|
public string Audience { get; init; } = string.Empty;
|
||||||
|
|
||||||
|
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||||
internal RSACryptographer() { }
|
internal RSACryptographer() { }
|
||||||
|
#pragma warning restore CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||||
internal void SetPem(string pem) => _pem = pem;
|
|
||||||
|
|
||||||
public virtual void Init()
|
|
||||||
{
|
|
||||||
if (_pem is null)
|
|
||||||
throw PemIsNullException;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,6 +6,12 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
{
|
{
|
||||||
public class RSADecryptor : RSACryptographer, IRSADecryptor, IRSACryptographer
|
public class RSADecryptor : RSACryptographer, IRSADecryptor, IRSACryptographer
|
||||||
{
|
{
|
||||||
|
private string? _pem;
|
||||||
|
|
||||||
|
public override string Pem { get => _pem ?? throw PemIsNullException; init => _pem = value; }
|
||||||
|
|
||||||
|
public bool IsPemNull => _pem is null;
|
||||||
|
|
||||||
public bool IsEncrypted { get; init; }
|
public bool IsEncrypted { get; init; }
|
||||||
|
|
||||||
private readonly Lazy<IRSAEncryptor> _lazyEncryptor;
|
private readonly Lazy<IRSAEncryptor> _lazyEncryptor;
|
||||||
@ -25,13 +31,19 @@ namespace DigitalData.Core.Security.Cryptographer
|
|||||||
|
|
||||||
public string Decrypt(string data) => RSA.Decrypt(data.Base64ToByte(), Padding).BytesToString();
|
public string Decrypt(string data) => RSA.Decrypt(data.Base64ToByte(), Padding).BytesToString();
|
||||||
|
|
||||||
public override void Init()
|
internal void SetPem(string pem) => _pem = pem;
|
||||||
|
|
||||||
|
public void Init()
|
||||||
{
|
{
|
||||||
base.Init();
|
if (_pem is null)
|
||||||
|
throw PemIsNullException;
|
||||||
|
|
||||||
if (IsEncrypted)
|
if (IsEncrypted)
|
||||||
RSA.ImportFromEncryptedPem(Pem, Secrets.PBE_PASSWORD.AsSpan());
|
RSA.ImportFromEncryptedPem(Pem, Secrets.PBE_PASSWORD.AsSpan());
|
||||||
else
|
else
|
||||||
RSA.ImportFromPem(Pem);
|
RSA.ImportFromPem(Pem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private InvalidOperationException PemIsNullException => new($"Pem is not initialized. Please ensure that the PEM is set or properly loaded from the file. Issuer: {Issuer}, Audience: {Audience}.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,17 +4,21 @@ using DigitalData.Core.Security.Extensions;
|
|||||||
namespace DigitalData.Core.Security.Cryptographer
|
namespace DigitalData.Core.Security.Cryptographer
|
||||||
{
|
{
|
||||||
public class RSAEncryptor : RSACryptographer, IRSAEncryptor, IRSACryptographer
|
public class RSAEncryptor : RSACryptographer, IRSAEncryptor, IRSACryptographer
|
||||||
{
|
{
|
||||||
|
public override string Pem
|
||||||
|
{
|
||||||
|
get => base.Pem;
|
||||||
|
init
|
||||||
|
{
|
||||||
|
base.Pem = value;
|
||||||
|
RSA.ImportFromPem(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public byte[] Encrypt(byte[] data) => RSA.Encrypt(data, Padding);
|
public byte[] Encrypt(byte[] data) => RSA.Encrypt(data, Padding);
|
||||||
|
|
||||||
public string Encrypt(string data) => RSA.Encrypt(data.Base64ToByte(), Padding).BytesToString();
|
public string Encrypt(string data) => RSA.Encrypt(data.Base64ToByte(), Padding).BytesToString();
|
||||||
|
|
||||||
public bool Verify(string data, string signature) => Encrypt(data) == signature;
|
public bool Verify(string data, string signature) => Encrypt(data) == signature;
|
||||||
|
|
||||||
public override void Init()
|
|
||||||
{
|
|
||||||
base.Init();
|
|
||||||
RSA.ImportFromPem(base.Pem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user