Example #1
0
        /// <summary>
        ///     The method Get Signed PDF.
        /// </summary>
        /// <param name="data">
        /// The byte array[]
        /// </param>
        /// <returns>
        ///     The <see cref="byte[]" />.
        /// </returns>
        public byte[] GetSignedPDF(byte[] data)
        {
            DateTime startTime = _logger.MethodTraceStartTime();
            PDFSign  pdfSign   = Const.pdfSignPool.Rent() as PDFSign;

            if (Const.certificateInfo == null)
            {
                try
                {
                    CertificateInfo certificateInfo = Const.certificateInfo = new CertificateInfo();
                    string          reason          = ConfigurationManager.AppSettings["SIGN_REASON"];
                    _logger.WriteDebug(String.Format("Reason :{0}", reason));
                    string location = ConfigurationManager.AppSettings["SIGN_LOCATION"];
                    _logger.WriteDebug(String.Format("Location :{0}", location));
                    string password = ConfigurationManager.AppSettings["PASSWORD"];
                    _logger.WriteDebug(String.Format("Password :{0}", password));
                    //string certificatePath = HttpContext.Current.Server.MapPath("~")+ConfigurationManager.AppSettings["CERTIFICATE_PATH"];
                    string certificatePath = ConfigurationManager.AppSettings["CERTIFICATE_PATH"];
                    _logger.WriteDebug(String.Format("Certificate Path :{0}", certificatePath));
                    //certificatePath =HttpContext.Current.Server.MapPath("~")+certificatePath;
                    certificatePath = HostingEnvironment.ApplicationPhysicalPath + certificatePath;
                    _logger.WriteDebug(String.Format("Final Certificate Path :{0}", certificatePath));
                    certificateInfo.Location        = location;
                    certificateInfo.Password        = password;
                    certificateInfo.Reason          = reason;
                    certificateInfo.CertificatePath = certificatePath;
                    if (!String.IsNullOrWhiteSpace(certificateInfo.CertificatePath) || !String.IsNullOrWhiteSpace(certificateInfo.Password))
                    {
                        certificateInfo.LoadCertificate();
                    }

                    Const.certificateInfo = certificateInfo;
                }
                catch (Exception ex) {
                    Const.certificateInfo = null;
                    _logger.WriteError(ex);
                    throw;
                }
            }

            //return pdfSign.sign(data, Const.certificateInfo.r, signInfo.location);
            var pdf = pdfSign.sign(data, Const.certificateInfo.Pkcs12Store, Const.certificateInfo.Password, Const.certificateInfo.Reason, Const.certificateInfo.Location, DateTime.Now);

            Const.pdfSignPool.Return(pdfSign);

            _logger.MethodTraceEnd(startTime);

            return(pdf);
        }
