public void AddAuthMethod(SigningInfo signingInfo, createrequestrequest request) { if (signingInfo.authMetod == (int)AuthMethod.BankId) { for (int i = 0; i < request.request[0].task.Length; i++) { request.request[0].task[i].authentication = new authentication { method = new string[] { "nbid", "nbid-mobil" } }; } } if (signingInfo.authMetod == (int)AuthMethod.Tupas) { for (int i = 0; i < request.request[0].task.Length; i++) { request.request[0].task[i].authentication = new authentication { method = new string[] { "tupas", "tupas-mobil" } }; } } if (signingInfo.authMetod == (int)AuthMethod.NemId) { for (int i = 0; i < request.request[0].task.Length; i++) { request.request[0].task[i].authentication = new authentication { method = new string[] { "nemid" } }; } } if (signingInfo.authMetod == (int)AuthMethod.Otp) { for (int i = 0; i < request.request[0].task.Length; i++) { request.request[0].task[i].authentication = new authentication { method = new string[] { "scid-otp" } }; } } if (signingInfo.authMetod == (int)AuthMethod.Social) { for (int i = 0; i < request.request[0].task.Length; i++) { request.request[0].task[i].authentication = new authentication { method = new string[] { "social" } }; } } }
internal signature[] GetSignatures(SigningInfo signingInfo) { if (signingInfo.signingMetodText == "nbid") { var signature = new[] { new signature { responsive = true, responsiveSpecified = true, method = new [] { new method { handwritten = signingInfo.isInk, handwrittenSpecified = signingInfo.isInk, Value = "nbid-sign" }, new method { handwritten = signingInfo.isInk, handwrittenSpecified = signingInfo.isInk, Value = "nbid-mobil-sign" } } } }; return(signature); } if (signingInfo.signingMetodText == "nemid") { var signature = new[] { new signature { responsive = true, responsiveSpecified = true, method = new [] { new method { handwritten = signingInfo.isInk, handwrittenSpecified = signingInfo.isInk, Value = "nemid-sign" } } } }; return(signature); } return(null); }
internal task[] AddNotifyMe(SigningInfo signingInfo, task[] tasks) { try { var header = Resources.Resourceeng.signicatmessage; var message = Resources.Resourceeng.signicatsigned; if (signingInfo.LCID == 1044) { header = Resources.Resourcenb.signicatmessage; message = Resources.Resourcenb.signicatsigned; } for (int i = 0; i < tasks.Length; i++) { var notifyme = new notification { header = header, message = message, notificationid = "req_com_" + i, recipient = signingInfo.senderMail, sender = "*****@*****.**", type = notificationtype.EMAIL, schedule = new schedule[] { new schedule { stateis = taskstatus.completed } } }; //This notification is replaced by plugin //var tempList = tasks[i].notification.ToList(); //tempList.Add(notifyme); //tasks[i].notification = tempList.ToArray(); } return(tasks); } catch (Exception ex) { throw new Exception(ex.Message); } }
internal authenticationbasedsignature[] GetAuthSignatures(SigningInfo signingInfo) { if (signingInfo.signingMetodText != "nbid" && signingInfo.signingMetodText != "ink" && signingInfo.signingMetodText != "nemid") { var authsignature = new[] { new authenticationbasedsignature() { method = new method[] { new method { handwritten = signingInfo.isInk, handwrittenSpecified = signingInfo.isInk, Value = signingInfo.signingMetodText } } } }; return(authsignature); } //if (signingInfo.signingMetodText == "nbid") //{ // var authsignature = new[] // { // new authenticationbasedsignature // { // method = new method[] // { // new method // { // handwritten = signingInfo.isInk, // handwrittenSpecified = signingInfo.isInk, // Value = "nbid" // }, // new method // { // handwritten = signingInfo.isInk, // handwrittenSpecified = signingInfo.isInk, // Value = "nbid-mobil" // } // } // } // }; // return authsignature; //} if (signingInfo.signingMetodText == "ink") { var authsignature = new[] { new authenticationbasedsignature { method = new method[] { new method { handwritten = true, handwrittenSpecified = true } } } }; return(authsignature); } return(null); }
private request CreateRequest(sdsdocument[] documentInSds, List <ContactInfo> recipients, SigningInfo signingInfo) { try { var tasks = GetTasks(documentInSds, recipients, signingInfo); var documents = GetDocuments(documentInSds, recipients); if (signingInfo.notifyMe) { tasks = new NotificationHandler().AddNotifyMe(signingInfo, tasks); } var lang = "en"; if (signingInfo.LCID == 1044) { lang = "nb"; } var request = new request { clientreference = "cliref1", language = lang, profile = "default", //subject = GetSubjects(recipients), task = tasks, document = documents }; return(request); } catch (Exception ex) { throw new Exception(ex.Message); } }
internal createrequestrequest GetCreateRequest(sdsdocument[] documentInSds, List <ContactInfo> recipients, SigningInfo signingInfo) { try { request[] req = new[] { CreateRequest(documentInSds, recipients, signingInfo) }; var request = new createrequestrequest { password = "******", service = "prosesspilotene", request = req }; return(request); } catch (Exception ex) { throw new Exception(ex.Message); } }
private task[] GetTasks(sdsdocument[] documentInSds, List <ContactInfo> recipients, SigningInfo signingInfo) { try { var callbackOnTaskCompleteUrl = "https://prosesspilotenesignicatwebapi-preprod.azurewebsites.net:443/api/Callback/Landingpage?lcid=" + signingInfo.LCID; var signatures = new SignatureHandler().GetSignatures(signingInfo); var authSignatures = new SignatureHandler().GetAuthSignatures(signingInfo); var documentactions = GetDocumentActions(documentInSds, recipients); var randomnr = new Random(); int nr = randomnr.Next(10000); bool bundle = signingInfo.signingMetodText == "nbid"; var tasks = new task[recipients.Count]; for (int i = 0; i < recipients.Count; i++) { var notifications = new NotificationHandler().AddNotifications(recipients[i], signingInfo, i); tasks[i] = new task { id = "task_" + i + "_" + nr, // Any identifier you'd like subjectref = "sub_" + i, // Any identifier you'd like bundle = true, bundleSpecified = bundle, daystolive = signingInfo.daysToLive, documentaction = documentactions, signature = signatures, authenticationbasedsignature = authSignatures, ontaskcomplete = callbackOnTaskCompleteUrl, subject = new subject { id = "sub_" + i, email = recipients[i].email, mobile = !string.IsNullOrWhiteSpace(recipients[i].mobile) ? recipients[i].mobile : "22222222" //nationalid = recipients[i].ssn //National id mustbe inserted }, notification = notifications }; } return(tasks); } catch (Exception ex) { throw new Exception(ex.Message); } }
public string CreateSignRequest(sdsdocument uploadedDocument, string customerorg, string language, int method) { var lang = "en"; if (language == "1044") { lang = "nb"; } var signmethodText = new SignatureHandler().GetMethod(method); var signInfo = new SigningInfo(); signInfo.signingMetodText = signmethodText; signInfo.isInk = true; var authMethod = new SignatureHandler().GetAuthSignatures(signInfo); var signatures = new SignatureHandler().GetSignatures(signInfo); bool bundle = signInfo.signingMetodText == "nbid"; var request = new createrequestrequest { password = "******", service = "prosesspilotene", request = new request[] { new request { clientreference = "cliref1", language = lang, profile = "default", document = new document[] { new sdsdocument { id = uploadedDocument.id, refsdsid = uploadedDocument.refsdsid, description = uploadedDocument.description } }, subject = new subject[] { new subject { id = "subj_1", mobile = "99999999" //nationalid = "1909740939" } }, task = new task[] { new task { id = "task_1", subjectref = "subj_1", bundle = true, bundleSpecified = bundle, documentaction = new documentaction[] { new documentaction { type = documentactiontype.sign, documentref = uploadedDocument.id } }, authenticationbasedsignature = authMethod, signature = signatures } } } } }; for (int i = 0; i < request.request[0].task.Length; i++) { var callbackOnTaskCompleteUrl = "https://prosesspilotenesignicatwebapi-preprod.azurewebsites.net:443/api/Callback/Landingpage?lcid=" + Convert.ToString(language); var callbackNotificationUrl = "https://prosesspilotenesignicatwebapi-preprod.azurewebsites.net:443/api/Callback/GetSigning?orgname=" + customerorg; request.request[0].task[i].ontaskcomplete = callbackOnTaskCompleteUrl; request.request[0].task[i].notification = new[] { new notification { notificationid = "req_callback_" + i, type = notificationtype.URL, recipient = callbackNotificationUrl, message = "callbackurl", schedule = new [] { new schedule { stateis = taskstatus.completed } } } }; } createrequestresponse response; using (var client = new DocumentEndPointClient()) { response = client.createRequest(request); } return (String.Format("https://preprod.signicat.com/std/docaction/prosesspilotene?request_id={0}&task_id={1}", response.requestid[0], request.request[0].task[0].id)); }
internal void AddSmsNotification(createrequestresponse response, createrequestrequest request, SigningInfo signingInfo, int i, string url, string phonenr) { using (var client = new DocumentEndPointClient()) { var smsnotify = new notification { notificationid = "send_sms_" + i, type = notificationtype.SMS, recipient = phonenr, message = signingInfo.SMSText + " " + url }; var notifySmsReq = new addnotificationrequest { service = "prosesspilotene", notification = smsnotify, password = "******", requestid = response.requestid[0], taskid = request.request[0].task[i].id }; client.addNotification(notifySmsReq); } }
internal notification[] AddNotifications(ContactInfo recipeint, SigningInfo signingInfo, int i) { var header = Resources.Resourceeng.signicatmessage; var message1 = Resources.Resourceeng.signicatexpiration; var message2 = Resources.Resourceeng.signicatrejected; var message3 = Resources.Resourceeng.signicatexpired; var message4 = Resources.Resourceeng.signicatsigned; if (signingInfo.LCID == 1044) { header = Resources.Resourcenb.signicatmessage; message1 = Resources.Resourcenb.signicatexpiration; message2 = Resources.Resourcenb.signicatrejected; message3 = Resources.Resourcenb.signicatexpired; message4 = Resources.Resourcenb.signicatsigned; } var callbackNotificationUrl = "https://prosesspilotenesignicatwebapi-preprod.azurewebsites.net:443/api/Callback/GetSigning?orgname=" + signingInfo.customerOrg; var callbackExpUrl = "https://prosesspilotenesignicatwebapi-preprod.azurewebsites.net:443/api/Callback/DeactivateSigning?orgname=" + signingInfo.customerOrg; var expiration = 0; if (signingInfo.daysToLive > 2) { expiration = signingInfo.daysToLive - 2; } return(new[] { new notification { notificationid = "req_callback_" + i, type = notificationtype.URL, recipient = callbackNotificationUrl, message = "callbackurl", schedule = new [] { new schedule { stateis = taskstatus.completed } } }, new notification { notificationid = "req_expurl_" + i, recipient = callbackExpUrl, message = "callbackurl", type = notificationtype.URL, schedule = new[] { new schedule { stateis = taskstatus.expired } } }, new notification { header = header, message = message1, notificationid = "req_exp_" + i, recipient = recipeint.email, sender = "*****@*****.**", type = notificationtype.EMAIL, schedule = new[] { new schedule { stateis = taskstatus.created, waituntil = DateTime.Now.AddDays(expiration), waituntilSpecified = true } } }, new notification { header = header, message = message2, notificationid = "req_rej_" + i, recipient = signingInfo.senderMail, sender = "*****@*****.**", type = notificationtype.EMAIL, schedule = new schedule[] { new schedule { stateis = taskstatus.rejected, } } }, new notification { header = header, message = message3, notificationid = "req_expd_" + i, recipient = signingInfo.senderMail, sender = "*****@*****.**", type = notificationtype.EMAIL, schedule = new schedule[] { new schedule { stateis = taskstatus.expired, } } } }); }