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))); }
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"); }
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"; } } }
public void FinaliseKeyExchange() { NetworkManagementModel model = _baseModel as NetworkManagementModel; using (Session2805Data data = new Session2805Data()) { ValidateKeyExchangeResponse(model, data); } }
public CoreService() { _responseBuilder = new PartnerMessageBuilder(); using (Session2805Data data = new Session2805Data()) { _keKs = data.GetKeks_Send().Keks; _keKr = data.GetKekr_Send().Kekr; } }
private bool FinaliseKeyExchange() { NetworkManagementModel model = _lastReceivedMessageFromBank as NetworkManagementModel; using (Session2805Data data = new Session2805Data()) { return(ValidateKeyExchangeResponse(model, data)); } }
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)); } }
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)); } }
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; } }
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; } }
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); }
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"]); } } }
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"); } }
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"); }
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))); }