Beispiel #1
0
        private BankRawMessage TranslateZoneKeys(NetworkManagementModel model, Session2805Data data, HostCryptography hostCrypt)
        {
            var    value       = model.AddtlDataPriv;
            string zak         = value.Substring(0, 32);
            string zpk         = value.Substring(32);
            int    node_number = model.SecControlInfo;

            _log.Info("Keys received under ZMK. ZAK = " + zak + " and ZPK = " + zpk);

            Dictionary <string, string> zoneKeySet2 = hostCrypt.TranslateSetOfZoneKeys(KEKr, zpk, zak, "11111111111111111111111111111111");

            if (zoneKeySet2["ErrorCode"] == "00")
            {
                data.UpdateSession_Recieve_as2805(zoneKeySet2["ZPK(LMK)"], zpk, zoneKeySet2["ZPK Check Value"], zoneKeySet2["ZAK(LMK)"], zak, zoneKeySet2["ZAK Check Value"], zoneKeySet2["ZEK(LMK)"], zoneKeySet2["ZEK Check Value"], node_number.ToString());

                _log.Info("Sent keys under LMK : ZAK : " + zoneKeySet2["ZAK(LMK)"] + " ZAK check value : " + zoneKeySet2["ZAK Check Value"] + "ZPK : " + zoneKeySet2["ZPK(LMK)"] + "ZPK Check Value : " + zoneKeySet2["ZPK Check Value"]);

                model.Mti            = "0830";
                model.RespCode       = "00";
                model.NetMgtInfoCode = "101";
                model.AddtlDataPriv  = zoneKeySet2["ZAK Check Value"] + zoneKeySet2["ZPK Check Value"];

                _log.Info("Sending key exchange response");
                return(new BankRawMessage(_responseBuilder.NetworkManagementAdviceResponse(model)));
            }

            _log.Error("Error Translating Set of Zone Keys");
            zoneKeySet2.Clear();
            SetState(SimulatorStates.Disconnect);
            model.RespCode = "30";
            return(new BankRawMessage(_responseBuilder.NetworkManagementAdviceResponse(model)));
        }
Beispiel #2
0
        private BankRawMessage GenerateZoneKeys(NetworkManagementModel model, HostCryptography hostCrypt)
        {
            _zoneKeySet1 = hostCrypt.GenerateSetOfZoneKeys(_keKs);
            if (_zoneKeySet1["ErrorCode"] == "00")
            {
                model.Mti           = "0820";
                model.Stan          = _rrnSequence.GetStan;
                model.AddtlDataPriv = _zoneKeySet1["ZAK(ZMK)"].Substring(1) +
                                      _zoneKeySet1["ZPK(ZMK)"].Substring(1);
                model.Mti            = "0820";
                model.FwdInstIdCode  = 579944;
                model.RecvInstIdCode = 61100016;
                model.NetMgtInfoCode = "101";
                int nodeNumber = model.SecControlInfo;
                using (Session2805Data data = new Session2805Data())
                {
                    data.UpdateSession_Send_as2805(_zoneKeySet1["ZPK(LMK)"], _zoneKeySet1["ZPK(ZMK)"],
                                                   _zoneKeySet1["ZPK Check Value"], _zoneKeySet1["ZAK(LMK)"], _zoneKeySet1["ZAK(ZMK)"],
                                                   _zoneKeySet1["ZAK Check Value"], _zoneKeySet1["ZEK(LMK)"], _zoneKeySet1["ZEK(ZMK)"],
                                                   _zoneKeySet1["ZEK Check Value"], nodeNumber.ToString());
                    _log.Info("GenerateZoneKeys under LMK : ZAK : " + _zoneKeySet1["ZAK(LMK)"] + " ZAK check value : " +
                              _zoneKeySet1["ZAK Check Value"] + "ZPK : " + _zoneKeySet1["ZPK(LMK)"] +
                              "ZPK Check Value : " + _zoneKeySet1["ZPK Check Value"]);
                }

                return(new BankRawMessage(_responseBuilder.NetworkManagementAdviceRequest(model)));
            }
            _log.Error("0820 _keKs Validation Request Error");
            throw new InvalidOperationException("0820 _keKs Validation Request Error");
        }
