public ActionResult CreateContact(Guid?userId) { Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { ViewBag.login = true; //return RedirectToAction("LogOff", "Account"); } if (Request.QueryString.AllKeys.Contains("Thumbprint")) { string thmbprnt = Request.QueryString["Thumbprint"]; string sbjctName = Request.QueryString["SubjectName"]; string timeMsg = Request.QueryString["TimeMessage"]; var cert = new CertificateInfoContactAdd(); cert.Thumbprint = thmbprnt; cert.SubjectName = sbjctName; cert.TimeMessage = timeMsg; ViewBag.cert = JsonConvert.SerializeObject(cert); //JsonConvert.SerializeObject(cert,Formatting.Indented); ViewBag.cert = ViewBag.cert.ToString().Replace(""", ""); } ViewBag.UserId = userId == null ? Guid.Empty : (Guid)userId; return(View()); }
public ActionResult GetCertificatesInfo(List <string> thumbprints, Guid?userId) { Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { return(Json(new { Status = "logoff" }, JsonRequestBehavior.AllowGet)); } var certificates = new List <CertificateInfoContactAdd>(); foreach (string thumbprint in thumbprints) { CertificateResponse response = _cryptxService.GetCertificate(thumbprint, (userId == null ? Guid.Empty : (Guid)userId), token); CertificateInfo certificateInfo = response.Certificate; var curCert = new CertificateInfoContactAdd(); curCert.IsMyCert = certificateInfo.MyCertificate != null; if (certificateInfo.RecipientCertificate != null && certificateInfo.RecipientCertificate.FriendlyName != null) { curCert.FriendlyName = certificateInfo.RecipientCertificate.FriendlyName; } curCert.CertificateId = certificateInfo.CertificateId; curCert.SubjectName = certificateInfo.SubjectName; curCert.IssureName = certificateInfo.IssureName; curCert.Thumbprint = certificateInfo.Thumbprint; curCert.Organization = certificateInfo.Organization; curCert.IsTest = certificateInfo.IsTest; if (DateTime.Now < certificateInfo.NotBefore) { curCert.TimeMessage = "Недействителен до " + certificateInfo.NotBefore.Date.ToShortDateString().Replace("/", "."); } if (DateTime.Now > certificateInfo.NotBefore && DateTime.Now < certificateInfo.NotAfter) { curCert.TimeMessage = "Действителен до " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } else { curCert.TimeMessage = "Недействителен с " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } certificates.Add(curCert); } return(Json(new { Status = "ok", certificates }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Запрос на поиск сертов /// </summary> /// <param name="isActive"></param> /// <param name="searchString"></param> /// <returns></returns> public ActionResult FindCertificate(bool isActive = false, string searchString = "") { Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { return(Json(new { status = "Error", errorCode = "401", errorMessage = "" }, JsonRequestBehavior.AllowGet)); } //bool isActiveCur = isActive ?? false; var model = new List <CertificateInfoContactAdd>(); SearchResultResponse response = _cryptxService.GetCertificatesBySearchString(searchString, isActive, false, token); if (response.Exception == null) { foreach (CertificateInfo certificateInfo in response.Certificates) { var curCert = new CertificateInfoContactAdd(); curCert.CertificateId = certificateInfo.CertificateId; curCert.SubjectName = certificateInfo.SubjectName; curCert.IssureName = certificateInfo.IssureName; curCert.Thumbprint = certificateInfo.Thumbprint; curCert.Organization = certificateInfo.Organization; curCert.IsTest = certificateInfo.IsTest; if (DateTime.Now < certificateInfo.NotBefore) { curCert.TimeMessage = "Недействителен до " + certificateInfo.NotBefore.Date.ToShortDateString().Replace("/", "."); } if (DateTime.Now > certificateInfo.NotBefore && DateTime.Now < certificateInfo.NotAfter) { curCert.TimeMessage = "Действителен до " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } else { curCert.TimeMessage = "Недействителен с " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } model.Add(curCert); } } else { return(Json(new { status = "Error", errorCode = "", errorMessage = response.Exception.Message }, JsonRequestBehavior.AllowGet)); } return(Json(new { model, status = "ok" }, JsonRequestBehavior.AllowGet)); }
public ActionResult MyCertificates(Guid?userId) { Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { return(RedirectToAction("LogOff", "Account")); } CertificatesResponse response = _cryptxService.GetMyCertificates((userId == null ? Guid.Empty : (Guid)userId), token); if (response.Exception != null) { throw response.Exception; } var model = new List <CertificateInfoContactAdd>(); foreach (CertificateInfo certificateInfo in response.Certificates) { var curCert = new CertificateInfoContactAdd(); curCert.CertificateId = certificateInfo.CertificateId; curCert.SubjectName = certificateInfo.SubjectName; curCert.IssureName = certificateInfo.IssureName; curCert.Thumbprint = certificateInfo.Thumbprint; curCert.Organization = certificateInfo.Organization; curCert.IsTest = certificateInfo.IsTest; if (DateTime.Now < certificateInfo.NotBefore) { curCert.TimeMessage = "Недействителен до " + certificateInfo.NotBefore.Date.ToShortDateString().Replace("/", "."); } if (DateTime.Now > certificateInfo.NotBefore && DateTime.Now < certificateInfo.NotAfter) { curCert.TimeMessage = "Действителен до " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } else { curCert.TimeMessage = "Недействителен с " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } model.Add(curCert); } return(View(model)); }
public ActionResult FindCertificate(string searchString, bool?isActive, Guid?contactId, string addToContact, string selectedItem, Guid?userId, bool all = false) { ViewBag.all = all; Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { ViewBag.login = true; } ViewBag.contactId = contactId; ViewBag.UserId = (userId == null ? Guid.Empty : (Guid)userId); bool isActiveCur = isActive ?? false; if (string.IsNullOrEmpty(addToContact)) { var model = new List <CertificateInfoContactAdd>(); SearchResultResponse response = _cryptxService.GetCertificatesBySearchString(searchString, isActiveCur, all, token); if (response.Exception == null) { foreach (CertificateInfo certificateInfo in response.Certificates) { var curCert = new CertificateInfoContactAdd(); curCert.CertificateId = certificateInfo.CertificateId; curCert.SubjectName = certificateInfo.SubjectName; curCert.IssureName = certificateInfo.IssureName; if (certificateInfo.RecipientCertificate != null && certificateInfo.RecipientCertificate.FriendlyName != null) { curCert.FriendlyName = certificateInfo.RecipientCertificate.FriendlyName; } curCert.Thumbprint = certificateInfo.Thumbprint; curCert.Organization = certificateInfo.Organization; curCert.IsTest = certificateInfo.IsTest; if (curCert.FriendlyName == null) { curCert.FriendlyName = string.Empty; } if (DateTime.Now < certificateInfo.NotBefore) { curCert.TimeMessage = "Недействителен до " + certificateInfo.NotBefore.Date.ToShortDateString().Replace("/", "."); } if (DateTime.Now > certificateInfo.NotBefore && DateTime.Now < certificateInfo.NotAfter) { curCert.TimeMessage = "Действителен до " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } else { curCert.TimeMessage = "Недействителен с " + certificateInfo.NotAfter.Date.ToShortDateString().Replace("/", "."); } model.Add(curCert); } } return(View(model)); } if (!string.IsNullOrEmpty(selectedItem) && contactId != null && contactId != Guid.Empty) { var serializaer = new JavaScriptSerializer(); var certs = serializaer.Deserialize <List <CertificateInfoContactAdd> >(selectedItem); var requestList = new List <CertificateAddRequest>(); foreach (CertificateInfoContactAdd certificateInfoContactAdd in certs) { requestList.Add(new CertificateAddRequest { CertificateId = certificateInfoContactAdd.CertificateId }); } _cryptxService.AddCertificatesToContact((Guid)contactId, requestList, (userId == null ? Guid.Empty : (Guid)userId), token); } return(View()); }
public ActionResult AddCertificateToContact(Guid?contactId, Guid?userId) { Guid token = CheckSessionAuthState(CurrentUser, _authService); if (token == Guid.Empty) { ViewBag.login = true; //return RedirectToAction("LogOff", "Account"); } //string fileName = Uri.EscapeDataString(Request.Headers["X-File-Name"]); string fileType = Request.Headers["X-File-Type"]; int fileSize = Convert.ToInt32(Request.Headers["X-File-Size"]); Stream fileContent = Request.InputStream; var buf = new byte[fileSize]; fileContent.Read(buf, 0, fileSize); var data = new CertificateInfoContactAdd(); try { var x509Certificate2 = new X509Certificate2(buf); } catch (Exception ex) { data.Status = "Файл не соответствует требованиям к сертификатам, используемым в Cryptogramm. Загрузка невозможна."; return(Json(data)); } if (contactId == null) { try { var x509Certificate2 = new X509Certificate2(buf); if (!x509Certificate2.SignatureAlgorithm.FriendlyName.ToLower().Contains("гост")) { data.Status = "Файл не соответствует требованиям к сертификатам, используемым в Cryptogramm. Загрузка невозможна."; return(Json(data)); } Session[x509Certificate2.Thumbprint] = buf; data.SubjectName = x509Certificate2.GetNameInfo(X509NameType.SimpleName, false); data.Thumbprint = x509Certificate2.Thumbprint; if (DateTime.Now < x509Certificate2.NotBefore) { data.TimeMessage = "Недействителен до " + x509Certificate2.NotBefore.Date.ToShortDateString().Replace("/", "."); } if (DateTime.Now > x509Certificate2.NotBefore && DateTime.Now < x509Certificate2.NotAfter) { data.TimeMessage = "Действителен до " + x509Certificate2.NotAfter.Date.ToShortDateString().Replace("/", "."); } else { data.TimeMessage = "Недействителен с " + x509Certificate2.NotAfter.Date.ToShortDateString().Replace("/", "."); } data.FriendlyName = ""; data.Status = "ok"; return(Json(data)); } catch (Exception ex) { data.Status = "Файл не соответствует требованиям к сертификатам, используемым в Cryptogramm. Загрузка невозможна."; return(Json(data)); } } #region Проверка на наличие серта в списке if (Request.Headers.AllKeys.Contains("contactCertificates")) { var js = new JavaScriptSerializer(); var contactCertificates = (List <string>)js.Deserialize(Request.Headers["contactCertificates"], typeof(List <string>)); var x509Cert2 = new X509Certificate2(buf); if (contactCertificates.Contains(x509Cert2.Thumbprint)) { data.Status = "Выбранный сертификат уже присутствует в списке"; return(Json(data)); } } #endregion var listCerts = new List <CertificateAddRequest>(); listCerts.Add(new CertificateAddRequest { CertificateBytes = buf }); _cryptxService.AddCertificatesToContact((Guid)contactId, listCerts, (userId == null ? Guid.Empty : (Guid)userId), token); data.Status = "refresh"; return(Json(data)); }