/// <summary> /// Creates and transmits an ACK in response to a previously processed SYN /// </summary> private void Acknowledge(ISyn syn) { Ack ack = new Ack() { Id = _id, PublicKey = _accountService.PublicKey, Encrypted = true, }; byte[] requesterPubKey = Nethereum.Hex.HexConvertors.Extensions.HexByteConvertorExtensions.HexToByteArray(syn.PublicKey); _tokenCryptoService.Sign(ack, _accountService.GetPrivateKeyAsByteArray()); string encryptedToken = _tokenCryptoService.Encrypt(ack, requesterPubKey, _accountService.GetPrivateKeyAsByteArray()); _session.Open(syn.NetworkAddress); _session.Send(encryptedToken); }
public async Task ProcessSyn(string synString) { HandshakeTokenFactory <Syn> synFactory = new HandshakeTokenFactory <Syn>(_idFacade); Syn syn = await synFactory.CreateHandshakeTokenAsync(synString); byte[] pubK = Nethereum.Hex.HexConvertors.Extensions.HexByteConvertorExtensions.HexToByteArray(syn.PublicKey); VerifyHandshakeTokenIDOwnership(syn); if (_tokenCryptoService.VerifySignature(syn)) { _syn = syn; Acknowledge(_syn); } else { throw new SignatureDoesntMatchException("The signature was not " + "generated by the given " + "public Key"); } }