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);
        }
예제 #3
0
        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);
            }
        }
예제 #8
0
        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));
        }
예제 #9
0
        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);
            }
        }
예제 #10
0
        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,
                        }
                    }
                }
            });
        }