Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Duplicate Java Secure Token CreationDemonstrates how to duplicate some Java code that creates an RSA signature to create a base64 token.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Handle hoDt String sTimeCreated Handle hoSbToken Variant vCert Handle hoCert Handle hoRsa String sSignature String sToken String sTemp1 Boolean bTemp1 // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // This example duplicates the following Java code: // public X509Certificate2 cert = new X509Certificate2(@"Some path to p12/p12file_name.p12","Password_for_p12"); // // public string GenerateSignToken(double timeValidityMin){ // string equalsSign = ":="; // string timeCreated = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz"); // string tokenTimeInfo = "validityTimeMinutes" + equalsSign + timeValidityMin + ";"+"timeCreated" + equalsSign + timeCreated; // string signature = SignData(tokenTimeInfo); // string secureToken = tokenTimeInfo + ";" + "signature" + equalsSign + signature; // return Base64UrlEncode(secureToken); // } // // public string SignData(string stringToSign){ // byte[] dataToSign = Encoding.UTF8.GetBytes(stringToSign); // RSACryptoServiceProvider privKey = (RSACryptoServiceProvider)cert.PrivateKey; // CspKeyContainerInfo containerInfo = new RSACryptoServiceProvider().CspKeyContainerInfo; // CspParameters cspparams = new CspParameters(containerInfo.ProviderType, containerInfo.ProviderName, privKey.CspKeyContainerInfo.KeyContainerName); // privKey = new RSACryptoServiceProvider(cspparams); // string id = CryptoConfig.MapNameToOID("SHA256"); // byte[] sign = privKey.SignData(dataToSign, id); // bool res = privKey.VerifyData(dataToSign, id, sign); // return Convert.ToBase64String(sign).Replace('+', '-').Replace('/', '_').Replace("=", ""); // } // // private static string Base64UrlEncode(string input){ // var inputBytes = Encoding.UTF8.GetBytes(input); // return Convert.ToBase64String(inputBytes).Replace('+', '-').Replace('/', '_').Replace("=", ""); // } Get Create (RefClass(cComCkDateTime)) To hoDt If (Not(IsComObjectCreated(hoDt))) Begin Send CreateComObject of hoDt End Get ComSetFromCurrentSystemTime Of hoDt To iSuccess Get ComGetAsTimestamp Of hoDt True To sTimeCreated // Such as 2019-04-01T19:35:44-05:00 Showln sTimeCreated Get Create (RefClass(cComChilkatStringBuilder)) To hoSbToken If (Not(IsComObjectCreated(hoSbToken))) Begin Send CreateComObject of hoSbToken End Get ComAppend Of hoSbToken "validityTimeMinutes:=10.0;timeCreated:=" To iSuccess Get ComAppend Of hoSbToken sTimeCreated To iSuccess Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadPfxFile Of hoCert "Some path to p12/p12file_name.p12" "Password_for_p12" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatRsa)) To hoRsa If (Not(IsComObjectCreated(hoRsa))) Begin Send CreateComObject of hoRsa End Get pvComObject of hoCert to vCert Get ComSetX509Cert Of hoRsa vCert True To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End Set ComEncodingMode Of hoRsa To "base64url" Get ComGetAsString Of hoSbToken To sTemp1 Get ComSignStringENC Of hoRsa sTemp1 "sha256" To sSignature Get ComLastMethodSuccess Of hoRsa To bTemp1 If (bTemp1 = False) Begin Get ComLastErrorText Of hoRsa To sTemp1 Showln sTemp1 Procedure_Return End Get ComAppend Of hoSbToken ";signature:=" To iSuccess Get ComAppend Of hoSbToken sSignature To iSuccess // Base64URL encode the result Get ComEncode Of hoSbToken "base64url" "utf-8" To iSuccess Get ComGetAsString Of hoSbToken To sToken Showln sToken End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.