Exemple #1
0
        public void SendSignatureRequestForTemplateTest()
        {
            // build signature request
            SignatureRequest signatureRequest = new SignatureRequest();

            signatureRequest.SendEmails = false;

            Document document = new Document();

            document.ID = idOfTheTemplate;

            Signer signer = new Signer(signers["signer1"]["email"]);

            document.Signers.Add(signer);
            signatureRequest.Documents.Add(document);

            // execute signature request
            DigiSignerClient client = new DigiSignerClient(apiId);
            SignatureRequest signatureRequestResponse = client.SendSignatureRequest(signatureRequest);

            // validate signature request response
            ValidateResponse(signatureRequest, signatureRequestResponse, false);

            // get and validate signature request from database
            String           signatureRequestId      = signatureRequestResponse.SignatureRequestId;
            SignatureRequest createdSignatureRequest = client.GetSignatureRequest(signatureRequestId);

            ValidateSignatureRequest(signatureRequest, createdSignatureRequest, false);
        }
Exemple #2
0
        public IActionResult Index()
        {
            var fileName = "file-example_PDF_1MB.pdf";

            //delete previously downloaded file
            System.IO.File.Delete($"C:\\Users\\miguelp\\source\\repos\\HelloSignWebApp\\HelloSignWebApp\\{fileName}");

            //download document to sign
            var webClient = new System.Net.WebClient();
            var remoteUri = "https://file-examples.com/wp-content/uploads/2017/10/";

            //saves by default to application startup path
            webClient.DownloadFile(remoteUri + fileName, fileName);

            //create signature request
            var client = new Client(API_KEY);

            var request = new SignatureRequest
            {
                Subject  = "My First embedded signature request",
                Message  = "Awesome, right?",
                TestMode = true
            };

            request.AddSigner("*****@*****.**", "Renzo McSign");
            request.AddFile($"C:\\Users\\miguelp\\source\\repos\\HelloSignWebApp\\HelloSignWebApp\\{fileName}");

            var response = client.CreateEmbeddedSignatureRequest(request, CLIENT_ID);

            return(View(new HomeViewModel
            {
                ClientId = CLIENT_ID,
                SignUrl = client.GetSignUrl(response.Signatures.First().SignatureId).SignUrl
            }));
        }
        public void FailToCreateSignature_WithBadParameters()
        {
            var request = new SignatureRequest {
                Base64Content = Convert.ToBase64String(new byte[] { 5 })
            };
            var badRequest = new SignatureRequest {
                Base64Content = "2"
            };

            Assert.ThrowsAsync <HttpRequestException>(
                async() => await Client.Drafts.AddDocumentSignatureAsync(
                    Guid.Empty,
                    draft.Id,
                    filledDocument.Id,
                    request));
            Assert.ThrowsAsync <HttpRequestException>(
                async() => await Client.Drafts.AddDocumentSignatureAsync(
                    Account.Id,
                    Guid.Empty,
                    filledDocument.Id,
                    request));
            Assert.ThrowsAsync <HttpRequestException>(
                async() => await Client.Drafts.AddDocumentSignatureAsync(Account.Id, draft.Id, Guid.Empty, request));
            Assert.ThrowsAsync <HttpRequestException>(
                async() => await Client.Drafts.AddDocumentSignatureAsync(
                    Account.Id,
                    draft.Id,
                    filledDocument.Id,
                    badRequest));
        }
        /// <summary>Snippet for MethodLroSignatures</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public void MethodLroSignaturesRequestObject()
        {
            // Create client
            SnippetsClient snippetsClient = SnippetsClient.Create();
            // Initialize request argument(s)
            SignatureRequest request = new SignatureRequest
            {
                AString      = "",
                AnInt        = 0,
                ABool        = false,
                MapIntString = { { 0, "" }, },
            };
            // Make the request
            Operation <LroResponse, LroMetadata> response = snippetsClient.MethodLroSignatures(request);

            // Poll until the returned long-running operation is complete
            Operation <LroResponse, LroMetadata> completedResponse = response.PollUntilCompleted();
            // Retrieve the operation result
            LroResponse result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <LroResponse, LroMetadata> retrievedResponse = snippetsClient.PollOnceMethodLroSignatures(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                LroResponse retrievedResult = retrievedResponse.Result;
            }
        }
