refactor(IAsymmetricKey): Umwandlung von RsaSecurityKey in SecurityKey zur besseren Abstraktion.
- RSAEncryptionPadding entfernen - Pem als Inhalt Content
This commit is contained in:
parent
34e14fd2f5
commit
608d266d1c
@ -5,14 +5,12 @@ namespace DigitalData.Core.Abstractions.Security
|
|||||||
{
|
{
|
||||||
public interface IAsymmetricKey : IUniqueSecurityContext
|
public interface IAsymmetricKey : IUniqueSecurityContext
|
||||||
{
|
{
|
||||||
public string Pem { get; init; }
|
public string Content { get; init; }
|
||||||
|
|
||||||
public RSAEncryptionPadding Padding { get; init; }
|
|
||||||
|
|
||||||
public new string Issuer { get; init; }
|
public new string Issuer { get; init; }
|
||||||
|
|
||||||
public new string Audience { get; init; }
|
public new string Audience { get; init; }
|
||||||
|
|
||||||
public RsaSecurityKey RsaSecurityKey { get; }
|
public SecurityKey SecurityKey { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,7 +58,7 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
|
|
||||||
public IAsymmetricPrivateKey CreatePrivateKey(string pem, string? issuer = null, string? audience = null, bool encrypt = false, RSAEncryptionPadding? padding = null) => new RSAPrivateKey()
|
public IAsymmetricPrivateKey CreatePrivateKey(string pem, string? issuer = null, string? audience = null, bool encrypt = false, RSAEncryptionPadding? padding = null) => new RSAPrivateKey()
|
||||||
{
|
{
|
||||||
Pem = pem,
|
Content = pem,
|
||||||
Issuer = issuer ?? string.Empty,
|
Issuer = issuer ?? string.Empty,
|
||||||
Audience = audience ?? string.Empty,
|
Audience = audience ?? string.Empty,
|
||||||
IsEncrypted = encrypt,
|
IsEncrypted = encrypt,
|
||||||
|
|||||||
@ -7,7 +7,7 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
{
|
{
|
||||||
public class RSAKeyBase : IAsymmetricKey
|
public class RSAKeyBase : IAsymmetricKey
|
||||||
{
|
{
|
||||||
public virtual string Pem { get; init; }
|
public virtual string Content { get; init; }
|
||||||
|
|
||||||
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
public RSAEncryptionPadding Padding { get; init; } = RSAEncryptionPadding.OaepSHA256;
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
|
|
||||||
private readonly Lazy<RsaSecurityKey> _lazyRsaSecurityKey;
|
private readonly Lazy<RsaSecurityKey> _lazyRsaSecurityKey;
|
||||||
|
|
||||||
public RsaSecurityKey RsaSecurityKey => _lazyRsaSecurityKey.Value;
|
public SecurityKey SecurityKey => _lazyRsaSecurityKey.Value;
|
||||||
|
|
||||||
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. Consider declaring as nullable.
|
||||||
internal RSAKeyBase()
|
internal RSAKeyBase()
|
||||||
|
|||||||
@ -8,7 +8,7 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
{
|
{
|
||||||
private string? _pem;
|
private string? _pem;
|
||||||
|
|
||||||
public override string Pem
|
public override string Content
|
||||||
{
|
{
|
||||||
#pragma warning disable CS8603 // Possible null reference return.
|
#pragma warning disable CS8603 // Possible null reference return.
|
||||||
get => _pem;
|
get => _pem;
|
||||||
@ -38,7 +38,7 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
{
|
{
|
||||||
_lazyPublicKey = new(() => new RSAPublicKey()
|
_lazyPublicKey = new(() => new RSAPublicKey()
|
||||||
{
|
{
|
||||||
Pem = RSA.ExportRSAPublicKeyPem(),
|
Content = RSA.ExportRSAPublicKeyPem(),
|
||||||
Padding = Padding
|
Padding = Padding
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -70,14 +70,14 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
throw PemIsNullException;
|
throw PemIsNullException;
|
||||||
|
|
||||||
if (IsEncrypted)
|
if (IsEncrypted)
|
||||||
RSA.ImportFromEncryptedPem(Pem, Secrets.PBE_PASSWORD.AsSpan());
|
RSA.ImportFromEncryptedPem(Content, Secrets.PBE_PASSWORD.AsSpan());
|
||||||
else
|
else
|
||||||
RSA.ImportFromPem(Pem);
|
RSA.ImportFromPem(Content);
|
||||||
}
|
}
|
||||||
|
|
||||||
private InvalidOperationException PemIsNullException => new($"Pem is null or empty. Issuer: {Issuer}, Audience: {Audience}.");
|
private InvalidOperationException PemIsNullException => new($"Content is null or empty. Issuer: {Issuer}, Audience: {Audience}.");
|
||||||
|
|
||||||
public SigningCredentials CreateSigningCredentials(string algorithm = SecurityAlgorithms.RsaSha256, string? digest = null)
|
public SigningCredentials CreateSigningCredentials(string algorithm = SecurityAlgorithms.RsaSha256, string? digest = null)
|
||||||
=> digest is null ? new(RsaSecurityKey, algorithm) : new(RsaSecurityKey, algorithm, digest);
|
=> digest is null ? new(SecurityKey, algorithm) : new(SecurityKey, algorithm, digest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,12 +4,12 @@ namespace DigitalData.Core.Security.RSAKey
|
|||||||
{
|
{
|
||||||
public class RSAPublicKey : RSAKeyBase, IAsymmetricPublicKey, IAsymmetricKey
|
public class RSAPublicKey : RSAKeyBase, IAsymmetricPublicKey, IAsymmetricKey
|
||||||
{
|
{
|
||||||
public override string Pem
|
public override string Content
|
||||||
{
|
{
|
||||||
get => base.Pem;
|
get => base.Content;
|
||||||
init
|
init
|
||||||
{
|
{
|
||||||
base.Pem = value;
|
base.Content = value;
|
||||||
RSA.ImportFromPem(value);
|
RSA.ImportFromPem(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user