Beispiel #3
0
        public void TranslateZoneKeys(string kekr)
        {
            var    value       = this.AddtlDataPriv;
            string zak         = value.Substring(0, 32);
            string zpk         = value.Substring(32);
            int    node_number = this.SecControlInfo;

            _log.Info("Keys received under ZMK. ZAK = " + zak + " and ZPK = " + zpk);

            var hostCrypt = new HostCryptography();

            _log.Debug("Translating Zone Keys");
            Dictionary <string, string> zoneKeySet2 = hostCrypt.TranslateSetOfZoneKeys(kekr, zpk, zak, "11111111111111111111111111111111");

            using (Session2805Data data = new Session2805Data())
            {
                if (zoneKeySet2["ErrorCode"] == "00")
                {
                    data.UpdateSession_Recieve_as2805(zoneKeySet2["ZPK(LMK)"], zpk, zoneKeySet2["ZPK Check Value"], zoneKeySet2["ZAK(LMK)"], zak, zoneKeySet2["ZAK Check Value"], zoneKeySet2["ZEK(LMK)"], zoneKeySet2["ZEK Check Value"], node_number.ToString());
                    _log.Info("Sent keys under LMK : ZAK : " + zoneKeySet2["ZAK(LMK)"] + " ZAK check value : " + zoneKeySet2["ZAK Check Value"] + "ZPK : " + zoneKeySet2["ZPK(LMK)"] + "ZPK Check Value : " + zoneKeySet2["ZPK Check Value"]);
                    this.Mti            = "0830";
                    this.NetMgtInfoCode = "101";
                    this.RespCode       = "00";
                    this.AddtlDataPriv  = zoneKeySet2["ZAK Check Value"] + zoneKeySet2["ZPK Check Value"];
                    _log.Info("Sending key exchange response");
                }
                else
                {
                    _log.Error("Error Translating Set of Zone Keys");
                    zoneKeySet2.Clear();
                    this.RespCode = "30";
                }
            }
        }
Beispiel #4
0
        public void FinaliseKeyExchange()
        {
            NetworkManagementModel model = _baseModel as NetworkManagementModel;

            using (Session2805Data data = new Session2805Data())
            {
                ValidateKeyExchangeResponse(model, data);
            }
        }
Beispiel #5
0
 public CoreService()
 {
     _responseBuilder = new PartnerMessageBuilder();
     using (Session2805Data data = new Session2805Data())
     {
         _keKs = data.GetKeks_Send().Keks;
         _keKr = data.GetKekr_Send().Kekr;
     }
 }
Beispiel #6
0
        private bool FinaliseKeyExchange()
        {
            NetworkManagementModel model = _lastReceivedMessageFromBank as NetworkManagementModel;

            using (Session2805Data data = new Session2805Data())
            {
                return(ValidateKeyExchangeResponse(model, data));
            }
        }
Beispiel #7
0
        public BankRawMessage GenerateKeyExchangeRequest()
        {
            NetworkManagementModel model = _baseModel as NetworkManagementModel;

            using (Session2805Data data = new Session2805Data())
            {
                HostCryptography hostCrypt = new HostCryptography();
                _log.Debug("Generating Zone Keys");
                return(GenerateZoneKeys(model, data, hostCrypt));
            }
        }
Beispiel #8
0
        public BankRawMessage GenerateSignOnResponse()
        {
            NetworkManagementModel model = _baseModel as NetworkManagementModel;

            using (Session2805Data data = new Session2805Data())
            {
                HostCryptography hostCrypt = new HostCryptography();
                _log.Debug("Generating Validation Response");
                return(GenerateValidationResponse(model, data, hostCrypt));
            }
        }
Beispiel #9
0
 public BankingCoreService()
 {
     CurrentState     = HostState.Disconnected;
     _factory         = new Factory();
     _responseBuilder = new BankMessageBuilder();
     using (Session2805Data data = new Session2805Data())
     {
         _keKs = data.GetKeks_Send().Keks;
         _keKr = data.GetKekr_Send().Kekr;
     }
 }
Beispiel #10
0
        public SimulatorCoreService()
        {
            //_hostState = SimulatorStates.Disconnect;
            _factory         = new Factory();
            _responseBuilder = new PartnerMessageBuilder();

            using (Session2805Data data = new Session2805Data())
            {
                KEKs = data.GetKeks_Send().Keks;
                KEKr = data.GetKekr_Send().Kekr;
            }
        }
Beispiel #11
0
        private void ValidateKeyExchangeResponse(NetworkManagementModel network, Session2805Data data)
        {
            string value     = network.AddtlDataPriv;
            string KMACs_KVC = value.Substring(0, 6);
            string KPEs_KVC  = value.Substring(6);

            int node_number = network.SecControlInfo;

            _log.Info("KMACs_KVC : " + KMACs_KVC + " KPEs_KVC : " + KPEs_KVC);

            if (KMACs_KVC == _zoneKeySet1["ZAK Check Value"] && KPEs_KVC == _zoneKeySet1["ZPK Check Value"])
            {
                _log.Info("Key exchange successfull. Check values match. ZAK Check value :" + _zoneKeySet1["ZAK Check Value"] + " ZPK Check value : " + _zoneKeySet1["ZPK Check Value"]);
                data.UpdateSession_Send_as2805(_zoneKeySet1["ZPK(LMK)"], _zoneKeySet1["ZPK(ZMK)"], _zoneKeySet1["ZPK Check Value"], _zoneKeySet1["ZAK(LMK)"], _zoneKeySet1["ZAK(ZMK)"], _zoneKeySet1["ZAK Check Value"], _zoneKeySet1["ZEK(LMK)"], _zoneKeySet1["ZEK(ZMK)"], _zoneKeySet1["ZEK Check Value"], node_number.ToString());
                _log.Info("Log on Successfull");
            }
            SetState(SimulatorStates.Connected);
        }