Example #2
0
        public string ca(string yhxx)
        {
            dbbase.odbcdb aa = new odbcdb("DSN=pathnet;UID=pathnet;PWD=4s3c2a1p", "", "");

            ////-------获取sz中设置的参数---------------------
            string debug = f.ReadString("CA", "debug", "").Replace("\0", "").Trim();
            string msg   = f.ReadString("CA", "message", "1").Replace("\0", "").Trim();

            string getblh = "";
            string type   = "";
            string type2  = "";
            string yhm    = "";

            string yhmc = "";
            string yhbh = "";
            string yhmm = "";
            string bglx = "";
            string bgxh = "";

            #region CA登陆

            if (ZGQClass.GetSZ("CA", "ca", "").Replace("\0", "").Trim() == "1")
            {
                if (yhxx == "")
                {
                    return(Login());
                }
            }

            #endregion

            string[] getyhxx = yhxx.Split('^');
            if (getyhxx.Length == 5)
            {
                type = getyhxx[0];
                yhm  = getyhxx[1];
                yhmc = getyhxx[3];
                yhbh = getyhxx[2];
                yhmm = getyhxx[4];
            }
            else
            {
                type2  = getyhxx[0];
                getblh = getyhxx[1];
                bgxh   = getyhxx[2];
                bglx   = getyhxx[3].ToLower();
                type   = getyhxx[4];
                yhm    = getyhxx[5];
                yhmc   = getyhxx[6];
                yhbh   = getyhxx[7];
                yhmm   = getyhxx[8];
            }

            #region 审核前验证KEY

            if (type == "SH")
            {
                return(YZKEY(msg, yhmc, yhbh));
            }

            #endregion

            string blbh = getblh + bglx + bgxh;

            #region 审核后执行,数字签名

            if (type == "QZ")
            {
                if (debug == "1")
                {
                    MessageBox.Show("审核签字");
                }

                string yw = "";

                string isb64yw = f.ReadString("CA", "b64yw", "0").Replace("\0", "").Trim();

                bool WithTSA = false; //带时间戳签名
                if ((f.ReadString("ca", "WithTSA", "0").Trim().Replace("\0", "").Trim()) == "1")
                {
                    WithTSA = true; //签名值包含原文
                }
                bool havcount = false;
                bool isVerify = false; //网关验证
                if ((f.ReadString("ca", "isVerify", "0").Trim().Replace("\0", "").Trim()) == "1")
                {
                    isVerify = true;
                }
                string usapurl    = f.ReadString("ca", "usapurl", "").Trim().Replace("\0", "").Trim();     //网关地址
                string svrcertb64 = f.ReadString("ca", "svrcertb64", "1").Trim().Replace("\0", "").Trim(); //网关证书
                string b64SignVal = "";
                SecuInter.X509Certificate oCert = null;
                DataTable dt_jcxx = new DataTable();
                DataTable dt_bc   = new DataTable();
                DataTable dt_bd   = new DataTable();
                try
                {
                    #region 原文

                    dt_jcxx = aa.GetDataTable("select * from T_JCXX where  F_BLH='" + getblh + "'", "cgbg");

                    if (dt_jcxx == null)
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("连接数据库异常");
                        }
                        return("0");
                    }
                    if (dt_jcxx.Rows.Count <= 0)
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("T_JCXX查询数据异常");
                        }
                        return("0");
                    }
                    if (bglx == "cg")
                    {
                        if (dt_jcxx.Rows[0]["F_BGZT"].ToString() != "已审核")
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("报告未审核");
                            }
                            return("0");
                        }
                        yw = "病理号:" + dt_jcxx.Rows[0]["f_blh"].ToString() + "&常规报告&&性别:" +
                             dt_jcxx.Rows[0]["F_XB"].ToString() + "&年龄:" + dt_jcxx.Rows[0]["F_nl"].ToString()
                             + "&住院号:" + dt_jcxx.Rows[0]["F_zyh"].ToString() + "&门诊号:" +
                             dt_jcxx.Rows[0]["F_mzh"].ToString() + "&身份证号:" + dt_jcxx.Rows[0]["F_SFZH"].ToString() +
                             "&科室:" + dt_jcxx.Rows[0]["F_sjks"].ToString()
                             + "&病理诊断:" + dt_jcxx.Rows[0]["F_blzd"].ToString() + "&报告医生:" +
                             dt_jcxx.Rows[0]["F_bgys"].ToString() + "&复诊医生:" + dt_jcxx.Rows[0]["F_FZYS"].ToString()
                             + "&审核医生:" + dt_jcxx.Rows[0]["F_SHYS"].ToString() + "&报告日期:" +
                             dt_jcxx.Rows[0]["F_bgrq"].ToString() + "&审核日期:" + dt_jcxx.Rows[0]["F_spare5"].ToString();
                    }
                    //// 补充审核
                    if (bglx == "bc")
                    {
                        dt_bc =
                            aa.GetDataTable(
                                "select * from T_BCBG where  F_BLH='" + getblh + "' and F_BC_BGZT='已审核'and F_BC_BGXH='" +
                                bgxh + "'", "bcbg");
                        if (dt_bc == null)
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("连接数据库异常");
                            }
                            return("0");
                        }
                        if (dt_bc.Rows.Count <= 0)
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("T_BCBG查询数据异常");
                            }
                            return("0");
                        }
                        yw = "病理号:" + dt_jcxx.Rows[0]["f_blh"].ToString() + "&补充报告:" + bgxh + "&性别:" +
                             dt_jcxx.Rows[0]["F_XB"].ToString() + "&年龄:" + dt_jcxx.Rows[0]["F_nl"].ToString()
                             + "&住院号:" + dt_jcxx.Rows[0]["F_zyh"].ToString() + "&门诊号:" +
                             dt_jcxx.Rows[0]["F_mzh"].ToString() + "&身份证号:" + dt_jcxx.Rows[0]["F_SFZH"].ToString() +
                             "&科室:" + dt_jcxx.Rows[0]["F_sjks"].ToString()
                             + "&病理诊断:" + dt_bc.Rows[0]["F_BCZD"].ToString() + "&报告医生:" +
                             dt_bc.Rows[0]["F_bc_bgys"].ToString() + "&复诊医生:" + dt_bc.Rows[0]["F_bc_FZYS"].ToString()
                             + "&审核医生:" + dt_bc.Rows[0]["F_bc_SHYS"].ToString() + "&报告日期:" +
                             dt_bc.Rows[0]["F_bc_bgrq"].ToString() + "&审核日期:" + dt_bc.Rows[0]["F_bc_spare5"].ToString();
                    }
                    ///// 小冰冻审核
                    if (bglx == "bd")
                    {
                        dt_bd =
                            aa.GetDataTable(
                                "select * from T_BDBG  where  F_BLH='" + getblh +
                                "' and  F_BD_BGZT='已审核' and F_BD_BGXH='" + bgxh + "'", "bcbg");
                        if (dt_bd == null)
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("连接数据库异常");
                            }
                            return("0");
                        }
                        if (dt_bd.Rows.Count <= 0)
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("T_BDBG查询数据异常");
                            }
                            return("0");
                        }
                        yw = "病理号:" + dt_jcxx.Rows[0]["f_blh"].ToString() + "&冰冻报告:" + bgxh + "&性别:" +
                             dt_jcxx.Rows[0]["F_XB"].ToString() + "&年龄:" + dt_jcxx.Rows[0]["F_nl"].ToString()
                             + "&住院号:" + dt_jcxx.Rows[0]["F_zyh"].ToString() + "&门诊号:" +
                             dt_jcxx.Rows[0]["F_mzh"].ToString() + "&身份证号:" + dt_jcxx.Rows[0]["F_SFZH"].ToString() +
                             "&科室:" + dt_jcxx.Rows[0]["F_sjks"].ToString()
                             + "&病理诊断:" + dt_bd.Rows[0]["F_BdZD"].ToString() + "&报告医生:" +
                             dt_bd.Rows[0]["F_bd_bgys"].ToString() + "&复诊医生:" + dt_bd.Rows[0]["F_bd_FZYS"].ToString()
                             + "&审核医生:" + dt_bd.Rows[0]["F_bd_SHYS"].ToString() + "&报告日期:" +
                             dt_bd.Rows[0]["F_bd_bgrq"].ToString();
                    }

                    if (yw.Trim() == "")
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("数字签名内容为空");
                        }
                        return("0");
                    }

                    #endregion

                    if (isb64yw == "1")
                    {
                        yw = changebase64(yw);
                    }

                    #region 签名

                    try
                    {
                        ////签名
                        if (WithTSA)
                        {
                            b64SignVal = NETCAPKIv4.signPKCS7WithTSA(yw, usapurl, havcount); //时间戳签名
                        }
                        else
                        {
                            b64SignVal = NETCAPKIv4.signNETCA(yw, havcount, userPwd); //不带时间戳签名
                        }
                    }
                    catch (Exception ee1)
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("签名失败:" + ee1.Message);
                        }
                        return("0");
                    }
                    if (b64SignVal == "")
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("签名失败");
                        }
                        return("0");
                    }

                    #endregion

                    #region 验签

                    try
                    {
                        string signTime = "";
                        oCert = NETCAPKIv4.verifyPKCS7(yw, b64SignVal, true, ref signTime);
                    }
                    catch (Exception ee2)
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("验签失败:" + ee2.Message);
                        }
                        return("0");
                    }
                    if (oCert == null)
                    {
                        if (msg == "1")
                        {
                            MessageBox.Show("验签失败");
                        }
                        return("0");
                    }

                    #endregion