Exemple #5
0
        public IActionResult PostSignature([FromServices] ISignatureBuilder builder, [FromBody] SignatureRequest body) // aspnetcore built-in injection, see: startup.cs
        {
            try
            {
                string username, password;
                ExtractHeaderValues(Request.Headers, out username, out password);

                if (body == null)
                {
                    throw new SigSvcPostBodyError("Error converting POST body json to SignatureRequest object.  Check structure of request, and Json in jsonlint.com for validity.");
                }

                IResponse response;
                if (builder.Build(body, username, password, out response))
                {
                    return(ResultFormatter.Format(200, response));
                }
                else
                {
                    return(ResultFormatter.Format(400, response));
                }
            }
            catch (Exception exc)
            {
                _logger.Error(exc, "POST signature");
                return(ResultFormatter.Format(500, exc));
            }
        }
Exemple #6
0
        public void Can_verify_signature_with_multiple_signed_headers()
        {
            var uri    = new Uri("https://intelliflo.com");
            var method = "POST";
            var body   = "hey";

            var unsignedRequest = SignatureRequest.CreateSignRequest(uri, time, appId, secret, method, body);

            unsignedRequest.Headers.Add("Content-Type", "text/plain");
            unsignedRequest.Headers.Add("Accept", "text/plain");
            unsignedRequest.SignedHeaders.Clear();
            foreach (var key in unsignedRequest.Headers.Keys)
            {
                unsignedRequest.SignedHeaders.Add(key);
            }

            var signedUrl = underTest.Sign(unsignedRequest);

            var signedRequest = SignatureRequest.CreateVerificationRequest(signedUrl, time.AddSeconds(1), secret, method, 60, body, unsignedRequest.Headers);

            signedRequest.SignedHeaders.Clear();

            foreach (var header in unsignedRequest.SignedHeaders)
            {
                signedRequest.SignedHeaders.Add(header);
            }

            underTest.Verify(signedRequest).Should().BeTrue();
        }
Exemple #7
0
        public void SendSignatureRequestTest()
        {
            // build signature request
            SignatureRequest signatureRequest = new SignatureRequest();

            signatureRequest.SendEmails = false;

            // add document from file and one signer
            Document document = new Document(relativePathToFileOfTheDocument);

            document.Signers.Add(new Signer(signers["signer1"]["email"]));
            signatureRequest.Documents.Add(document);

            // execute signature request
            DigiSignerClient client = new DigiSignerClient(apiId);
            SignatureRequest signatureRequestResponse = client.SendSignatureRequest(signatureRequest);

            // validate signature request response
            ValidateResponse(signatureRequest, signatureRequestResponse, true);

            // get and validate signature request from database
            string           signatureRequestId      = signatureRequestResponse.SignatureRequestId;
            SignatureRequest createdSignatureRequest = client.GetSignatureRequest(signatureRequestId);

            ValidateSignatureRequest(signatureRequest, createdSignatureRequest, true);
        }
Exemple #8
0
        public void SendSignatureRequestWithBrandingTest()
        {
            // build signature request
            SignatureRequest signatureRequest = new SignatureRequest();

            signatureRequest.SendEmails = false;

            // add document from file and one signer
            Document document = new Document(relativePathToFileOfTheDocument);

            document.Signers.Add(new Signer(signers["signer1"]["email"]));
            signatureRequest.Documents.Add(document);

            // add branding info
            signatureRequest.Branding.EmailFromField = "Your company";
            signatureRequest.Branding.ReplyToEmail   = "*****@*****.**";

            // execute signature request
            DigiSignerClient client = new DigiSignerClient(apiId);
            SignatureRequest signatureRequestResponse = client.SendSignatureRequest(signatureRequest);

            // validate signature request response
            ValidateResponse(signatureRequest, signatureRequestResponse, true);

            // get and validate signature request from database
            string           signatureRequestId      = signatureRequestResponse.SignatureRequestId;
            SignatureRequest createdSignatureRequest = client.GetSignatureRequest(signatureRequestId);

            ValidateSignatureRequest(signatureRequest, createdSignatureRequest, true);
        }
        /// <summary>Snippet for MethodServerStreaming</summary>
        /// <remarks>
        /// This snippet has been automatically generated for illustrative purposes only.
        /// It may require modifications to work in your environment.
        /// </remarks>
        public async Task MethodServerStreamingRequestObject()
        {
            // Create client
            SnippetsClient snippetsClient = SnippetsClient.Create();
            // Initialize request argument(s)
            SignatureRequest request = new SignatureRequest
            {
                AString      = "",
                AnInt        = 0,
                ABool        = false,
                MapIntString = { { 0, "" }, },
            };

            // Make the request, returning a streaming response
            SnippetsClient.MethodServerStreamingStream response = snippetsClient.MethodServerStreaming(request);

            // Read streaming responses from server until complete
            // Note that C# 8 code can use await foreach
            AsyncResponseStream <Response> responseStream = response.GetResponseStream();

            while (await responseStream.MoveNextAsync())
            {
                Response responseItem = responseStream.Current;
                // Do something with streamed response
            }
            // The response stream has completed
        }