Beispiel #12
0
 public void SetZoneKeys(Dictionary <string, string> zoneKeySet1, int stan)
 {
     if (zoneKeySet1["ErrorCode"] == "00")
     {
         this.Stan          = stan;
         this.AddtlDataPriv = zoneKeySet1["ZAK(ZMK)"].Substring(1) +
                              zoneKeySet1["ZPK(ZMK)"].Substring(1);
         using (Session2805Data data = new Session2805Data())
         {
             int node_number = this.SecControlInfo;
             data.UpdateSession_Send_as2805(zoneKeySet1["ZPK(LMK)"], zoneKeySet1["ZPK(ZMK)"],
                                            zoneKeySet1["ZPK Check Value"], zoneKeySet1["ZAK(LMK)"], zoneKeySet1["ZAK(ZMK)"],
                                            zoneKeySet1["ZAK Check Value"], zoneKeySet1["ZEK(LMK)"], zoneKeySet1["ZEK(ZMK)"],
                                            zoneKeySet1["ZEK Check Value"], node_number.ToString());
             _log.Info("Sent keys under LMK : ZAK : " + zoneKeySet1["ZAK(LMK)"] + " ZAK check value : " +
                       zoneKeySet1["ZAK Check Value"] + "ZPK : " + zoneKeySet1["ZPK(LMK)"] + "ZPK Check Value : " +
                       zoneKeySet1["ZPK Check Value"]);
         }
     }
 }
Beispiel #13
0
        public void FinaliseKeyExchange(NetworkManagementModel model)
        {
            string value    = model.AddtlDataPriv;
            string kmaCsKvc = value.Substring(0, 6);
            string kpEsKvc  = value.Substring(6);

            int nodeNumber = model.SecControlInfo;

            _log.Info("KMACs_KVC : " + kmaCsKvc + " KPEs_KVC : " + kpEsKvc);

            if (kmaCsKvc == _zoneKeySet1["ZAK Check Value"] && kpEsKvc == _zoneKeySet1["ZPK Check Value"])
            {
                _log.Info("Key exchange successfull. Check values match. ZAK Check value :" + _zoneKeySet1["ZAK Check Value"] + " ZPK Check value : " + _zoneKeySet1["ZPK Check Value"]);
                using (Session2805Data data = new Session2805Data())
                {
                    data.UpdateSession_Send_as2805(_zoneKeySet1["ZPK(LMK)"], _zoneKeySet1["ZPK(ZMK)"], _zoneKeySet1["ZPK Check Value"], _zoneKeySet1["ZAK(LMK)"], _zoneKeySet1["ZAK(ZMK)"], _zoneKeySet1["ZAK Check Value"], _zoneKeySet1["ZEK(LMK)"], _zoneKeySet1["ZEK(ZMK)"], _zoneKeySet1["ZEK Check Value"], nodeNumber.ToString());
                }
                _log.Info("Log on Successfull");
            }
        }
Beispiel #14
0
        private BankRawMessage GenerateValidationRequest(NetworkManagementModel model, Session2805Data data, HostCryptography hostCrypt)
        {
            _log.Debug("Building 0800");
            //build 0800

            var keksValidationRequest = hostCrypt.Generate_KEKs_Validation_Request(KEKs);

            if (keksValidationRequest["ErrorCode"] == "00")
            {
                string krsSent;
                keksValidationRequest.TryGetValue("KRs", out krsSent);
                model.Mti            = "0800";
                model.Stan           = _rrnSequence.GetStan;
                model.FwdInstIdCode  = 579944;
                model.NetMgtInfoCode = "001";
                model.RecvInstIdCode = 61001001;
                model.AddtlDataPriv  = krsSent;


                return(new BankRawMessage(_responseBuilder.NetworkManagementRequest(model)));
            }
            _log.Error("0800 KEKs Validation Request Error");
            throw new InvalidOperationException("0800 KEKs Validation Request Error");
        }
Beispiel #15
0
        private BankRawMessage GenerateValidationResponse(NetworkManagementModel model, Session2805Data data,
                                                          HostCryptography hostCrypt)
        {
            _log.Debug("Building 0810");
            //build 0810


            var krsReceived        = model.AddtlDataPriv;
            var validationResponse = hostCrypt.Generate_KEKr_Validation_Response(KEKr, krsReceived);

            if (validationResponse["ErrorCode"] == "00")
            {
                model.Mti            = "0810";
                model.AddtlDataPriv  = validationResponse["KRr"];
                model.RespCode       = "00";
                model.NetMgtInfoCode = "001";
                return(new BankRawMessage(_responseBuilder.NetworkManagementResponse(model)));
            }

            _log.Error("0810 KRr Response Error");
            model.RespCode = "30"; //format error
            return(new BankRawMessage(_responseBuilder.NetworkManagementResponse(model)));
        }