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); }
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; } }
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)); } }
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(); }
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); }
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 }
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==" }); }
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)); }
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"); }
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)); }
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); }
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) })); }
public string BuildCredentials(SignatureRequest arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } return(arg.Credential); }
public string BuildBody(SignatureRequest arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } return(arg.Body); }
public override Task <SignatureReply> Validate(SignatureRequest request, ServerCallContext context) { return(Task.FromResult(new SignatureReply() { Message = Guid.NewGuid().ToString(), IsSigned = true, Authority = Authority })); }
public string BuildTimestamp(SignatureRequest arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } return(arg.Timestamp.ToUniversalTime().ToIso8601Format()); }
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); }
public string BuildAlgorithm(SignatureRequest arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } return(arg.Algorithm.ToUpperInvariant()); }
public string BuildUrl(SignatureRequest arg) { if (arg == null) { throw new ArgumentNullException(nameof(arg)); } return(arg.Url.GetLeftPart(UriPartial.Path).UriEncode(false)); }
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()); }
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)); }
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()); }
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" }); }
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);
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 }