Exemple #10
0
        public void CreateVerificationRequest_With_Default_Parameters_Should_Initialize_Request_From_Url_And_Parameters_ExpirySeconds_Value_Is_Not_Initialized()
        {
            var actual = SignatureRequest.CreateVerificationRequest(
                new Uri("http://dragon.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=xxx&x-iflo-Date=20180222T114639Z&x-iflo-Expires=900&x-iflo-SignedHeaders=host&x-iflo-Signature=taa0agcaugbwaeyamqb0afoavga1ahuavabnahaavwbvaesasgbrafkaawbtaegangbyafeamqbhaegazaa4aeuadab6aheaqgbladeaaqbqadaacwa9aa=="),
                new DateTime(2013, 5, 23, 10, 11, 13, DateTimeKind.Utc),
                "secret1",
                "POST");

            actual.Should().BeEquivalentTo(
                new SignatureRequest
            {
                Algorithm = "IO2-HMAC-SHA256",
                Body      = null,
                Headers   = new Dictionary <string, string>
                {
                    ["Host"] = "dragon.local.co.uk"
                },
                Credential    = "xxx",
                CurrentTime   = new DateTime(2013, 5, 23, 10, 11, 13),
                Url           = new Uri("http://dragon.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=xxx&x-iflo-Date=20180222T114639Z&x-iflo-Expires=900&x-iflo-SignedHeaders=host&x-iflo-Signature=taa0agcaugbwaeyamqb0afoavga1ahuavabnahaavwbvaesasgbrafkaawbtaegangbyafeamqbhaegazaa4aeuadab6aheaqgbladeaaqbqadaacwa9aa=="),
                Method        = "POST",
                ExpirySeconds = 60,
                SignedHeaders = new List <string>
                {
                    "Host"
                },
                Timestamp = new DateTime(2018, 2, 22, 11, 46, 39, DateTimeKind.Utc),
                Secret    = "secret1",
                Signature = "taa0agcaugbwaeyamqb0afoavga1ahuavabnahaavwbvaesasgbrafkaawbtaegangbyafeamqbhaegazaa4aeuadab6aheaqgbladeaaqbqadaacwa9aa=="
            });
        }
Exemple #11
0
        public void CreateSignRequest_With_Default_Parameters_Should_Create_Expected_Request()
        {
            var actual = SignatureRequest.CreateSignRequest(
                new Uri("http://google.com?q=dragon"),
                new DateTime(2013, 5, 23, 10, 11, 13, DateTimeKind.Utc),
                "credential1",
                "secret1");


            actual.Should().BeEquivalentTo(
                new SignatureRequest
            {
                Algorithm = "IO2-HMAC-SHA256",
                Body      = null,
                Headers   = new Dictionary <string, string>
                {
                    ["Host"] = "google.com"
                },
                Credential    = "credential1",
                CurrentTime   = DateTime.MinValue,
                Url           = new Uri("http://google.com?q=dragon"),
                Method        = "GET",
                ExpirySeconds = 60,
                SignedHeaders = new List <string>
                {
                    "Host"
                },
                Timestamp = new DateTime(2013, 5, 23, 10, 11, 13, DateTimeKind.Utc),
                Secret    = "secret1",
                Signature = null
            });
        }
        public void PostSignatureTest()
        {
            Field[] fields =
            {
                new Field
                {
                    Name      = "caseName",
                    Value     = "Hollywood Mogul vs. Oil Shotgun Well",
                    DataType  = "string",
                    FieldType = "text"
                },
                new Field
                {
                    Name      = "claimantName",
                    Value     = "Jed Clampett",
                    DataType  = "string",
                    FieldType = "text"
                }
            };

            SignatureRequest request = new SignatureRequest
            {
                DocuSignTemplateId = _W4_Template,
                EmailAddresses     = new string[] { "*****@*****.**" },
                Subject            = "SigSvc Integration Test Send. Your Document is ready to sign",
                Name   = "Marty Mazurik",
                Fields = fields
            };

            ISignatureBuilder builder = new SignatureBuilder(_api, _config, null);      // fix test _repo would need to be set up
            IResponse         response;

            Assert.IsTrue(builder.Build(request, "*****@*****.**", _password, out response));
        }
