41 lines
959 B
C#
41 lines
959 B
C#
using System.IO;
|
|
using BirdsiteLive.Cryptography;
|
|
|
|
namespace BirdsiteLive.Domain.Factories
|
|
{
|
|
public interface IMagicKeyFactory
|
|
{
|
|
MagicKey GetMagicKey();
|
|
}
|
|
|
|
public class MagicKeyFactory : IMagicKeyFactory
|
|
{
|
|
private const string Path = "key.json";
|
|
private static MagicKey _magicKey;
|
|
|
|
#region Ctor
|
|
public MagicKeyFactory()
|
|
{
|
|
|
|
}
|
|
#endregion
|
|
|
|
public MagicKey GetMagicKey()
|
|
{
|
|
//Cached key
|
|
if (_magicKey != null) return _magicKey;
|
|
|
|
//Generate key if needed
|
|
if (!File.Exists(Path))
|
|
{
|
|
var key = MagicKey.Generate();
|
|
File.WriteAllText(Path, key.PrivateKey);
|
|
}
|
|
|
|
//Load and return key
|
|
var serializedKey = File.ReadAllText(Path);
|
|
_magicKey = new MagicKey(serializedKey);
|
|
return _magicKey;
|
|
}
|
|
}
|
|
} |