protected override void Load(ContainerBuilder builder)
        {
            _fakeEnsProvider = new FakeEnsProvider();
            _signService     = new WhisperSignService();
            _whisperRpc      = new WhisperRpc(new Web3(_appSettings.WhisperRpcUri), new WhisperMessageFormatter());
            _ethereumRpc     = new EthereumRpc(new Web3(_appSettings.EthereumRpcUri));
            _transportClient = new TransportClient(_whisperRpc, _signService, new WhisperMessageFormatter());

            var vaspInformationBuilder = new VaspInformationBuilder(_ethereumRpc);

            var(vaspInfo, vaspContractInfo) = vaspInformationBuilder.Create(
                _appSettings.VaspSmartContractAddress);

            var originator = VaspClient.Create(
                vaspInfo,
                vaspContractInfo,
                _appSettings.HandshakePrivateKeyHex,
                _appSettings.SignaturePrivateKeyHex,
                _ethereumRpc,
                _whisperRpc,
                _fakeEnsProvider,
                _signService,
                _transportClient);

            builder.RegisterInstance(vaspInfo);
            builder.RegisterInstance(vaspContractInfo);
            builder.RegisterInstance(originator);

            builder.RegisterType <TransactionsManager>()
            .SingleInstance()
            .AsSelf()
            .AutoActivate();

            base.Load(builder);
        }
        public static VaspClient Create(
            VaspInformation vaspInfo,
            VaspContractInfo vaspContractInfo,
            string handshakePrivateKeyHex,
            string signaturePrivateKeyHex,
            IEthereumRpc nodeClientEthereumRpc,
            IWhisperRpc nodeClientWhisperRpc,
            IEnsProvider ensProvider,
            ISignService signService,
            ITransportClient transportClient)
        {
            var handshakeKey = ECDH_Key.ImportKey(handshakePrivateKeyHex);

            var vaspClient = new VaspClient(
                handshakeKey,
                signaturePrivateKeyHex,
                vaspContractInfo,
                vaspInfo,
                nodeClientEthereumRpc,
                nodeClientWhisperRpc,
                ensProvider,
                transportClient,
                signService);

            return(vaspClient);
        }
Beispiel #3
0
 public VaspSessionService()
 {
     _fakeEnsProvider = new FakeEnsProvider();
     _signService     = new WhisperSignService();
     _whisperRpc      = new WhisperRpc(new Web3(_whisperRpcUrl), new WhisperMessageFormatter());
     _ethereumRpc     = new EthereumRpc(new Web3(_ethereumRpcUrl));
     _transportClient = new TransportClient(_whisperRpc, _signService, new WhisperMessageFormatter());
 }
Beispiel #4
0
        public BeneficiarySession(
            VaspContractInfo beneficiaryVaspContractInfo,
            VaspInformation beneficiaryVasp,
            string sessionId,
            string counterpartyTopic,
            string counterPartyPubSigningKey,
            string sharedKey,
            string privateSigningKey,
            IWhisperRpc whisperRpc,
            IVaspMessageHandler vaspMessageHandler,
            ITransportClient transportClient,
            ISignService signService)
            : base(
                beneficiaryVaspContractInfo,
                beneficiaryVasp,
                counterPartyPubSigningKey,
                sharedKey,
                privateSigningKey,
                whisperRpc,
                transportClient,
                signService)
        {
            this.SessionId           = sessionId;
            this.CounterPartyTopic   = counterpartyTopic;
            this._vaspMessageHandler = vaspMessageHandler;

            _messageHandlerResolverBuilder.AddHandler(typeof(TransferRequestMessage), new TransferRequestMessageHandler(
                                                          async(message, cancellationToken) =>
            {
                await _vaspMessageHandler.TransferRequestHandlerAsync(message, this);
            }));

            _messageHandlerResolverBuilder.AddHandler(typeof(TransferDispatchMessage), new TransferDispatchMessageHandler(
                                                          async(message, cancellationToken) =>
            {
                await _vaspMessageHandler.TransferDispatchHandlerAsync(message, this);
            }));

            _messageHandlerResolverBuilder.AddHandler(typeof(TerminationMessage),
                                                      new TerminationMessageHandler(async(message, token) =>
            {
                _hasReceivedTerminationMessage = true;
                await TerminateAsync(message.GetMessageCode());
            }));
        }
 public VaspSession(
     VaspContractInfo vaspContractInfo,
     VaspInformation vaspInfo,
     string counterPartyPubSigningKey,
     string sharedEncryptionKey,
     string privateSigningKey,
     IWhisperRpc whisperRpc,
     ITransportClient transportClient,
     ISignService signService)
 {
     this._vaspInfo                      = vaspInfo;
     this._vaspContractInfo              = vaspContractInfo;
     this._sessionTopic                  = TopicGenerator.GenerateSessionTopic();
     this._cancellationTokenSource       = new CancellationTokenSource();
     this._whisperRpc                    = whisperRpc;
     this._sharedKey                     = sharedEncryptionKey;
     this._privateSigningKey             = privateSigningKey;
     this._counterPartyPubSigningKey     = counterPartyPubSigningKey;
     this._messageHandlerResolverBuilder = new MessageHandlerResolverBuilder();
     this._transportClient               = transportClient;
     this._signService                   = signService;
 }
 //TODO: Get rid of Whisper completely
 private VaspClient(
     ECDH_Key handshakeKey,
     string signatureHexKey,
     VaspContractInfo vaspContractInfo,
     VaspInformation vaspInfo,
     IEthereumRpc nodeClientEthereumRpc,
     IWhisperRpc nodeClientWhisperRpc,
     IEnsProvider ensProvider,
     ITransportClient transportClient,
     ISignService signService)
 {
     this._handshakeKey            = handshakeKey;
     this._signatureKey            = signatureHexKey;
     this._vaspContractInfo        = vaspContractInfo;
     this.VaspInfo                 = vaspInfo;
     this._ethereumRpc             = nodeClientEthereumRpc;
     this._whisperRpc              = nodeClientWhisperRpc;
     this._cancellationTokenSource = new CancellationTokenSource();
     this._ensProvider             = ensProvider;
     this._transportClient         = transportClient;
     this._signService             = signService;
 }
