45 lines
No EOL
1.3 KiB
C#
45 lines
No EOL
1.3 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using IdentityShroud.Core.Contracts;
|
|
|
|
namespace IdentityShroud.Core.Model;
|
|
|
|
[Table("realm")]
|
|
public class Realm
|
|
{
|
|
private byte[] _privateKeyDecrypted = [];
|
|
|
|
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)]
|
|
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;
|
|
}
|
|
} |