Beispiel #1
0
        public void ValidMarketDaySignatureTest()
        {
            //Prepare
            var stock1 = new ValuatedStock()
            {
                Symbol = "STK1",
                Name   = "Stock 1",
                Open   = 1,
                High   = 2,
                Low    = 3,
                Close  = 4,
                Volume = 5
            };
            var stock2 = new ValuatedStock()
            {
                Symbol = "STK2",
                Name   = "Stock 2",
                Open   = 6,
                High   = 7,
                Low    = 8,
                Close  = 9,
                Volume = 10
            };

            ValuatedStock[] stocks = { stock1, stock2 };

            var    marketDay = new MarketDay("testDay", stocks);
            string signature = SigServe.GetSignature(marketDay);

            var isVerified = SigServe.VerifySignature(marketDay, signature);

            Assert.IsTrue(isVerified);
        }
        /// <summary>
        /// Generates the request to be send
        /// </summary>
        /// <param name="webHookWorkItem"></param>
        /// <returns></returns>
        protected virtual HttpRequestMessage CreateRequest(IWebHookWorkItem webHookWorkItem)
        {
            var serializedBody = JsonConvert.SerializeObject(webHookWorkItem.Notification.Payload);

            var request = new HttpRequestMessage(HttpMethod.Post, webHookWorkItem.WebHook.Callback);

            AddHeaders(webHookWorkItem, request, SignatureService.GetSignature(webHookWorkItem.WebHook.Secret, serializedBody));
            request.Content = new StringContent(serializedBody, Encoding.UTF8, "application/json");

            return(request);
        }
        public void ValidSignatureTest()
        {
            var key = SignatureService.GenerateKeys(1024);

            SignatureService.PublicKey  = (RsaKeyParameters)(key.Public);
            SignatureService.PrivateKey = (RsaKeyParameters)(key.Private);
            var sigServe = new SignatureService();

            var stock1 = new ValuatedStock();
            var stock2 = new ValuatedStock();

            ValuatedStock[] stocks = { stock1, stock2 };
            var             date   = "1990-02-29";

            var marketDay        = new MarketDay(date, stocks);
            var marketDaySig     = sigServe.GetSignature(marketDay);
            var stockPriceUpdate = new StockPriceUpdate(marketDay)
            {
                StockListSignature = marketDaySig
            };

            var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig);

            Assert.IsTrue(isOriginalValid);

            var serializedMessage   = stockPriceUpdate.Encode();
            var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate;

            MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList));

            var StocksList_original     = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(stockPriceUpdate.SerializedStockList));
            var StocksList_deserialized = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList));

            var isDeserializedValid = sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature);

            Assert.IsTrue(isDeserializedValid);



            Assert.AreEqual(StocksList_original.TradedCompanies.Count, StocksList_deserialized.TradedCompanies.Count);
            Assert.AreEqual(StocksList_original.Date, StocksList_deserialized.Date);
            Assert.IsTrue(sigServe.VerifySignature(StocksList_deserialized, deserializedMessage.StockListSignature));
        }
        public override Envelope Prepare()
        {
            Log.Debug($"{nameof(Prepare)} (enter)");

            var sigServ = new SignatureService();

            var message = MessageFactory.GetMessage <StockPriceUpdate>(Config.GetInt(Config.STOCK_SERVER_PROCESS_NUM), 0) as StockPriceUpdate;

            message.ConversationID      = Conversation.Id;
            message.SerializedStockList = Convert.ToBase64String(sigServ.Serialize(DayData));
            message.StockListSignature  = sigServ.GetSignature(DayData);

            var env = new Envelope(message)
            {
                To = this.To
            };

            Log.Debug($"{nameof(Prepare)} (exit)");
            return(env);
        }
        public void InvalidSignatureTest()
        {
            var key = SignatureService.GenerateKeys(1024);

            SignatureService.PublicKey  = (RsaKeyParameters)(key.Public);
            SignatureService.PrivateKey = (RsaKeyParameters)(key.Private);
            var sigServe = new SignatureService();

            var stock1 = new ValuatedStock();
            var stock2 = new ValuatedStock();

            ValuatedStock[] stocks = { stock1, stock2 };
            var             date   = "1990-02-29";

            var marketDay        = new MarketDay(date, stocks);
            var marketDaySig     = sigServe.GetSignature(marketDay);
            var stockPriceUpdate = new StockPriceUpdate(marketDay)
            {
                StockListSignature = marketDaySig
            };

            var isOriginalValid = sigServe.VerifySignature(marketDay, marketDaySig);

            Assert.IsTrue(isOriginalValid);

            var serializedMessage   = stockPriceUpdate.Encode();
            var deserializedMessage = MessageFactory.GetMessage(serializedMessage, false) as StockPriceUpdate;

            //"currupt" signature
            deserializedMessage.StockListSignature = deserializedMessage.StockListSignature.Replace(deserializedMessage.StockListSignature.Substring(0, 5), "fffff");

            MarketDay deserializedDay = sigServ.Deserialize <MarketDay>(Convert.FromBase64String(deserializedMessage.SerializedStockList));

            var isDeserializedValid = sigServe.VerifySignature(deserializedDay, deserializedMessage.StockListSignature);

            Assert.IsFalse(isDeserializedValid);
        }
Beispiel #6
0
        /// <summary>
        /// Apply signature to the HttpRequestMessage
        /// </summary>
        /// <param name="webHook"></param>
        /// <param name="request"></param>
        /// <param name="serializedBody"></param>
        protected virtual void SignRequest(IWebHook webHook, HttpRequestMessage request, string serializedBody)
        {
            var signature = SignatureService.GetSignature(webHook.Secret, serializedBody);

            request.Headers.Add(SignatureHeader, signature);
        }