refactor(IAsymmetricKey): Die Implementierung von IUniqueSecurityContext wurde entfernt und stattdessen die Eigenschaft Id hinzugefügt.

- Aktualisierte verwandte Implementierungen.
This commit is contained in:
Developer 02 2025-01-09 22:57:04 +01:00
parent 97c4f7bf8f
commit 66e3c771dd
7 changed files with 18 additions and 17 deletions

View File

@ -1,10 +1,9 @@
using Microsoft.IdentityModel.Tokens;
using System.Security.Cryptography;
namespace DigitalData.Core.Abstractions.Security
namespace DigitalData.Core.Abstractions.Security
{
public interface IAsymmetricKey : IUniqueSecurityContext
public interface IAsymmetricKey
{
string Id { get; }
string Content { get; }
}
}

View File

@ -1,6 +1,4 @@
using Microsoft.IdentityModel.Tokens;
namespace DigitalData.Core.Abstractions.Security
namespace DigitalData.Core.Abstractions.Security
{
public interface IAsymmetricPrivateKey : IAsymmetricKey
{

View File

@ -65,7 +65,7 @@ namespace DigitalData.Core.Security.Config
// set default path
if (privateKey.IsPemNull)
{
var file_name_params = new List<object> { privateKey.Issuer, privateKey.Audience, KeySizeInBits, DateTime.Now.ToTag(DateTagFormat) };
var file_name_params = new List<object> { privateKey.Id, KeySizeInBits, DateTime.Now.ToTag(DateTagFormat) };
if (privateKey.IsEncrypted)
file_name_params.Add(Secrets.Version);

View File

@ -59,8 +59,6 @@ namespace DigitalData.Core.Security.RSAKey
public IAsymmetricDecryptor CreateDecryptor(string pem, string? issuer = null, string? audience = null, bool encrypt = false, RSAEncryptionPadding? padding = null) => new RSADecryptor()
{
Content = pem,
Issuer = issuer ?? string.Empty,
Audience = audience ?? string.Empty,
IsEncrypted = encrypt,
Padding = padding ?? RSAEncryptionPadding.OaepSHA256
};

View File

@ -10,10 +10,8 @@ namespace DigitalData.Core.Security.RSAKey
protected virtual RSA RSA { get; } = RSA.Create();
public string Issuer { get; init; } = string.Empty;
public string Id { get; init; }
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 RSAKeyBase()
{

View File

@ -45,14 +45,12 @@ namespace DigitalData.Core.Security.RSAKey
private void Init()
{
if (string.IsNullOrEmpty(_pem))
throw PemIsNullException;
throw new InvalidOperationException ($"The content of RSA private key is null or empty. Id: {Id}.");
if (IsEncrypted)
RSA.ImportFromEncryptedPem(Content, Secrets.PBE_PASSWORD.AsSpan());
else
RSA.ImportFromPem(Content);
}
private InvalidOperationException PemIsNullException => new($"Content is null or empty. Issuer: {Issuer}, Audience: {Audience}.");
}
}

View File

@ -11,6 +11,11 @@ namespace DigitalData.Core.Security.RSAKey
public string? ApiRoute { get; init; }
#region SecurityTokenDescriptor Map
/// <summary>
/// Gets or sets the value of the 'audience' claim.
/// </summary>
public string Audience { get; set; }
/// <summary>
/// Defines the compression algorithm that will be used to compress the JWT token payload.
/// </summary>
@ -26,6 +31,11 @@ namespace DigitalData.Core.Security.RSAKey
/// </summary>
public DateTime? Expires { get; set; }
/// <summary>
/// Gets or sets the issuer of this <see cref="SecurityTokenDescriptor"/>.
/// </summary>
public string Issuer { get; set; }
/// <summary>
/// Gets or sets the time the security token was issued. This value should be in UTC.
/// </summary>