public static void ListAllCardholders() { Chilkat.Rest rest = new Chilkat.Rest(); bool success; // URL: https://api.stripe.com/v1/balance bool bTls = true; int port = 443; bool bAutoReconnect = true; success = rest.Connect("api.stripe.com", port, bTls, bAutoReconnect); if (success != true) { Log("ConnectFailReason: " + Convert.ToString(rest.ConnectFailReason)); Log(rest.LastErrorText); return; } Chilkat.StringBuilder sbResponseBody = new Chilkat.StringBuilder(); success = rest.FullRequestNoBodySb("GET", "/v1/issuing/cardholders", sbResponseBody); if (success != true) { Log(rest.LastErrorText); return; } Chilkat.JsonObject jsonResponse = new Chilkat.JsonObject(); jsonResponse.LoadSb(sbResponseBody); var o = jsonResponse.StringOf("object"); var livemode = jsonResponse.BoolOf("livemode"); }
private byte[] EscapeText(byte[] encodableString) { Chilkat.StringBuilder sb = new Chilkat.StringBuilder(); sb.Append(ByteArrayToString(encodableString)); sb.Encode("json", "utf-8"); byte[] escapedString = StringToByteArray(sb.GetAsString()); return(escapedString); }
public async Task Get_EndpointsReturnSuccessAndCorrectContentType(string url) { // Arrange AuthenticationManager authenticationManager = new AuthenticationManager(); authenticationManager.client = _factory.CreateClient(); File.WriteAllBytes("rsaCert.pfx", Startup.RsaCertPfxBytes); Chilkat.Pfx pfx = new Chilkat.Pfx(); if (File.Exists("rsaCert.pfx")) { pfx.LoadPfxFile("rsaCert.pfx", "12345"); } File.Delete("rsaCert.pfx"); // Act //public key from certificate //Chilkat package is used to process X509 certificate 2 from pfx file to JWKS (Json Web Key Set) from which it is possible //to extract public key X5c. Key is then compared with the one pulled from mocked server. string alias = "my_ecc_key1"; string password = "******"; Chilkat.JavaKeyStore jks = pfx.ToJavaKeyStore(alias, password); Chilkat.StringBuilder sbJwkSet = new Chilkat.StringBuilder(); jks.ToJwkSet(password, sbJwkSet); Chilkat.JsonObject jwkSet = new Chilkat.JsonObject(); jwkSet.LoadSb(sbJwkSet); jwkSet.EmitCompact = false; var jwksCheck = jwkSet.Emit(); JsonWebKeySet jwkscheck = new JsonWebKeySet(jwksCheck); List <JsonWebKey> keyList2 = new List <JsonWebKey>(jwkscheck.Keys); string publicKey2 = keyList2[0].X5c[0]; //response from server System.Net.Http.HttpResponseMessage response = await authenticationManager.client.GetAsync(url); //public key from endpoint string publicKey = authenticationManager.GetPublicKey(url); // Assert response.EnsureSuccessStatusCode(); // Status Code 200-299 Assert.Equal(publicKey2, publicKey); authenticationManager.client.Dispose(); _factory.Dispose(); }
static public ArrayList GetGenericClassNameList() { Chilkat.StringTable st = new Chilkat.StringTable(); if (m_classListText == null) { m_classListText = AppData.GetAppData("appData/apiManager/classList.txt"); if (m_classListText == null) { return(null); } } Chilkat.StringBuilder sb = new Chilkat.StringBuilder(); sb.Append(m_classListText); if (!st.AppendFromSb(sb)) { return(null); } ArrayList alist = new ArrayList(); int n = st.Count; int i; for (i = 0; i < n; i++) { string cname = st.StringAt(i); if (string.IsNullOrWhiteSpace(cname)) { continue; } alist.Add(cname); } return(alist); }
// URLs to help understand this topic: // https://developers.google.com/identity/protocols/OAuth2InstalledApp // private bool oauth2_google(string scope) { // Generates state and PKCE values. string state = m_prng.GenRandom(32, base64Url); string code_verifier = m_prng.GenRandom(32, base64Url); Chilkat.Crypt2 crypt = new Chilkat.Crypt2(); crypt.EncodingMode = base64Url; crypt.HashAlgorithm = "SHA256"; string code_challenge = crypt.HashStringENC(code_verifier); const string code_challenge_method = "S256"; //Create a Chilkat socket for listening. Begin listening asynchronously. Chilkat.Socket listenSocket = new Chilkat.Socket(); int backlog = 5; int listenPort = 0; // Passing a listenPort = 0 causes BindAndListen to find a random unused port. // The chosen port will be available via the ListenPort property. if (!listenSocket.BindAndListen(listenPort, backlog)) { fgAppendToErrorLog(listenSocket.LastErrorText); popupError("Failed to BindAndListen"); return(false); } // Get the chosen listen port // This ListenPort property is available starting in Chilkat v9.5.0.59 listenPort = listenSocket.ListenPort; // Creates a redirect URI using an available port on the loopback address. string redirect_uri = "http://127.0.0.1:" + listenPort.ToString() + "/"; //Wait a max of 5 minutes. The OnTaskCompleted event is called when an incoming connection //arrives, or when the listen failed. listenSocket.OnTaskCompleted += listenSocket_OnTaskCompleted; Chilkat.Task task = listenSocket.AcceptNextConnectionAsync(5 * 60000); if (task == null) { MessageBox.Show("Failed to start socket accept..."); return(false); } // Add some information that will be needed by the TaskCompleted event.. Chilkat.JsonObject taskData = new Chilkat.JsonObject(); taskData.AppendString("code_verifier", code_verifier); taskData.AppendString("redirect_uri", redirect_uri); task.UserData = taskData.Emit(); // Start the task. task.Run(); // Creates the OAuth 2.0 authorization request. Chilkat.StringBuilder sbAuthRequest = new Chilkat.StringBuilder(); sbAuthRequest.Append(authorizationEndpoint); sbAuthRequest.Append("?response_type=code&scope="); sbAuthRequest.Append(m_encoder.EncodeString(scope, "utf-8", "url")); sbAuthRequest.Append("&redirect_uri="); sbAuthRequest.Append(m_encoder.EncodeString(redirect_uri, "utf-8", "url")); sbAuthRequest.Append("&client_id="); sbAuthRequest.Append(googleAppClientId); sbAuthRequest.Append("&state="); sbAuthRequest.Append(state); sbAuthRequest.Append("&code_challenge="); sbAuthRequest.Append(code_challenge); sbAuthRequest.Append("&code_challenge_method="); sbAuthRequest.Append(code_challenge_method); // Here is a shorter way of building the URL in C# //string authorizationRequest = string.Format("{0}?response_type=code&scope={6}&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}", // authorizationEndpoint, // 0 // System.Uri.EscapeDataString(redirect_uri), // 1 // googleAppClientId, // 2 // state, // 3 // code_challenge, // 4 // code_challenge_method, // 5 // System.Uri.EscapeDataString(scope)); // 6 // Get authorization from Google account owner... webBrowser1.Navigate(sbAuthRequest.GetAsString()); return(true); }
private async void Button_Click(object sender, RoutedEventArgs e) { //var userId = "user"; //GoogleOAuthBroker.UserId = userId; //GoogleOAuthBroker.clientId = clientId; //GoogleOAuthBroker.clientKey = clientSecret; ////GoogleOAuthBroker.callbackUrl = "urn:ietf:wg:oauth:2.0:oob"; var tokenResponse = GoogleOAuthBroker.SavedGoogleAccessToken; if (true || tokenResponse == null) { tokenResponse = await GoogleOAuthBroker.InvokeGoogleSignIn(); //var accessToken = new GoogleAccessToken(json); } var secrets = new ClientSecrets() { ClientId = GoogleOAuthBroker.ClientId, ClientSecret = GoogleOAuthBroker.ClientKey }; // 2018-10-1 取得 // "access_token":"ya29.GlspBjPp5fg4L5_ardcFTvo0-mEhny0_U9AWp5r2MP0r2E02clwwz-hE_g6M5NQkiEhSgOLG69v6bQOR6BD6WFzTzhgDaxYtBRjc-ObQc_yUnG0D-qFecG0_G7jG","expires_in":3600,"refresh_token":"1/zT7RqFnZQJC7UWU_eIeyRSEAYPpNsvIegikelpVtPWYVsKnao087EK4jQ_tzJ0FC" //var token = new TokenResponse { RefreshToken = "4/AAAgYL1AbCENklz6-mtufDjdty62SY8-i-ySYJsPTjHrJ4bIp9oLbPM" }; var token = new TokenResponse { AccessToken = tokenResponse.access_token, ExpiresInSeconds = tokenResponse.expires_in, RefreshToken = tokenResponse.refresh_token }; var credentials = new UserCredential(new GoogleAuthorizationCodeFlow( new GoogleAuthorizationCodeFlow.Initializer { ClientSecrets = secrets }), GoogleOAuthBroker.UserId, token ); var service = new DriveService(new BaseClientService.Initializer() { HttpClientInitializer = credentials, ApplicationName = ApplicationName }); // Define parameters of request. FilesResource.ListRequest listRequest = service.Files.List(); listRequest.Spaces = "appDataFolder"; listRequest.PageSize = 1000; // range : [1 - 1000] // https://developers.google.com/drive/api/v3/migration#fields listRequest.Fields = "nextPageToken, files(id, name)"; // Search for Parameters : https://developers.google.com/drive/api/v3/search-parameters //listRequest.Q = "'appDataFolder' in parents"; // List files. IList <Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() .Files; Debug.WriteLine("Files:"); if (files != null && files.Count > 0) { foreach (var file in files) { Debug.WriteLine("{0} ({1})", file.Name, file.Id); } } else { Debug.WriteLine("No files found."); } return; //if (IsUserAdministrator() == false) //{ // await new MessageDialog("程式不具有管理員權限,無法進行此操作!").ShowAsync(); // return; //} // PDFArchiveApp 2 var oauth2 = new Chilkat.OAuth2(); // For Google OAuth2, set the listen port equal to the port used // in the Authorized Redirect URL for the Client ID. // For example, in this case the Authorized Redirect URL would be http://localhost:55568/ // Your app should choose a port not likely not used by any other application. oauth2.ListenPort = 55568; oauth2.AuthorizationEndpoint = "https://accounts.google.com/o/oauth2/v2/auth"; oauth2.TokenEndpoint = "https://www.googleapis.com/oauth2/v4/token"; // Replace these with actual values. oauth2.ClientId = "338523250911-mc628v5pbmdkcos31okktdtgofara1bp.apps.googleusercontent.com"; oauth2.ClientSecret = "F9I5-OTwr7FsQS6leZYHc8rG"; oauth2.CodeChallenge = true; oauth2.CodeChallengeMethod = "S256"; // This is the scope for Google Drive. // See https://developers.google.com/identity/protocols/googlescopes oauth2.Scope = "https://www.googleapis.com/auth/drive"; // Begin the OAuth2 three-legged flow. This returns a URL that should be loaded in a browser. string url = oauth2.StartAuth(); if (oauth2.LastMethodSuccess != true) { Debug.WriteLine(oauth2.LastErrorText); return; } // At this point, your application should load the URL in a browser. // For example, // in C#: System.Diagnostics.Process.Start(url); // in Java: Desktop.getDesktop().browse(new URI(url)); // in VBScript: Set wsh=WScript.CreateObject("WScript.Shell") // wsh.Run url // The Google account owner would interactively accept or deny the authorization request. // Add the code to load the url in a web browser here... // Add the code to load the url in a web browser here... // Add the code to load the url in a web browser here... // Now wait for the authorization. // We'll wait for a max of 30 seconds. int numMsWaited = 0; while ((numMsWaited < 30000) && (oauth2.AuthFlowState < 3)) { oauth2.SleepMs(100); numMsWaited = numMsWaited + 100; } // If there was no response from the browser within 30 seconds, then // the AuthFlowState will be equal to 1 or 2. // 1: Waiting for Redirect. The OAuth2 background thread is waiting to receive the redirect HTTP request from the browser. // 2: Waiting for Final Response. The OAuth2 background thread is waiting for the final access token response. // In that case, cancel the background task started in the call to StartAuth. if (oauth2.AuthFlowState < 3) { oauth2.Cancel(); Debug.WriteLine("No response from the browser!"); return; } // Check the AuthFlowState to see if authorization was granted, denied, or if some error occurred // The possible AuthFlowState values are: // 3: Completed with Success. The OAuth2 flow has completed, the background thread exited, and the successful JSON response is available in AccessTokenResponse property. // 4: Completed with Access Denied. The OAuth2 flow has completed, the background thread exited, and the error JSON is available in AccessTokenResponse property. // 5: Failed Prior to Completion. The OAuth2 flow failed to complete, the background thread exited, and the error information is available in the FailureInfo property. if (oauth2.AuthFlowState == 5) { Debug.WriteLine("OAuth2 failed to complete."); Debug.WriteLine(oauth2.FailureInfo); return; } if (oauth2.AuthFlowState == 4) { Debug.WriteLine("OAuth2 authorization was denied."); Debug.WriteLine(oauth2.AccessTokenResponse); return; } if (oauth2.AuthFlowState != 3) { Debug.WriteLine("Unexpected AuthFlowState:" + Convert.ToString(oauth2.AuthFlowState)); return; } // Save the full JSON access token response to a file. Chilkat.StringBuilder sbJson = new Chilkat.StringBuilder(); sbJson.Append(oauth2.AccessTokenResponse); sbJson.WriteFile("qa_data/tokens/googleDrive.json", "utf-8", false); // The saved JSON response looks like this: // { // "access_token": "ya39.Ci-XA_C5bGgRDC3UaD-h0_NeL-DVIQnI2gHtBBBHkZzrwlARkwX6R3O0PCDEzRlfaQ", // "token_type": "Bearer", // "expires_in": 3600, // "refresh_token": "1/r_2c_7jddspcdfesrrfKqfXtqo08D6Q-gUU0DsdfVMsx0c" // } // Debug.WriteLine("OAuth2 authorization granted!"); Debug.WriteLine("Access Token = " + oauth2.AccessToken); }
private void bgWorker_spider_DoWork(object sender, DoWorkEventArgs eSpidere) { if (AbdalControler.unauthorized_process == true) { MessageBox.Show("This domain is unauthorized !"); Application.Exit(); } else { Chilkat.Spider spider = new Chilkat.Spider(); spider.Initialize(targetUrlTextBox.Text); // Add the 1st URL: spider.AddUnspidered(targetUrlTextBox.Text + "/"); // Begin crawling the site by calling CrawlNext repeatedly. int i; int maxSpiderLink = Convert.ToInt32(CrawlerLimitationValue.Value); spiderProgressBar.Maximum = maxSpiderLink; for (i = 1; i <= maxSpiderLink; i++) { if (stop_spider) { break; } bool success; success = spider.CrawlNext(); if (success == true) { Chilkat.StringBuilder url_encode = new Chilkat.StringBuilder(); string crawl_Last_url = spider.LastUrl; //decode url bool success_url_encode = url_encode.Append(crawl_Last_url); url_encode.Decode("url", "utf-8"); string crawl_Last_url_decoded = url_encode.GetAsString(); // The HTML is available in the LastHtml property //Add AttackLog in Result Box ExtractRichTextBox.AppendText(crawl_Last_url_decoded + Environment.NewLine); ExtractRichTextBox.SelectionStart = ExtractRichTextBox.Text.Length; ExtractRichTextBox.ScrollToCaret(); // add progress value spiderProgressBar.Value2 = i; crawled_links_text.Text = Convert.ToString(i); } else { // Did we get an error or are there no more URLs to crawl? if (spider.NumUnspidered == 0) { this.radDesktopAlert1.CaptionText = "Abdal Web Traffic Generator"; this.radDesktopAlert1.ContentText = "No more URLs to spider"; this.radDesktopAlert1.Show(); } else { this.radDesktopAlert1.CaptionText = "Abdal Web Traffic Generator"; this.radDesktopAlert1.ContentText = spider.LastErrorText; this.radDesktopAlert1.Show(); } } // Sleep 1 second before spidering the next URL. spider.SleepMs(1000); } } }
public static void Sign() { // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // The SOAP XML to be signed in this example contains the following: // <?xml version="1.0" encoding="UTF-8" standalone="no" ?> // <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> // <SOAP-ENV:Header> // <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1"></wsse:Security> // </SOAP-ENV:Header> // <SOAP-ENV:Body xmlns:SOAP-SEC="http://schemas.xmlsoap.org/soap/security/2000-12" SOAP-SEC:id="Body"> // <z:FooBar xmlns:z="http://example.com" /> // </SOAP-ENV:Body> // </SOAP-ENV:Envelope> // // The above XML is available at https://www.chilkatsoft.com/exampleData/soapToSign.xml // Fetch the XML and then sign it.. string url = "https://www.chilkatsoft.com/exampleData/soapToSign.xml"; Chilkat.Http http = new Chilkat.Http(); Chilkat.StringBuilder sbSoapXml = new Chilkat.StringBuilder(); bool success = http.QuickGetSb(url, sbSoapXml); //Not Working if (success != true) { Debug.WriteLine(http.LastErrorText); return; } // Load a PFX file containing the certificate + private key. Chilkat.Cert cert = new Chilkat.Cert(); success = cert.LoadPfxFile("E:\\XML\\keystore-demo\\certificate-sha256.pfx", "1234567890"); if (success != true) { Debug.WriteLine(cert.LastErrorText); return; } // Get the RSA private key for signing... Chilkat.PrivateKey rsaKey = cert.ExportPrivateKey(); if (cert.LastMethodSuccess != true) { Debug.WriteLine(cert.LastErrorText); return; } // To create the XML digital signature (i.e. embed the signature within // the SOAP XML), we specify what is desired, and then call the method to // create the XML signature. // // For example, the application must provide the following: // - Where to put the signature. // - What to sign. // - The algorithms to be used. // - The key to be used for signing. // Chilkat.XmlDSigGen xmlSigGen = new Chilkat.XmlDSigGen(); // In this example, we're going to put the signature within the wsse:Security element. // To specify the location, set the SigLocation property to the XML path to this element, // using vertical bar characters to separate tags. xmlSigGen.SigLocation = "SOAP-ENV:Envelope|SOAP-ENV:Header|wsse:Security"; // An XML digital signature contains one or more references. These are references to the parts // of the XML document to be signed (a same document reference), or can be external references. // This example will add a single same-document reference. We'll add a reference to the XML fragment // at SOAP-ENV:Body, which is indicated by providing the value of the "ID" attribute (where "ID" is case // insensitive). For each same-document reference, we must also indicate the hash algorithm and XML canonicalization // algorithm to be used. For this example we'll choose SHA-256 and Exclusive XML Canonicalization. xmlSigGen.AddSameDocRef("Body", "sha256", "EXCL_C14N", "", ""); // Let's provide the RSA key to be used for signing: xmlSigGen.SetPrivateKey(rsaKey); // We're leaving the following properties at their default values: // // - SigNamespacePrefix (default is "ds") // - SigningAlg (for RSA keys. The default is PKCS1-v1_5, can be changed to RSASSA-PSS.) // - SignedInfoCanonAlg (default is EXCL_C14N) // - SignedInfoDigestMethod (default is sha256) // - KeyInfoType (default is "KeyValue", where the RSA public key is included in the Signature) // Note: Each Reference has it's own specified algorithms for XML canonicalization and hashing, // and the actual signature part (the SignedInfo) has it's own algorithms for the same. // They may or may not be the same. In this example, we use Exclusive XML Canonicalization and SHA-256 throughout. // Finally, we're going to set one property that's optional, but commonly used. // It's the SignedInfoPrefixList. In this case, we're using Exclusive Canonicalization, and the signature // will be placed in a location within the XML document where namespace prefixes are used in the ancestors. // Specifically, the "wsse" and "SOAP-ENV" namespace prefixes are used. xmlSigGen.SignedInfoPrefixList = "wsse SOAP-ENV"; // OK, everything's specified, so let's create the XML digital signature: // This in-place signs the XML. If successful, sbSoapXml will contain the // XML with the digital signature at the specified location. success = xmlSigGen.CreateXmlDSigSb(sbSoapXml); if (success != true) { Debug.WriteLine(xmlSigGen.LastErrorText); return; } // Examine the signed SOAP XML: Debug.WriteLine(sbSoapXml.GetAsString()); // This is the signed SOAP XML. // Chilkat emits the Signature in compact form on a single line. Whitespace in XML signatures // matters. Chilkat's opinion is that writing the Signature without whitespace minimizes the chance // for problems with whatever software might be verifying the signature. // <?xml version="1.0" encoding="UTF-8" standalone="no" ?> // <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> // <SOAP-ENV:Header> // <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" SOAP-ENV:mustUnderstand="1"><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><ds:SignedInfo><ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"><InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsse SOAP-ENV"/></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><ds:Reference URI="#Body"><ds:Transforms><ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/></ds:Transforms><ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><ds:DigestValue>OwgHPZNfDkXnZsjpfzXqAcT3RV3HzmTsEy2bP44FJ0M=</ds:DigestValue></ds:Reference></ds:SignedInfo><ds:SignatureValue>C+7FWngUpJ33Q1yq8uuscjCyPN2IO4cJhpMv03Jrrht1V+4gvJQLIBk6HHjo1uPQyfYj6zji3pg+fOyGUptp17CsRvjCzSpP35vB2lEzHeS8dcY8XfrEtTP/0FNn75LmhhkOPy0wjWkgDVbgzhXpEk9az8r8fQVTM3vrcmXT+WdMWJXKBRFt6PLAhsFt0scOFTWAkLGyCwygzimDKX2nT63TOit9BigtIx7fPRuMkbybMKCGGABq2DiEbvrPOiN3SUYpyMNR9KehRAGN+OWnESaDC6DhOvbKR88XHkM+GeaRe9PWdrRHrwGfp3qgolKjR/wFRSa1YGSBKAhDJFBcdg==</ds:SignatureValue><ds:KeyInfo><ds:KeyValue><ds:RSAKeyValue><ds:Modulus>sXeRhM55P13FbpNcXAMR3olbw2Wa6keZIHu5YTZYUBTlYWId+pNiwUz3zFIEo+0IfYR0H27ybIycQO+1IIzJofUFNMAL3tZps2OKPlsjuCPls6kXpXhv/gvhux8LrCtp4PcKWqJ6QVOZKChc7WAx40qFWzHi57ueqRTv3x0kESqGg/VjsqyTEvb55psJO2RsfhLT7+YVh3hImRM3RDaJdkTkPuOxeFyT6N7VXD09329sLuS3QkUbE9zEKDnz9X3d8dEQdJhSI9ba5fxl8R7fu8pB67ElfzFml96X1jLFtzy1pzOT5Fc4ROcaqlYckVzdBq9sxezm6MYmDBjNAcibRw==</ds:Modulus><ds:Exponent>AQAB</ds:Exponent></ds:RSAKeyValue></ds:KeyValue></ds:KeyInfo></ds:Signature></wsse:Security> // </SOAP-ENV:Header> // <SOAP-ENV:Body xmlns:SOAP-SEC="http://schemas.xmlsoap.org/soap/security/2000-12" SOAP-SEC:id="Body"> // <z:FooBar xmlns:z="http://example.com" /> // </SOAP-ENV:Body> // </SOAP-ENV:Envelope> // Here's the signature part formatted for easier reading. // (Adding whitespace to the SignedInfo breaks the signature, so you wouldn't want to do this..) // <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> // <ds:SignedInfo> // <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> // <InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsse SOAP-ENV" /> // </ds:CanonicalizationMethod> // <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /> // <ds:Reference URI="#Body"> // <ds:Transforms> // <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> // </ds:Transforms> // <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> // <ds:DigestValue>OwgHPZNfDkXnZsjpfzXqAcT3RV3HzmTsEy2bP44FJ0M=</ds:DigestValue> // </ds:Reference> // </ds:SignedInfo> // <ds:SignatureValue>C+7FWngUp....BKAhDJFBcdg==</ds:SignatureValue> // <ds:KeyInfo> // <ds:KeyValue> // <ds:RSAKeyValue> // <ds:Modulus>sXeRhM55P13FbpNcXAMR....MYmDBjNAcibRw==</ds:Modulus> // <ds:Exponent>AQAB</ds:Exponent> // </ds:RSAKeyValue> // </ds:KeyValue> // </ds:KeyInfo> // </ds:Signature> }