Exemple #13
0
        static void sendSignatureRequest(HelloSign.Client client)
        {
            Console.WriteLine("4 - endTemplateSignatureRequest******************************************************* BEGIN");

            //var account = client.GetAccount();
            //Console.WriteLine("My Account ID is: " + account.AccountId);
            try
            {
                var request = new SignatureRequest();
                request.Title   = "C# sending a signature request";
                request.Subject = "C# send signature Request";
                request.Message = "Please sign this NDA and then we can discuss more. Let me know if you have questions";
                request.AddSigner("*****@*****.**", "Jack");
                request.AddSigner("*****@*****.**", "Jill");
                request.TestMode = true;
                request.AddFile("C:\\Users\\IEUser\\Downloads\\NDA10.pdf");
                var response = client.SendSignatureRequest(request);
                Console.WriteLine(response.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message + " " + ex.StackTrace);
            }


            Console.WriteLine("3 - Send signature_request*************************************************************** END");
        }
Exemple #14
0
        public Uri Sign(SignatureRequest arg)
        {
            if (arg == null)
            {
                throw new ArgumentNullException(nameof(arg));
            }

            if (!arg.Algorithm.Equals(AlgorithmName, StringComparison.OrdinalIgnoreCase))
            {
                throw new ArgumentException($"Algorithm \"{arg.Algorithm}\" is not supported", nameof(arg));
            }

            var urlBuilder = new UrlBuilder();

            urlBuilder.AddAbsoluteUri(arg.Url.AbsoluteUri);
            urlBuilder.AddQueryParam(SignatureRequest.AlgorithmKey, canonicalStringBuider.BuildAlgorithm(arg));
            urlBuilder.AddQueryParam(SignatureRequest.CredentialKey, canonicalStringBuider.BuildCredentials(arg));
            urlBuilder.AddQueryParam(SignatureRequest.DateKey, canonicalStringBuider.BuildTimestamp(arg));
            urlBuilder.AddQueryParam(SignatureRequest.SignedHeadersKey, canonicalStringBuider.BuildSignedHeaders(arg));

            var stringToSign = BuildStringToSign(arg);
            var signature    = hashCalculator.GetStringToSignHash(
                stringToSign,
                arg.Secret);

            urlBuilder.AddQueryParam(SignatureRequest.SignatureKey, signature);

            return(urlBuilder.ToUri(true));
        }
Exemple #15
0
        public async Task CreateSignatureRequest(SignatureRequest model, string userId)
        {
            List <UserSignature> list = new List <UserSignature>();

            model.Recipients.ForEach(x =>
            {
                list.Add(new UserSignature()
                {
                    UserId = x
                });
            });
            Signature signature = new Signature()
            {
                AuthorId       = userId,
                CreateDate     = DateTime.UtcNow,
                UserSignatures = list
            };

            using (MemoryStream ms = new MemoryStream())
            {
                await model.File.CopyToAsync(ms);

                signature.FileId = await _filesRepository.Save(ms, model.File.FileName);
            }
            await _signatureRepository.Create(signature);
        }
Exemple #16
0
        public override Task <SignatureResponse> Generate(SignatureRequest request, Grpc.Core.ServerCallContext context)
        {
            var byteString = Sign(request.LicenseKey);

            return(Task.FromResult(new SignatureResponse {
                Signature = Convert.ToBase64String(byteString)
            }));
        }
