Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }
Ejemplo n.º 4
0
        /// <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;
            }
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 6
0
 public void NetErrorDeal()
 {
     this.Invoke(new Action(() =>
     {
         SingletonInfo.GetInstance().OpenScramblerReturn = 2;//表示打开密码器的预制状态
         MenuItemStopStream_Click(null, null);
         MessageBox.Show("网络异常,数据发送停止!");
     }));
 }
Ejemplo n.º 7
0
        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();
        }
Ejemplo n.º 8
0
 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;
 }
Ejemplo n.º 9
0
        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;
        }
Ejemplo n.º 10
0
        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;
            }
        }
Ejemplo n.º 11
0
        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();
        }
Ejemplo n.º 12
0
        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;
            }
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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;
            }
        }
Ejemplo n.º 15
0
        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];
                    }
                }
            }
        }