Developer 02 358cfdb707 fix: Behandlung von leeren PEM-Inhalten in der ClientPublicKey-Klasse
- Die UpdateContent-Methode wurde aktualisiert, um den SecurityKey zurückzusetzen, wenn der PEM-Inhalt leer oder mit Leerzeichen versehen ist.
- Es wurde sichergestellt, dass ein neuer RSA-Schlüssel erstellt wird, wenn der Inhalt ungültig oder nicht vorhanden ist.
2025-04-28 12:45:15 +02:00

46 lines
1.2 KiB
C#

using DigitalData.Core.Abstractions.Security.Common;
using DigitalData.Core.Abstractions.Security.Key;
using DigitalData.Core.Security.RSAKey.Base;
using Microsoft.IdentityModel.Tokens;
using System.Security.Cryptography;
namespace DigitalData.Auth.Client;
/// <summary>
/// Represents a public RSA key, allowing dynamic updates and PEM import functionality.
/// </summary>
public class ClientPublicKey : RSAKeyBase, IAsymmetricTokenValidator, IUniqueSecurityContext
{
public required string Issuer { get; init; }
public required string Audience { get; init; }
private string _content = string.Empty;
public override string Content
{
get
{
return _content;
}
init
{
UpdateContent(value);
}
}
internal void UpdateContent(string content)
{
_content = content;
if (string.IsNullOrWhiteSpace(content))
SecurityKey = new RsaSecurityKey(RSA.Create());
else
{
RSA.ImportFromPem(content);
SecurityKey = new RsaSecurityKey(RSA);
}
}
public SecurityKey SecurityKey { get; private set; } = new RsaSecurityKey(RSA.Create());
}