//                    #region   验证证书
//
//                    if (isVerify)
//                    {
//                        try
//                        {
//                            bool bFlag = NETCAPKIv4.VerifyCert(usapurl, svrcertb64, 1, oCert); //再验证证书
//                            if (!bFlag)
//                            {
//                                MessageBox.Show("签名证书验证失败");
//                                return "0";
//                            }
//                        }
//                        catch (Exception ee3)
//                        {
//                            if (msg == "1")
//                                MessageBox.Show("签名证书验证失败:" + ee3.Message);
//                            return "0";
//                        }
//                    }
//
//                    #endregion

                    // 签字
                }
                catch (Exception ex)
                {
                    MessageBox.Show("签名异常:" + ex.Message);
                    return("0");
                }

                #region 签名完成,写数据库

                string errmsg = "";
                int    x      =
                    aa.ExecuteSQL(
                        "insert into T_SZQM(F_BLBH,F_BLH,F_BGLX,F_BGXH,F_CZY,F_YW,F_SignCert,F_SignData,F_QZRQ) values('" +
                        blbh + "','"
                        + getblh + "','" + bglx + "','" + bgxh + "','" + yhmc + "','" + yw + "','"
                        + oCert.ToString() + "','" + b64SignVal.ToString() + "','" +
                        DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')");

                if (debug == "1")
                {
                    if (x >= 1)
                    {
                        MessageBox.Show("写入T_CAXX完成");
                    }
                    else
                    {
                        MessageBox.Show("写入T_CAXX失败:" + errmsg);
                    }
                }

                #endregion

                if (f.ReadString("ca", "hqkeytp", "0").Trim().Replace("\0", "").Trim() == "1")
                {
                    #region 获取签字图片

                    string szqmlj = ZGQClass.GetSZ("view", "szqmlj", @"\\127.0.0.1\pathqc\rpt-szqm\YSBMP\");


                    try
                    {
                        IPDFSign iPDFSign = new PDFSign();
                        //选择证书
                        iPDFSign.SelectCert("netca", 0);
                        IUtilTool iUtilTool = new UtilTool();
                        //传入选中的签名证书的base64编码
                        string CertBase64 = iPDFSign.SignCertBase64Encode;
                        if (CertBase64.Trim() == "")
                        {
                            if (msg == "1")
                            {
                                MessageBox.Show("获取签名证书的base64编码失败");
                            }
                            return("0");
                        }
                        try
                        {
                            //log.WriteMyLog("CertBase64:"+CertBase64);
                            byte[] image = iUtilTool.GetImageFromDevicByCert(CertBase64);
                            try
                            {
                                MemoryStream memoryStream = new MemoryStream(image, 0, image.Length);
                                memoryStream.Write(image, 0, image.Length);
                                //转成图片
                                Image ii = Image.FromStream(memoryStream);
                                log.WriteMyLog("szqmlj:" + szqmlj);
                                ii.Save(szqmlj + yhmc + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);
                            }
                            catch (Exception ee4)
                            {
                                if (msg == "1")
                                {
                                    MessageBox.Show("保存签名图片失败:" + ee4.Message);
                                }
                                return("0");
                            }


                            string pdfszqz = ZGQClass.GetSZ("CA", "pdfszqz", "1");
                            if (pdfszqz == "1")
                            {
                                #region  生成pdf

                                string blh = getblh;
                                try
                                {
                                    if (bglx == "")
                                    {
                                        bglx = "cg";
                                    }
                                    if (bgxh == "")
                                    {
                                        bgxh = "1";
                                    }

                                    string bgzt     = "";
                                    string filename = dt_jcxx.Rows[0]["F_SPARE5"].ToString();
                                    if (bglx.ToLower() == "bd")
                                    {
                                        bgzt     = dt_bd.Rows[0]["F_BD_BGZT"].ToString();
                                        filename = dt_bd.Rows[0]["F_BD_bgrq"].ToString();
                                    }
                                    if (bglx.ToLower() == "bc")
                                    {
                                        bgzt     = dt_bc.Rows[0]["F_BC_BGZT"].ToString();
                                        filename = dt_bc.Rows[0]["F_Bc_SPARE5"].ToString();
                                    }
                                    if (bglx.ToLower() == "cg")
                                    {
                                        bgzt     = dt_jcxx.Rows[0]["F_BGZT"].ToString();
                                        filename = dt_jcxx.Rows[0]["F_SPARE5"].ToString();
                                    }

                                    if (bgzt == "已审核")
                                    {
                                        try
                                        {
                                            filename = blh.Trim() + "_" + bglx.ToLower() + "_" + bgxh + "_" +
                                                       DateTime.Parse(filename.Trim()).ToString("yyyyMMddHHmmss") +
                                                       ".pdf";
                                        }
                                        catch
                                        {
                                            filename = blh.Trim() + "_" + bglx.ToLower() + "_" + bgxh + ".pdf";
                                        }
                                        string ml =
                                            DateTime.Parse(dt_jcxx.Rows[0]["F_SDRQ"].ToString()).ToString("yyyyMM");
                                        string pdfpath = "";
                                        string rptpath = ZGQClass.GetSZ("ca", "rptpath", "rpt").Replace("\0", "").Trim();

                                        string     scpdffs  = f.ReadString("ca", "scpdffs", "1").Replace("\0", "").Trim();
                                        ZGQ_PDFJPG zgq      = new ZGQ_PDFJPG();
                                        string     message  = "";
                                        string     filePath = "";

                                        //生成PDF
                                        string ErrMsg = "";
                                        // log.WriteMyLog("filename="+filename);
                                        bool pdf1 = zgq.CreatePDFJPG(blh, bglx, bgxh, ref filename, rptpath,
                                                                     ZGQ_PDFJPG.type.PDF, ref ErrMsg);
                                        log.WriteMyLog("filename=" + filename);
                                        if (!pdf1)
                                        {
                                            MessageBox.Show("生成PDF失败,请重新审核\r\n" + ErrMsg);
                                            DeleteTempFile(blh);
                                            return("0");
                                        }

                                        if (!File.Exists(filename))
                                        {
                                            MessageBox.Show("生成PDF失败,请重新审核");
                                            DeleteTempFile(blh);
                                            return("0");
                                        }

                                        filePath = filename;
                                        if (zgq.UpPDF(blh, filename, ml, 0, ref errmsg, ref pdfpath))
                                        {
                                            if (debug == "1")
                                            {
                                                log.WriteMyLog("上传PDF成功");
                                            }
                                            filename = filePath.Substring(filePath.LastIndexOf('\\') + 1);
                                            ZGQClass.BGHJ(blh, "上传PDF", "审核", "上传PDF成功:" + ml + "\\" + filename, "ZGQJK",
                                                          "上传PDF");
                                            aa.ExecuteSQL("delete T_BG_PDF  where F_BLBH='" + blbh + "'");
                                            aa.ExecuteSQL(
                                                "insert  into T_BG_PDF(F_BLBH,F_BLH,F_BGLX,F_BGXH,F_ML,F_FILENAME,F_FilePath,F_PDFLX) values('" +
                                                blbh + "','" + blh + "','" + bglx + "','" + bgxh + "','" + ml + "\\" +
                                                blh + "','" + filename + "','" + pdfpath + "','')");
                                        }
                                        else
                                        {
                                            MessageBox.Show("上传签字PDF失败,请重新审核\r\n" + errmsg);
                                            ZGQClass.BGHJ(blh, "上传PDF", "审核", "上传PDF失败:" + errmsg, "ZGQJK", "上传PDF");
                                        }
                                        //上传pdf

                                        iPDFSign.SetImage(image);
                                        iPDFSign.RenderMode  = 3;
                                        iPDFSign.SrcFileName = filePath;
                                        string szqm_filename = filePath.Replace(".pdf", "_szqm.pdf");
                                        iPDFSign.DestFileName = szqm_filename;
                                        int xPos =
                                            int.Parse(ZGQClass.GetSZ("ca", "xPos", "350").Replace("\0", "").Trim());
                                        int yPos =
                                            int.Parse(ZGQClass.GetSZ("ca", "yPos", "100").Replace("\0", "").Trim());
                                        int width =
                                            int.Parse(ZGQClass.GetSZ("ca", "width", "80").Replace("\0", "").Trim());
                                        int height =
                                            int.Parse(ZGQClass.GetSZ("ca", "height", "40").Replace("\0", "").Trim());
                                        iPDFSign.SignPosition(1, xPos, yPos, width, height);

                                        if (File.Exists(szqm_filename))
                                        {
                                            //上传签字的pdf

                                            if (zgq.UpPDF(blh, szqm_filename, ml, 0, ref errmsg, ref pdfpath))
                                            {
                                                if (debug == "1")
                                                {
                                                    log.WriteMyLog("上传签字PDF成功");
                                                }
                                                szqm_filename =
                                                    szqm_filename.Substring(szqm_filename.LastIndexOf('\\') + 1);
                                                ZGQClass.BGHJ(blh, "上传PDF", "审核",
                                                              "上传签字PDF成功:" + ml + "\\" + szqm_filename, "ZGQJK", "上传PDF");
                                                aa.ExecuteSQL("delete T_BG_PDF_CA  where F_BLBH='" + blbh + "'");
                                                log.WriteMyLog("insert  into T_BG_PDF_CA(F_BLBH,F_BLH,F_BGLX,F_BGXH,F_ML,F_FILENAME,F_FilePath,F_PDFLX) values('" +
                                                               blbh + "','" + blh + "','" + bglx + "','" + bgxh + "','" + ml + "\\" +
                                                               blh + "','" + szqm_filename + "','" + pdfpath + "','szqm')");
                                                aa.ExecuteSQL(
                                                    "insert  into T_BG_PDF_CA(F_BLBH,F_BLH,F_BGLX,F_BGXH,F_ML,F_FILENAME,F_FilePath,F_PDFLX) values('" +
                                                    blbh + "','" + blh + "','" + bglx + "','" + bgxh + "','" + ml + "\\" +
                                                    blh + "','" + szqm_filename + "','" + pdfpath + "','szqm')");
                                            }
                                            else
                                            {
                                                MessageBox.Show("上传签字PDF失败,请重新审核\r\n" + errmsg);
                                                ZGQClass.BGHJ(blh, "上传签字PDF", "审核", "上传PDF失败:" + errmsg, "ZGQJK",
                                                              "上传PDF");
                                            }
                                        }
                                        else
                                        {
                                            MessageBox.Show("PDF签字失败,请重新审核");
                                        }
                                        DeleteTempFile(blh);
                                        return("1");
                                    }
                                    else
                                    {
                                        MessageBox.Show("报告未审核");
                                        return("0");
                                    }
                                }
                                catch (Exception ee10)
                                {
                                    MessageBox.Show("生成PDF异常,请重新审核\r\n" + ee10.Message);
                                    DeleteTempFile(blh);
                                    return("0");
                                }

                                #endregion
                            }
                        }
                        catch (Exception ee5)
                        {
                            MessageBox.Show("获取签名图像异常,请重新审核\r\n" + ee5.Message);
                            return("0");
                        }
                    }
                    catch (Exception ee6)
                    {
                        MessageBox.Show("获取签名证书失败,请重新审核\r\n" + ee6.Message);
                        return("0");
                    }

                    #endregion
                }
                if (debug == "1")
                {
                    MessageBox.Show("签字完成");
                }

                return("1");
            }

            #endregion

            #region 取消审核

            if (type == "QXSH")
            {
                if (f.ReadString("ca", "qxshyz", "0").Trim().Replace("\0", "").Trim() == "1")
                {
                    return(YZKEY(msg, yhmc, yhbh));
                }
                return("1");
            }

            #endregion

            #region 取消签字

            if (type == "QXQZ") //&& (bglx == "BC" || bglx == "BD")
            {
                aa.ExecuteSQL("delete from  T_SZQM  where  F_BLBH='" + blbh + "' ");
                aa.ExecuteSQL("delete from  T_BG_PDF  where  F_BLBH='" + blbh + "' ");
                return("1");
            }

            #endregion

            return("1");
        }
