protected bool CmsCompleteProcess() { EFDal ed = new EFDal(); string tut = Session["ImzalanacakBelgelerinIdleri"].ToString(); string[] ImzalanacakDosyaIdler = tut.Split(','); bool sonuc = true; try { string detachedAllDataB64 = hidDetached64Data.Value; string[] detachedSigned = detachedAllDataB64.Split('é'); for (int i = 0; i < detachedSigned.Length; i++) { ServiceCMS client = new ServiceCMS(); CmsSignatureRequestType request = new CmsSignatureRequestType(); decimal evrakBelgeID = EgaTransIdler.Keys.ElementAt(i); string egatransid = string.Empty; EgaTransIdler.TryGetValue(evrakBelgeID, out egatransid); request.EgaTransId = egatransid; request.ReqAppId = "12345"; byte[] bytedata = File.ReadAllBytes(ed.ImzaliDosyalarIddenPathDon(Convert.ToInt32(ImzalanacakDosyaIdler[i]))); request.OriginalDataSha1Hash = SHA1Managed.Create().ComputeHash(bytedata); request.ArchiveType = ImzaTipi.ESXLONG; request.ArchiveTypeSpecified = true; request.SignedData = detachedSigned[i]; request.ZdParameters = new GeneralTypesZamanDamgasiType(); request.ZdParameters.ZdUrl = ConfigurationManager.AppSettings["ZdUrl"].ToString(); request.ZdParameters.ZdUserName = ConfigurationManager.AppSettings["ZdUserName"].ToString(); request.ZdParameters.ZdPassword = ConfigurationManager.AppSettings["ZdPassword"].ToString(); request.ZdParameters.ZdProvider = ConfigurationManager.AppSettings["ZdProvider"].ToString(); CmsSignatureResponseType response = client.ProcessSignature(request); if (response.ResponseInfo.ResultCode == GeneralTypesResultCodeType.Successful) { Byte[] bak = response.SignedCms; File.WriteAllBytes(ed.ImzaliDosyalarIddenPathDon(Convert.ToInt32(ImzalanacakDosyaIdler[i])), bak); //Burada mutlaka verştabanını ilgili personel imzaladı olarak update etmek gerekiyor..kapak ve veri dosyalarınının birleştirilmesi sırasında imza bekliyor olarak eklenmişti personel //Burada mutlaka verştabanına bir işaret atmak gerekli kimler imzalamış, belki nereyi imzalmış bilgisi de olmalı int ImzaliDosyalarId = 0; string kullaniciAdi = Context.User.Identity.Name; Guid ImzalamasiGerekenPersonel = new Guid(); ImzalamasiGerekenPersonel = ed.UserNamedenPersonelUNDon(kullaniciAdi); bool PersonelImzalamismi = true; ImzaliDosyalarId = Convert.ToInt32(ImzalanacakDosyaIdler[i]); int IstId = ed.imzaliDosyalarIddenIstIdDon(Convert.ToInt32(ImzalanacakDosyaIdler[i])); //Bir kalibrasyonu yapanı dah once ekelimişti onu imzaladı olarak güncelle, imza tarihini de güncelle //bool basarimKalYapanEkleme=ed.spImzaBekleyenDokumanlaraEkle(Convert.ToInt32(ImzalanacakDosyaIdler[i]), ImzalamasiGerekenPersonel, PersonelImzalamismi,true,IstId); bool basarimImzaBekleyenDokumaniGuncelle = ed.ImzaBekleyenDokumaniGuncelle(ImzaliDosyalarId, ImzalamasiGerekenPersonel); //Bir de birim müdürünü ekle Imzalaması gerekli diye ImzaBej-kleyenler tablosuna kalibrasyonu yapan imzalarken düştü zaten Guid birimAmiri = new System.Guid(); birimAmiri = ed.BirimAmiriDon(ed.kal_BolgeKoduDon(kullaniciAdi)); if (ImzalamasiGerekenPersonel != birimAmiri) { PersonelImzalamismi = false; bool basarimMudurEkleme = ed.spImzaBekleyenDokumanlaraEkle(Convert.ToInt32(ImzalanacakDosyaIdler[i]), birimAmiri, PersonelImzalamismi, true, IstId); } DataSet ds = ed.spIsteginTumImzaIsleriTamamMi(IstId); if (ds.Tables[0].Rows.Count == 0) //Yani imzalanmamış istek kalemi kalmamış { ed.ImzaIsleriTamamlanmisIsteklereEkle(Convert.ToInt32(ed.kal_IstIddenIstekDonBolgeKodsuz(IstId).Tables[0].Rows[0]["IstekNo"].ToString()), Convert.ToInt32(ed.kal_IstIddenIstekDonBolgeKodsuz(IstId).Tables[0].Rows[0]["BolgeKodu"].ToString()), Convert.ToInt32(ed.kal_IstIddenIstekDonBolgeKodsuz(IstId).Tables[0].Rows[0]["YIL"].ToString())); } } else { lblError.Text = response.ResponseInfo.ResultMessage; sonuc = false; } } } catch (Exception ex) { lblError.Text = ex.Message; sonuc = false; } return(sonuc); }
protected void CmsStartProcess() { EFDal ed = new EFDal(); string personelTCKimlikNo = ed.UserNamedenPersonelTCKimlikNoDon(Context.User.Identity.Name); string[] dahaONcedenImzalanmisBelgeler = new string[] {}; try { EgaTransIdler.Clear(); string DataToBeSigned = string.Empty; string tut = Session["ImzalanacakBelgelerinIdleri"].ToString(); string[] ImzalanacakDosyaIdler = tut.Split(','); int i = 0; foreach (string imzalanacakDosyaId in ImzalanacakDosyaIdler) { string tempfilePath = ed.ImzaliDosyalarIddenPathDon(Convert.ToInt32(imzalanacakDosyaId)); if (!ed.PersonelDokumaniDahOnceImzalamisMi(tempfilePath, personelTCKimlikNo)) //if(true) { ServiceCMS client = new ServiceCMS(); CmsHashRequestType request = new CmsHashRequestType(); byte[] bytedata = File.ReadAllBytes(tempfilePath); request.DeviceType = GeneralTypesDeviceType.SmartCard; request.OriginalData = bytedata; request.OriginalDataSha1Hash = SHA1Managed.Create().ComputeHash(request.OriginalData); request.ReqAppId = "12345"; // Guid.NewGuid().ToString(); //EgaTransId = request.ReqAppId; Session["OriginalCMSSha1Hash"] = request.OriginalDataSha1Hash; CmsHashResponseType response = client.CalculateHash(request); if (response.ResponseInfo.ResultCode == GeneralTypesResultCodeType.Successful) { EgaTransId = response.ResponseInfo.EgaTransId; //Session["EgaTransId"] = EgaTransId; EgaTransIdler.Add(Convert.ToInt32(imzalanacakDosyaId), EgaTransId); string cmsImzaTipi = "P"; if (response.CmsImzaTipi == GeneralTypesCmsImzaTipi.Paralel) { cmsImzaTipi = "P"; } else { cmsImzaTipi = "S"; } DataToBeSigned += response.DataToBeSigned + "é" + "SHA256" + "é" + cmsImzaTipi + "é"; } } else { dahaONcedenImzalanmisBelgeler[i] = ed.FindImzaliDosya(Convert.ToInt32(imzalanacakDosyaId)).Tables[0].Rows[0]["IstId"].ToString(); lblUyari.Text += dahaONcedenImzalanmisBelgeler[i];//ed.FindImzaliDosya(Convert.ToInt32(imzalanacakDosyaId)).Tables[0].Rows[0]["IstId"].ToString()+"<br/>"; } i++; } //ltrApplet.Text = String.Format(appletTag, appletPath, DataToBeSigned); //string personelTCKimlikNo = ed.UserNamedenPersonelTCKimlikNoDon(Context.User.Identity.Name); //Sadece log olmuş kullanıcının kimliği ile imzanın kimliği uyuşursa imza işlemine devam edeilecek.. ltrApplet.Text = String.Format(appletTag, appletPath, DataToBeSigned, ed.UserNamedenPersonelTCKimlikNoDon(Context.User.Identity.Name)); if (dahaONcedenImzalanmisBelgeler.Count() > 0) { lblUyari.Text = lblUyari.Text.Insert(0, "Bazı belgeler daha önce imzalamış oldugunuz için 2. kez imzalanmayacak"); notif1.Title = "Daha önce imzalanmış belgeler"; notif1.Show(); } } catch (Exception e) { lblUyari.Text = "Hata: " + e.Message; } }