Exemple #17
0
            public string BuildCredentials(SignatureRequest arg)
            {
                if (arg == null)
                {
                    throw new ArgumentNullException(nameof(arg));
                }

                return(arg.Credential);
            }
Exemple #18
0
            public string BuildBody(SignatureRequest arg)
            {
                if (arg == null)
                {
                    throw new ArgumentNullException(nameof(arg));
                }

                return(arg.Body);
            }
Exemple #19
0
 public override Task <SignatureReply> Validate(SignatureRequest request, ServerCallContext context)
 {
     return(Task.FromResult(new SignatureReply()
     {
         Message = Guid.NewGuid().ToString(),
         IsSigned = true,
         Authority = Authority
     }));
 }
Exemple #20
0
            public string BuildTimestamp(SignatureRequest arg)
            {
                if (arg == null)
                {
                    throw new ArgumentNullException(nameof(arg));
                }

                return(arg.Timestamp.ToUniversalTime().ToIso8601Format());
            }
Exemple #21
0
        public void SendSignatureRequestWithExistingFieldsForTemplateTest()
        {
            // build signature request
            SignatureRequest signatureRequest = new SignatureRequest();

            signatureRequest.SendEmails = false;

            Document document = new Document(relativePathToFileOfTheDocument);

            document.ID = idOfTheDocumentWithFileds;

            // add first signer
            Signer signer = new Signer(signers["signer1"]["email"]);

            signer.Role  = "Employee";
            signer.Order = 1;

            // add field for first signer
            ExistingField field1 = new ExistingField((string)existingField1["fieldId"]);

            field1.Content  = (string)existingField1["content"];
            field1.Label    = (string)existingField1["label"];
            field1.Required = (bool)existingField1["required"];
            field1.ReadOnly = (bool)existingField1["readonly"];
            signer.ExistingFields.Add(field1);

            // add second field to first signer
            ExistingField field2 = new ExistingField((string)existingField2["fieldId"]);

            field2.Content  = (string)existingField2["content"];
            field2.Label    = (string)existingField2["label"];
            field2.Required = (bool)existingField2["required"];
            field2.ReadOnly = (bool)existingField2["readonly"];
            signer.ExistingFields.Add(field2);

            document.Signers.Add(signer);
            signatureRequest.Documents.Add(document);

            // execute signature request
            DigiSignerClient client = new DigiSignerClient(apiId);
            SignatureRequest signatureRequestResponse = client.SendSignatureRequest(signatureRequest);

            // validate signature request response
            ValidateResponse(signatureRequest, signatureRequestResponse, false);

            // get and validate signature request from database
            SignatureRequest createdSignatureRequest = client.GetSignatureRequest(
                signatureRequestResponse.SignatureRequestId);

            ValidateSignatureRequest(signatureRequest, createdSignatureRequest, false);

            // get and validate fields from database
            Document       expectedDocument = signatureRequest.Documents[0];
            DocumentFields documentFields   = client.GetDocumentFields(createdSignatureRequest.Documents[0].ID);

            ValidateDocumentFields(expectedDocument, documentFields);
        }
Exemple #22
0
            public string BuildAlgorithm(SignatureRequest arg)
            {
                if (arg == null)
                {
                    throw new ArgumentNullException(nameof(arg));
                }

                return(arg.Algorithm.ToUpperInvariant());
            }
Exemple #23
0
            public string BuildUrl(SignatureRequest arg)
            {
                if (arg == null)
                {
                    throw new ArgumentNullException(nameof(arg));
                }

                return(arg.Url.GetLeftPart(UriPartial.Path).UriEncode(false));
            }
Exemple #24
0
        public async Task <IActionResult> CreateSignatureRequest([FromBody] SignatureRequest model)
        {
            if (!ModelState.IsValid)
            {
                throw new SignatureException("Not valid data to signature", System.Net.HttpStatusCode.BadRequest);
            }
            await _signatureService.CreateSignatureRequest(model, CurrentUser.Id);

            return(Ok());
        }
Exemple #25
0
        public static Task UpdateAsync(this DraftDocumentSignaturePath path, Base64String signature, TimeSpan?timeout = null)
        {
            var apiClient        = path.Services.Api;
            var signatureRequest = new SignatureRequest
            {
                Base64Content = signature.ToString()
            };

            return(apiClient.Drafts.UpdateSignatureAsync(path.AccountId, path.DraftId, path.DocumentId, path.SignatureId, signatureRequest, timeout));
        }