Example #3
0
        private void btnBindUser_Click(object sender, EventArgs e)
        {
            #region 保存前验证

            if (string.IsNullOrEmpty(txtUserCode.Text.Trim()))
            {
                MessageBox.Show("用户编码不能为空!");
                return;
            }
            if (string.IsNullOrEmpty(txtImgPath.Text.Trim()))
            {
                MessageBox.Show("图片路径不能为空!");
                return;
            }

            var caUserName = txtCaName.Text.Trim();
            if (string.IsNullOrEmpty(txtCaId.Text.Trim() + caUserName))
            {
                MessageBox.Show("CAId和Ca用户名不能为空,请先点击读取!");
            }

            var dtYh = GetYHXX(txtUserCode.Text.Trim());
            if (dtYh.Rows.Count == 0)
            {
                MessageBox.Show($"没有找到用户:" + txtUserCode.Text.Trim());
                return;
            }

            var dbUserName = dtYh.Rows[0]["F_YHMC"].ToString().Trim();
            if (dbUserName != caUserName)
            {
                DialogResult r = MessageBox.Show($"用户姓名验证失败!\r\nUKey姓名为:{dbUserName};朗珈用户姓名为:{caUserName}\r\n是否继续绑定?",
                                                 "", MessageBoxButtons.YesNo);
                if (r != DialogResult.Yes)
                {
                    return;
                }
            }

            #endregion

            #region 把CaId保存到用户表BY2字段

            odbcdb aa  = new odbcdb("DSN=pathnet;UID=pathnet;PWD=4s3c2a1p", "", "");
            string sql = $"update t_yh set F_YH_BY2='{txtCaId.Text.Trim()}' where f_yhm='{txtUserCode.Text.Trim()}' ";
            try
            {
                aa.ExecuteSQL(sql);
            }
            catch (Exception ex)
            {
                MessageBox.Show("绑定失败,执行sql时出现异常:" + ex);
                return;
            }
            finally
            {
                aa.Close();
            }

            #endregion

            #region 获取ca签名图片并上传到指定路径,图片名称为 ca用户姓名.bmp

            IPDFSign iPDFSign = new PDFSign();
            //选择证书
            iPDFSign.SelectCert("netca", 0);
            IUtilTool iUtilTool = new UtilTool();
            //传入选中的签名证书的base64编码
            string CertBase64 = iPDFSign.SignCertBase64Encode;
            if (CertBase64.Trim() == "")
            {
                MessageBox.Show("获取签名证书的base64编码失败");
                return;
            }
            try
            {
                //log.WriteMyLog("CertBase64:"+CertBase64);
                byte[] image = iUtilTool.GetImageFromDevicByCert(CertBase64);
                try
                {
                    MemoryStream memoryStream = new MemoryStream(image, 0, image.Length);
                    memoryStream.Write(image, 0, image.Length);
                    //转成图片
                    Image ii = Image.FromStream(memoryStream);
                    ii.Save(txtImgPath.Text + caUserName + ".bmp", ImageFormat.Bmp);
                }
                catch (Exception ee4)
                {
                    MessageBox.Show("保存签名图片失败:" + ee4.Message);
                    return;
                }
            }
            catch (Exception ex1)
            {
                MessageBox.Show("保存签名图片时出现异常:" + ex1);
                return;
            }

            #endregion

            MessageBox.Show("绑定成功!");
        }