Beispiel #7
0
        public OriginatorSession(
            Originator originator,
            VaspContractInfo originatorVaspContractInfo,
            VaspInformation originatorVasp,
            VirtualAssetsAccountNumber beneficiaryVaan,
            string beneficiaryPubSigningKey,
            string beneficiaryPubHandshakeKey,
            string sharedEncryptionKey,
            string pubEncryptionKey,
            string privateSigningKey,
            IWhisperRpc whisperRpc,
            ITransportClient transportClient,
            ISignService signService,
            IOriginatorVaspCallbacks originatorVaspCallbacks)
        //IEnsProvider ensProvider)
            : base(
                originatorVaspContractInfo,
                originatorVasp,
                beneficiaryPubSigningKey,
                sharedEncryptionKey,
                privateSigningKey,
                whisperRpc,
                transportClient,
                signService)
        {
            this._beneficiaryVaan            = beneficiaryVaan;
            this.SessionId                   = Guid.NewGuid().ToString();
            this._beneficiaryPubHandshakeKey = beneficiaryPubHandshakeKey;
            this._pubEncryptionKey           = pubEncryptionKey;
            this._originatorVaspCallbacks    = originatorVaspCallbacks;
            //this._ensProvider = ensProvider;
            this._originator = originator;

            _messageHandlerResolverBuilder.AddHandler(typeof(SessionReplyMessage),
                                                      new SessionReplyMessageHandler((sessionReplyMessage, token) =>
            {
                this.CounterPartyTopic = sessionReplyMessage.HandShake.TopicB;
                return(_originatorVaspCallbacks.SessionReplyMessageHandlerAsync(sessionReplyMessage, this));
            }));

            _messageHandlerResolverBuilder.AddHandler(typeof(TransferReplyMessage),
                                                      new TransferReplyMessageHandler((transferReplyMessage, token) =>
            {
                return(_originatorVaspCallbacks.TransferReplyMessageHandlerAsync(transferReplyMessage, this));
            }));

            _messageHandlerResolverBuilder.AddHandler(typeof(TransferConfirmationMessage),
                                                      new TransferConfirmationMessageHandler((transferDispatchMessage, token) =>
            {
                return(_originatorVaspCallbacks.TransferConfirmationMessageHandlerAsync(transferDispatchMessage,
                                                                                        this));
            }));

            _messageHandlerResolverBuilder.AddHandler(typeof(TerminationMessage),
                                                      new TerminationMessageHandler(async(message, token) =>
            {
                _hasReceivedTerminationMessage = true;

                await TerminateAsync(message.GetMessageCode());
            }));
        }
 public TransportClient(IWhisperRpc whisper, ISignService signService, IMessageFormatter messageFormatter)
 {
     _whisper          = whisper;
     _signService      = signService;
     _messageFormatter = messageFormatter;
 }