using AnotherReplayReader.PluginSystem; using AnotherReplayReader.Utils; using System; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AnotherReplayReader { internal static class Auth { private static readonly TaskCompletionSource> _source = new(); public static Task Id { get; } = _source.Task.Unwrap(); public static void LoadPlugin(IPlugin plugin) { var authService = plugin.CreateAuthService(RegistryUtils.RetrieveInHklm64, Cache.CacheDirectory); authService.Id.ContinueWith(_source.TrySetResult); } public static async Task IdAsKey() { var id = await Id.ConfigureAwait(false); if (string.IsNullOrEmpty(id)) { return null; } var bytes = Encoding.UTF8.GetBytes(id); var destination = Enumerable.Repeat(0xEA, 24).ToArray(); Array.Copy(bytes, destination, Math.Min(bytes.Length, destination.Length)); return destination; } } }