Exemple #26
0
        private string BuildStringToSign(SignatureRequest arg)
        {
            var builder = new StringBuilder();

            builder.Append(canonicalStringBuider.BuildAlgorithm(arg) + "\n");
            builder.Append(canonicalStringBuider.BuildTimestamp(arg) + "\n");
            builder.Append(hashCalculator.GetCanonicalRequestHash(BuildCanonicalRequest(arg)));

            return(builder.ToString());
        }
Exemple #27
0
        public static IEnumerable <object[]> CreateTestCases()
        {
            yield return(new object[]
            {
                SignatureRequest.CreateSignRequest(
                    new Uri(
                        "http://development.matrix.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701"),
                    new DateTime(2018, 2, 22, 11, 46, 39, DateTimeKind.Utc),
                    "xxx",
                    "fbd9844",
                    "GET",
                    null,
                    900),
                "http://development.matrix.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=xxx&x-iflo-Date=20180222T114639Z&x-iflo-SignedHeaders=host&x-iflo-Signature=52ca5b4b18373eb2d255eb9ee68bc8968a0ace9d69b8870c4aed37dd1bc2e7c3"
            });

            yield return(new object[]
            {
                SignatureRequest.CreateSignRequest(
                    new Uri(
                        "http://development.matrix.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https%3A%2F%2Fuat-apps.intelligent-office.net%2Fpreview-apps%2Ffbd9844%2Finstall%2Fpreview%3Ftoken%3Dfbd9844-1518435999701"),
                    new DateTime(2019, 2, 22, 11, 46, 39, DateTimeKind.Utc),
                    "aaa",
                    "fbd9844"),
                "http://development.matrix.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https:%2F%2Fuat-apps.intelligent-office.net%2Fpreview-apps%2Ffbd9844%2Finstall%2Fpreview%3Ftoken%3Dfbd9844-1518435999701&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=aaa&x-iflo-Date=20190222T114639Z&x-iflo-SignedHeaders=host&x-iflo-Signature=1e8504d60c37391426e233818b9f2cd7dde4f2bd6e3719609103d09d28f30db6"
            });

            yield return(new object[]
            {
                SignatureRequest.CreateSignRequest(
                    new Uri(
                        "http://dragon.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701"),
                    new DateTime(2018, 2, 22, 11, 46, 39, DateTimeKind.Utc),
                    "xxx",
                    "fbd9844",
                    "GET",
                    null,
                    900),
                "http://dragon.local.co.uk/Pages/Account/IOAppInstall.aspx?event=before_appinstall&ioUserID=81960&ioAppID=fbd9844&ioReturnUrl=https://uat-apps.intelligent-office.net/preview-apps/fbd9844/install/preview?token=fbd9844-1518435999701&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=xxx&x-iflo-Date=20180222T114639Z&x-iflo-SignedHeaders=host&x-iflo-Signature=8cc267d46588af28dab6404eaa0e92986895ea21d3a369f3496634b92ad1921a"
            });

            yield return(new object[]
            {
                SignatureRequest.CreateSignRequest(
                    new Uri(
                        "https://developer.intelliflo.com/docs/Pre-SignedURLs?x=y&foo=bar"),
                    new DateTime(2018, 2, 22, 11, 46, 39, DateTimeKind.Utc),
                    "myCredential",
                    "mySecret",
                    "GET",
                    null,
                    900),
                "https://developer.intelliflo.com/docs/Pre-SignedURLs?x=y&foo=bar&x-iflo-Algorithm=IO2-HMAC-SHA256&x-iflo-Credential=myCredential&x-iflo-Date=20180222T114639Z&x-iflo-SignedHeaders=host&x-iflo-Signature=7664790e62b988b01ebff76716cd5c6c651cc6b0ba350c7b6be29278f347a77e"
            });
        }