Example #4
0
        public void TestMethod1()
        {
            string path = @"C:\Users\Moinul\Desktop\certificate\SignTemplate_1.pdf";

            byte[]         bytes       = System.IO.File.ReadAllBytes(path);
            List <PDFSign> PDFSignList = new List <PDFSign>();
            PDFSign        pdf         = new PDFSign();
            //byte[] signbytes=new byte[1];
            ObjectPool <PDFSign> objectPool = new ObjectPool <PDFSign>();
            PDFSign a, a1, a2;

            a = objectPool.Rent() as PDFSign;
            //a1 = objectPool.Rent() as PDFSign;
            //a2 = objectPool.Rent() as PDFSign;

            //a._executed = true;
            //a1._executed = true;
            //a2._executed = true;

            //Thread t1 = new Thread(() =>
            //{
            //    Thread.Sleep(10000);
            //    a = objectPool.Rent() as PDFSign;
            //    Thread.Sleep(10000);
            //    a._executed = true;
            //    Thread.Sleep(10000);
            //});

            //Thread t2 = new Thread(() =>
            //{
            //    Thread.Sleep(10000);
            //    a1 = objectPool.Rent() as PDFSign;
            //    Thread.Sleep(10000);
            //    a1._executed = true;
            //    Thread.Sleep(10000);
            //});


            //t1.Start();
            //t2.Start();
            //Parallel.For(0, 100, (i, state) => {
            //    //Console.WriteLine(i); if (i == 50) state.Stop();
            //    a = objectPool.Rent() as PDFSign;
            //    //if (objectPool.IsEmptyPool())
            //    if(!a._executed)
            //    {

            //        signbytes=a.sign(bytes, "This Document has been certified by National Board of Revenue", "Dhaka, Bangladesh");
            //    }
            //    else {

            //        signbytes=a.sign(bytes);
            //    }
            //    File.WriteAllBytes(@"C:\Users\Moinul\Desktop\HP\SignTemplate"+i+"_"+DateTime.Now.Minute+"_"+DateTime.Now.Millisecond+".pdf", signbytes);
            //});

            //int largest = arr[0];
            //Parallel.ForEach(Partitioner.Create(0, arr.Length), () => arr[0], (range, loop, subtotal)=>
            //{
            //    Your stuff
            //});
            //Parall for(int i=0; i <100; i++){
            //    var a = objectPool.Rent() as PDFSign;
            //    if (objectPool.IsEmptyPool())
            //    {

            //        signbytes=a.sign(bytes, "This Document has been certified by National Board of Revenue", "Dhaka, Bangladesh");
            //    }
            //    else {

            //        signbytes=a.sign(bytes);
            //    }
            //    File.WriteAllBytes(@"C:\Users\DELL\Desktop\HP\SignTemplate.pdf", signbytes);
            //}
            byte[] signbytes = pdf.sign(bytes, "This Document has been certified by Moinul For Test Purpose", "Dhaka, Bangladesh");
            //byte[] signbytes = pdf.mangosign(bytes, "\\Content\\PDF\\");
            File.WriteAllBytes(@"C:\Users\Moinul\Desktop\certificate\SignTemplate_sign.pdf", signbytes);
        }
        public byte[] GetSignedPDF(byte[] data, SignInfo signInfo)
        {
            PDFSign pdfSign = new PDFSign();

            return(pdfSign.sign(data, signInfo.Reason, signInfo.location));
        }