IdentityShroud/IdentityShroud.Core/Model/Realm.cs

45 lines
1.3 KiB
C#
Raw Permalink Normal View History

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using IdentityShroud.Core.Contracts;
2026-02-06 19:58:01 +01:00
namespace IdentityShroud.Core.Model;
[Table("realm")]
2026-02-06 19:58:01 +01:00
public class Realm
{
private byte[] _privateKeyDecrypted = [];
2026-02-06 19:58:01 +01:00
public Guid Id { get; set; }
/// <summary>
/// Note this is part of the url we should encourage users to keep it short but we do not want to limit them too much
/// </summary>
[MaxLength(40)]
2026-02-06 19:58:01 +01:00
public string Slug { get; set; } = "";
[MaxLength(128)]
public string Name { get; set; } = "";
public List<Client> Clients { get; init; } = [];
public byte[] PrivateKeyEncrypted
{
get;
set
{
field = value;
_privateKeyDecrypted = [];
}
} = [];
public byte[] GetPrivateKey(IEncryptionService encryptionService)
{
if (_privateKeyDecrypted.Length == 0 && PrivateKeyEncrypted.Length > 0)
_privateKeyDecrypted = encryptionService.Decrypt(PrivateKeyEncrypted);
return _privateKeyDecrypted;
}
public void SetPrivateKey(IEncryptionService encryptionService, byte[] privateKey)
{
PrivateKeyEncrypted = encryptionService.Encrypt(privateKey);
_privateKeyDecrypted = privateKey;
}
2026-02-06 19:58:01 +01:00
}