Exemple #28
0
        public void CanSignTransactionStandardMode()
        {
            var ledger = GetLedger();

            var walletPubKey = ledger.GetWalletPubKey(new KeyPath("1'/0"));
            var address      = (BitcoinAddress)walletPubKey.Address;

            var changeAddress = (BitcoinAddress)ledger.GetWalletPubKey(new KeyPath("1'/1")).Address;

            Transaction funding = new Transaction();

            funding.AddInput(Network.Main.GetGenesis().Transactions[0].Inputs[0]);
            funding.Outputs.Add(new TxOut(Money.Coins(1.1m), address));
            funding.Outputs.Add(new TxOut(Money.Coins(1.0m), address));
            funding.Outputs.Add(new TxOut(Money.Coins(1.2m), address));

            var coins = funding.Outputs.AsCoins();

            var spending = new Transaction();

            spending.LockTime = 1;
            spending.Inputs.AddRange(coins.Select(o => new TxIn(o.Outpoint, o.ScriptPubKey)));
            //spending.Inputs.Add(new TxIn(new OutPoint(uint256.Zero, 0), Script.Empty));
            spending.Outputs.Add(new TxOut(Money.Coins(0.5m), BitcoinAddress.Create("15sYbVpRh6dyWycZMwPdxJWD4xbfxReeHe")));
            spending.Outputs.Add(new TxOut(Money.Coins(0.8m), changeAddress));
            spending.Outputs.Add(new TxOut(Money.Zero, TxNullDataTemplate.Instance.GenerateScriptPubKey(new byte[] { 1, 2 })));


            var requests = new SignatureRequest[] {
                new SignatureRequest()
                {
                    InputCoin        = new Coin(funding, 0),
                    InputTransaction = funding,
                    KeyPath          = new KeyPath("1'/0")
                },
                new SignatureRequest()
                {
                    InputCoin        = new Coin(funding, 1),
                    InputTransaction = funding,
                    KeyPath          = new KeyPath("1'/0")
                },
                new SignatureRequest()
                {
                    InputCoin        = new Coin(funding, 2),
                    InputTransaction = funding,
                    KeyPath          = new KeyPath("1'/0")
                },
            };

            //should show 0.5 and 2.0 btc in fee
            var signed = ledger.SignTransaction(requests, spending, new KeyPath("1'/1"), true);

            //Assert.Equal(Script.Empty, spending.Inputs.Last().ScriptSig);
            Assert.NotNull(signed);
        }
 public async Task <Signature> AddDocumentSignatureAsync(
     Guid accountId,
     Guid draftId,
     Guid documentId,
     SignatureRequest request = null,
     TimeSpan?timeout         = null) =>
 await client.SendRequestAsync <Signature>(
     HttpMethod.Post,
     $"/v1/{accountId}/drafts/{draftId}/documents/{documentId}/signatures",
     contentDto : request,
     timeout : timeout);
Exemple #30
0
        public void Verify_When_v2_Algorithm_User_Should_Return_True(string url, string method, string body, int futureSeconds)
        {
            var uri = new Uri(url);

            var unsignedRequest = SignatureRequest.CreateSignRequest(uri, time, appId, secret, method, body, algorithm: "IO2-HMAC-SHA256");

            var signedUrl = underTest.Sign(unsignedRequest);

            var signedRequest = SignatureRequest.CreateVerificationRequest(signedUrl, time.AddSeconds(futureSeconds), secret, method, 60, body);

            underTest.Verify(signedRequest).Should().BeTrue();
        }
        private List<SignatureRequest> BuildSignatureRequests(string documentType)
        {
            List<SignatureRequest> lstSignatureRequests = new List<SignatureRequest>();

            //Entity
            SignatureRequest signatureRequestEntity = new SignatureRequest()
            {
                label = ENTITY,
                rendering = BuildSignatureRendering(_Scenario.EntityLayout),
                type = documentType                
            };

            lstSignatureRequests.Add(signatureRequestEntity);

            return lstSignatureRequests;
        }
        public void SignatureRequired(SignatureRequest signatureRequest, Device device)
        {
            // You'll be notified here if a sale process needs a signature verification
            // A signature verification is only needed if the cardholder uses a magnetic stripe card or a chip and signature card for the payment
            // This method will not be invoked if a transaction is made with a Chip & Pin card

            api.SignatureResult(true); // This line means that the cardholder ALWAYS accepts to sign the receipt.
            // A specific line will be displayed on the merchant receipt for the cardholder to be able to sign it
        }