public EBMMain() { InitializeComponent(); AdminAccount = true; UpdateFormTitle(""); string path = AppDomain.CurrentDomain.BaseDirectory; ConfigFile.Instanse.fileName = @path + "EBMTest.cfg"; SingletonInfo.GetInstance().InlayCA.SignCounter = Convert.ToInt32(cf["SignCounter"].ToString()); SingletonInfo.GetInstance().IsProtocolGX = cf["IsProtocolGX"].ToString() == "1" ? true : false;// 1表示广西协议(true) 2表示国标协议(false) IsStartStream = false; EbmStream = new EBMStream(); MenuItemTSSetting_Click(MenuItemTSSetting, EventArgs.Empty); formStreamSet.WindowState = FormWindowState.Minimized; InitTable(); InitEBStream(); //if (formIndex == null || formIndex.IsDisposed) //{ // formIndex = new EBMIndex(); //} //formIndex.MdiParent = this; //formIndex.Visible = false; calcel = new Calcle(); calcel.MyEvent += new Calcle.MyDelegate(NetErrorDeal); InitStreamTable(); this.Load += EBMMain_Load; }
public bool GetlistContentTable(ref List <EBContentTable> oldTableList) { try { oldTableList.Clear(); foreach (EBContent_AllData item in EBContent_List_AllData) { EBContentTable pp = new EBContentTable(); pp.ProtocolGX = SingletonInfo.GetInstance().IsProtocolGX; List <MultilangualContent> listMulti = GetSendMultilangualContentNew(item.EBContentList); if (listMulti == null || listMulti.Count == 0) { // return false; continue; } pp.list_multilangual_content = listMulti; pp.S_EBM_id = item.EBM_ID; pp.Repeat_times = pnlRepeatTimes.GetRepeatTimes(); pp.Table_id = 0xfe; pp.Table_id_extension = 0; oldTableList.Add(pp); } return(true); } catch (Exception ex) { Console.WriteLine(ex.Message + ex.StackTrace); return(false); } }
private void MenuItemStartStream_Click(object sender, EventArgs e) { try { if (cf["IsCASet"].ToString() == "0") { MessageBox.Show("请先设置CA信息!"); return; } InitEBStream(); if (EbmStream != null && isInitStream && !IsStartStream) { //发送数据 EbmStream.StartStreaming(); IsStartStream = true; if (formDailyBroadcast != null && !formDailyBroadcast.IsDisposed) { formDailyBroadcast.InitColumnStop(true); } Thread thread = new Thread(UpdateDataText); thread.IsBackground = true; thread.Start(); } SingletonInfo.GetInstance().IsStartSend = true; } catch (Exception) { throw; } }
/// <summary> /// 弹出CA选择界面 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripCAName_Click(object sender, EventArgs e) { try { if (SingletonInfo.GetInstance().IsStartSend) //在发送数据状态提示用户会停止数据的发送 { if (MessageBox.Show("修改CA将导致数据停止发送,是否确定继续操作?", @"提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { MenuItemStopStream_Click(null, null); } else { return; } } CloseScrambler(); if (formCASet == null || formCASet.IsDisposed) { formCASet = new EBMCASet(); formCASet.CASetEvent += new EBMCASet.CASetDelegate(OpenScrambler);//监听formCASet事件 // formCASet.ff += new EBMCASet.CASetDelegate(OpenScrambler); } formCASet.MdiParent = this; formCASet.cmbCAname.SelectedValue = SingletonInfo.GetInstance().scramblernum; formCASet.Show(); } catch (Exception) { throw; } }
void EBMCASet_Load(object sender, EventArgs e) { Dictionary <object, object> dict = new Dictionary <object, object>(); dict.Add("江南天安", 1); dict.Add("内置CA", 5); ComboBind.Binding(cmbCAname, dict); EBCert tmp = SingletonInfo.GetInstance().InlayCA.GetEBCert(0);//0表示CA_CERT InlayCAPBK = tmp.Cert; EBCert tmp1 = SingletonInfo.GetInstance().InlayCA.GetEBCert(1); //1表示PL_CERT EBCert tmp2 = SingletonInfo.GetInstance().InlayCA.GetEBCert(2); //2表示PL_CERTNew InLayPLPBK = tmp1.Cert; InLayPLPBKNew = tmp2.Cert; chbUseSignature.Checked = cf["IsUseCA"].ToString() == "1" ? true : false; cmbCAname.SelectedValue = Convert.ToInt32(cf["CAtype"].ToString()); if (Convert.ToInt32(cmbCAname.SelectedValue) == 5) //内置CA { panelInlayCA.Visible = true; switch (cf["InlayCA"].ToString()) { case "0": chbCAsignature.Checked = true; textPublicKey.Text = InlayCAPBK; break; case "1": chbplatformsignature.Checked = true; textPublicKey.Text = InLayPLPBK; break; case "2": chbplatformsignatureNew.Checked = true; textPublicKey.Text = InLayPLPBKNew; break; } } else { panelInlayCA.Visible = false; } chbCheckSignature.Checked = cf["CheckSignature"].ToString() == "1" ? true : false; }
public void NetErrorDeal() { this.Invoke(new Action(() => { SingletonInfo.GetInstance().OpenScramblerReturn = 2;//表示打开密码器的预制状态 MenuItemStopStream_Click(null, null); MessageBox.Show("网络异常,数据发送停止!"); })); }
private void EBMMain_FormClosing(object sender, FormClosingEventArgs e) { cf["IsCASet"] = "0"; if (EbmStream != null && IsStartStream) { EbmStream.StopStreaming(); CloseScrambler(); IsStartStream = false; } cf["SignCounter"] = SingletonInfo.GetInstance().InlayCA.SignCounter.ToString(); }
private void InitTable() { EB_Index_Table.Table_id = 0xfd; EB_Index_Table.Table_id_extension = 0; EB_Content_Table.Table_id = 0xfe; EB_Content_Table.Table_id_extension = 0; Daily_Broadcast_Table.Table_id = 0xfa; Daily_Broadcast_Table.Table_id_extension = 0; EB_CertAuth_Table.Table_id = 0xfc; EB_CertAuth_Table.Table_id_extension = 0; EbmStream.EB_Index_Table = EB_Index_Table; EbmStream.EB_Index_Table.ProtocolGX = SingletonInfo.GetInstance().IsProtocolGX; }
private void MenuItemStopStream_Click(object sender, EventArgs e) { if (EbmStream != null && IsStartStream) { EbmStream.StopStreaming(); IsStartStream = false; if (formDailyBroadcast != null && !formDailyBroadcast.IsDisposed) { formDailyBroadcast.InitColumnStop(false); } } SingletonInfo.GetInstance().IsStartSend = false; }
private void OpenScrambler() { switch (SingletonInfo.GetInstance().scramblernum) { case 0: //未开密码器 break; case 1: //开启江南天安的密码器 int nReturn = SingletonInfo.GetInstance().usb.USB_OpenDevice(ref phDeviceHandle); if (nReturn != 0) { LogRecord.WriteLogFile("天安密码器打开失败!"); MessageBox.Show("密码器打开失败!"); } else { SingletonInfo.GetInstance().DeviceHandle = (int)phDeviceHandle; LogRecord.WriteLogFile("天安密码器打开成功!"); } break; case 2: //开启江南科友密码器 // IPAddress ip = IPAddress.Parse("127.0.0.1"); // IPEndPoint point = new IPEndPoint(ip, 8100); socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint point = new IPEndPoint(IPAddress.Parse("192.168.4.51"), 1818); socketSend.Connect(point); //开启新的线程,不停的接收服务器发来的消息 Thread c_thread = new Thread(Received); c_thread.IsBackground = true; c_thread.Start(); string msg = "\0\n12345678NC"; byte[] buffer = new byte[2048]; buffer = Encoding.Default.GetBytes(msg); socketSend.Send(buffer); break; case 5: //调用内部CA接口 不需要打开密码器 break; } }
public void InitStreamTable() { //设置需要发送的表 if (formDailyBroadcast != null) { EbmStream.Daily_Broadcast_Table = formDailyBroadcast.GetDailyBroadcastTable(ref Daily_Broadcast_Table) ? Daily_Broadcast_Table : null; } if (formIndex != null) { formIndex.GetEBIndexTable(ref EB_Index_Table); EbmStream.EB_Index_Table = EB_Index_Table; } //if (formConfigure != null) //{ // EbmStream.EB_Configure_Table = formConfigure.GetConfigureTable(ref EB_Configure_Table) ? EB_Configure_Table : null; //} if (formContent != null) { EbmStream.list_EB_Content_Table = formContent.GetlistContentTable(ref list_EB_Content_Table) ? list_EB_Content_Table : null; } if (formCertAuth != null) { EbmStream.EB_CertAuth_Table = formCertAuth.GetCertAuthTable(ref EB_CertAuth_Table) ? EB_CertAuth_Table : null; } if (SingletonInfo.GetInstance().IsUseCAInfo) { EbmStream.SignatureCallbackRef = new EBMStream.SignatureCallBackDelegateRef(calcel.SignatureFunc);//每次在 Initialization()之前调用 } else { EbmStream.SignatureCallbackRef = null; } EbmStream.Initialization(); isInitStream = true; if (thread != null) { thread.Abort(); } thread = new Thread(UpdateDataText); thread.IsBackground = true; thread.Start(); }
private void CloseScrambler() { switch (SingletonInfo.GetInstance().scramblernum) { case 0: //未开密码器 可直接关闭 break; case 1: int nDeviceHandle = (int)phDeviceHandle; int nReturn = SingletonInfo.GetInstance().usb.USB_CloseDevice(ref nDeviceHandle); SingletonInfo.GetInstance().OpenScramblerReturn = 2; //关闭江南天安的密码器 break; case 2: //关闭江南科友密码器 break; } }
private List <EBIndex> GetSendEBMIndex() { if (EBIndex_List.Count == 0) { return(null); } List <EBIndex> list = new List <EBIndex>(); foreach (var index in EBIndex_List) { if (index.SendState) { index.EBIndex.ProtocolGX = SingletonInfo.GetInstance().IsProtocolGX; list.Add(index.EBIndex); if (!index.DesFlag) { list[list.Count - 1].DetlChlDescriptor = null; } } } return(list); }
private void btnOK_Click(object sender, EventArgs e) { try { if (Convert.ToInt32(cmbCAname.SelectedValue) == 5) { if (chbplatformsignature.Checked == false && chbCAsignature.Checked == false && chbplatformsignatureNew.Checked == false) { MessageBox.Show("请勾选平台证书签名/CA签名!"); return; } if (chbplatformsignatureNew.Checked) { SingletonInfo.GetInstance().InlayCAType = 2; } if (chbplatformsignature.Checked) { SingletonInfo.GetInstance().InlayCAType = 1; } if (chbCAsignature.Checked) { SingletonInfo.GetInstance().InlayCAType = 0; } } if (chbCheckSignature.Checked) { SingletonInfo.GetInstance().ischecksignature = true; } else { SingletonInfo.GetInstance().ischecksignature = false; } if (SingletonInfo.GetInstance().OpenScramblerReturn != 0) { SingletonInfo.GetInstance().scramblernum = Convert.ToInt32(cmbCAname.SelectedValue); if (CASetEvent != null) { CASetEvent();//引发事件 } } SingletonInfo.GetInstance().IsUseCAInfo = chbUseSignature.Checked; //是否启用签名 cf["IsCAInfoSet"] = "1"; cf["IsUseCA"] = chbUseSignature.Checked ? "1" : "0"; if (!chbUseSignature.Checked) { //初始化 } cf["CAtype"] = Convert.ToInt32(cmbCAname.SelectedValue).ToString(); if (Convert.ToInt32(cmbCAname.SelectedValue) == 5) { if (chbplatformsignatureNew.Checked) { cf["InlayCA"] = "2"; } if (chbplatformsignature.Checked)//平台签名 { cf["InlayCA"] = "1"; } if (chbCAsignature.Checked) { cf["InlayCA"] = "0"; } } cf["CheckSignature"] = chbCheckSignature.Checked ? "1" : "0"; cf["IsCASet"] = "1"; if (checkBox1.Checked) { SingletonInfo.GetInstance().manuAddCert_sn = true; SingletonInfo.GetInstance().CurrentCert_SN = txtCert_sn.Text; EBCert tmp = new EBCert(); tmp.Cert_sn = SingletonInfo.GetInstance().CurrentCert_SN; switch (tmp.Cert_sn) { case "000000000007": tmp.PriKey = "57C6140969FE97A75C3C7AFBFDCDFA3951147BF6EE7FC391AABAA8721FEA9AB0"; tmp.PubKey = "B086AA7AFBACBD9C81A7717BD4C493291EA0EDACD1ADEF1A4AB05BD14BBF1F4A78A195559C02D0195C1675BC6CF817CCB32A675BCAE12C52C672840C377C50C2"; break; case "000000000008": tmp.PriKey = "E884E9313BACCC26F393B21FCF992E73A6FE359D86149EB573EF47A7FF82B0E3"; tmp.PubKey = "4DE92C85B9104476298D61D8A8BE570D8A00D60F30BD2254D5DFEEC7A873A5DB63FD5936E4EB35F6AA8EECBB85346ADEA08F406BFD3D2C11548431D57A6FDF6F"; break; case "000000000009": tmp.PriKey = "1208B7BBACB1265EF100DBB2C0F9E55820EA4FAEEECB54B00F3EBE665398CE95"; tmp.PubKey = "4466BFA3C0CF3342F4970FCBEA10A95A439B8D9DB4AC90BB123FBC2E500418DA7BB039EB63FA27C8A91C3C51CF4FCE109C501DDE9456615A13E7C159FBFF8B73"; break; } int index = SingletonInfo.GetInstance().InlayCA.AddEBCert(tmp); SingletonInfo.GetInstance().DicCert.Add(tmp.Cert_sn, index); } Close(); } catch (Exception ex) { throw; } }
public void SignatureFunc(byte[] pdatabuf, int datalen, ref int random, ref byte[] signature) { byte[] strSignture = new byte[100]; byte[] pucSignature = pdatabuf; if (!SingletonInfo.GetInstance().manuAddCert_sn) { switch (SingletonInfo.GetInstance().scramblernum) { case 1: int nDeviceHandle = SingletonInfo.GetInstance().DeviceHandle; string eturn = SingletonInfo.GetInstance().usb.Platform_CalculateSingature_String(nDeviceHandle, 1, pucSignature, pucSignature.Length, ref strSignture); strSignture.CopyTo(signature, 0); if (eturn == "NetError") { MyEvent(); //引发事件 提示主界面 } break; case 5: //switch (SingletonInfo.GetInstance().InlayCAType) //{ // case 0: // SingletonInfo.GetInstance().InlayCA.EbMsgCASign(pdatabuf, datalen, ref random, ref signature); // break; // case 1: // SingletonInfo.GetInstance().InlayCA.EbMsgPLSign(pdatabuf, datalen, ref random, ref signature); // break; // case 2: // SingletonInfo.GetInstance().InlayCA.EbMsgSign(pdatabuf, datalen,ref random, ref signature,2); // break; //} SingletonInfo.GetInstance().InlayCA.EbMsgSign(pdatabuf, datalen, ref random, ref signature, SingletonInfo.GetInstance().InlayCAType); break; } } else { int certindex = SingletonInfo.GetInstance().DicCert[SingletonInfo.GetInstance().CurrentCert_SN]; SingletonInfo.GetInstance().InlayCA.EbMsgSign(pdatabuf, datalen, ref random, ref signature, certindex); } string strData = null; for (int i = 0; i < pucSignature.Length; i++) { strData += " " + pucSignature[i].ToString("X2"); } LogRecord.WriteLogFile("原文:" + strData); string strData2 = null; for (int i = 0; i < signature.Length; i++) { strData2 += " " + signature[i].ToString("X2"); } LogRecord.WriteLogFile("签名数据:" + strData2); if (SingletonInfo.GetInstance().ischecksignature) { DateTime dt = DateTime.UtcNow; string tt = UtcHelper.ConvertDateTimeInt(dt).ToString(); byte[] byteArray = System.Text.Encoding.Default.GetBytes(tt); if (byteArray.Length > 0 && byteArray.Length < 64) { for (int i = 0; i < byteArray.Length; i++) { signature[10 + i] = byteArray[i]; } } } }