DeviceID.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System;
  2. using System.Security.Cryptography;
  3. using DeviceId;
  4. using DeviceId.Components;
  5. using DeviceId.Encoders;
  6. using DeviceId.Formatters;
  7. namespace InABox.DeviceIdentifier
  8. {
  9. public static class DeviceID
  10. {
  11. public static string Value(string token, Action<string>? ondebug)
  12. {
  13. var deviceId = new DeviceIdBuilder()
  14. .AddMachineName()
  15. .OnWindows(w => w
  16. .AddProcessorId()
  17. .AddMotherboardSerialNumber()
  18. .AddSystemDriveSerialNumber()
  19. .AddSystemUuid()
  20. .AddComponent("Port", new DeviceIdComponent(token))
  21. )
  22. .UseFormatter(new HashDeviceIdFormatter(() => SHA256.Create(), new Base64UrlByteArrayEncoder()))
  23. .ToString();
  24. if (ondebug is not null)
  25. {
  26. ondebug(string.Format("N: {0}", new DeviceIdBuilder().AddMachineName()));
  27. ondebug(string.Format("P: {0}", new DeviceIdBuilder().OnWindows(w => w.AddProcessorId())));
  28. ondebug(string.Format("B: {0}", new DeviceIdBuilder().OnWindows(w => w.AddMotherboardSerialNumber())));
  29. ondebug(string.Format("D: {0}", new DeviceIdBuilder().OnWindows(w => w.AddSystemDriveSerialNumber())));
  30. ondebug(string.Format("U: {0}", new DeviceIdBuilder().OnWindows(w => w.AddSystemUuid())));
  31. ondebug(string.Format("T: {0}", new DeviceIdBuilder().AddComponent("Port", new DeviceIdComponent(token))));
  32. ondebug(string.Format("L: {0}", deviceId));
  33. }
  34. return deviceId;
  35. }
  36. }
  37. }