DevClientApp.cs 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System.Security.Cryptography;
  2. using PCC.App.Security;
  3. using PCC.Common.AssemblyInject.Interfaces;
  4. using PCC.Common.EventBus;
  5. using PCC.App.Tpm;
  6. namespace PCC.DevClient;
  7. internal class DevClientApp(DevClientPccConfigManager configManager, TrustedPeerManager tpm, IEventBus eventBus, ILogger<DevClientApp> logger) : IAssemblyInjectSyncInitStarStop
  8. {
  9. public void Init()
  10. {
  11. logger.LogInformation("init");
  12. //eventBus.Subscript<TrustedPeerManager.TPM_EVT_PEER_CX>(OnConnected);
  13. //eventBus.Subscript<TrustedPeerManager.TPM_EVT_PEER_RX>(OnRx);
  14. //eventBus.Subscript<TrustedPeerManager.TPM_EVT_PEER_DX>(OnDx);
  15. //eventBus.Subscript<TrustedPeerManager.TPM_EVT_PEER_XX>(OnXx);
  16. }
  17. public void Start()
  18. {
  19. logger.LogInformation("starting...");
  20. byte[] myPri, myPub;
  21. if (configManager.Instance.MyKeyPrivate == null || configManager.Instance.MyKeyPublic == null)
  22. {
  23. logger.LogInformation("Generating 8192bit RSA key... be patient, may take up to 30 seconds...");
  24. (myPub, myPri) = RsaUtility.GeneratePKCS1(8192);
  25. configManager.Instance.MyKeyPrivate = Convert.ToBase64String(myPri, Base64FormattingOptions.None);
  26. configManager.Instance.MyKeyPublic = Convert.ToBase64String(myPub, Base64FormattingOptions.None);
  27. configManager.Save();
  28. logger.LogInformation("RSA key generated and saved.");
  29. }
  30. else
  31. {
  32. myPri = Convert.FromBase64String(configManager.Instance.MyKeyPrivate);
  33. myPub = Convert.FromBase64String(configManager.Instance.MyKeyPublic);
  34. }
  35. //eventBus.Publish(new TrustedPeerManager.TPM_EVT_CMD_INIT(myPub, myPri));
  36. //logger.LogInformation("Your public key for share to trusted peer: " + configManager.Instance.MyKeyPublic);
  37. //if (configManager.Instance.TrustPeerKeyPub == null || configManager.Instance.TrustPeerHost == null || configManager.Instance.TrustPeerPort == null)
  38. //{
  39. // logger.LogError($"Missing config one of `{nameof(configManager.Instance.TrustPeerKeyPub)}' or `{nameof(configManager.Instance.TrustPeerHost)}' or `{nameof(configManager.Instance.TrustPeerPort)}', please obtain from trusted peer, HALT");
  40. // return;
  41. //}
  42. //var tpk = Convert.FromBase64String(configManager.Instance.TrustPeerKeyPub);
  43. //var tph = configManager.Instance.TrustPeerHost!;
  44. //var tpp = configManager.Instance.TrustPeerPort!.Value;
  45. //var peerId = tpm.AddPeer(tpk, tph, tpp);
  46. //tpm.ConnectToPeerAsync(peerId);
  47. }
  48. //private void OnConnected(TrustedPeerManager.TPM_EVT_PEER_CX obj)
  49. //{
  50. // logger.LogInformation("Connected");
  51. // var payload = "Brr连上了?"u8.ToArray();
  52. // logger.LogInformation($"Send payload {Convert.ToHexString(SHA256.HashData(payload))}");
  53. // tpm.SendToPeer(obj.PeerId, payload);
  54. //}
  55. //private void OnRx(TrustedPeerManager.TPM_EVT_PEER_RX obj)
  56. //{
  57. // logger.LogInformation("Rx:" + Convert.ToHexString(obj.payload.Span));
  58. //}
  59. //private void OnDx(TrustedPeerManager.TPM_EVT_PEER_DX obj)
  60. //{
  61. // logger.LogInformation("Dx:" + obj.PeerId);
  62. //}
  63. //private void OnXx(TrustedPeerManager.TPM_EVT_PEER_XX obj)
  64. //{
  65. // logger.LogWarning($"有内鬼,终止交易! {obj.Kind} {obj.PeerId}");
  66. //}
  67. public void Stop()
  68. {
  69. logger.LogInformation("stop");
  70. // eventBus.Publish<TrustedPeerManager.TPM_EVT_CMD_SHUTDOWN>();
  71. }
  72. }