AutoIt
AutoIt
Duplicate Java Secure Token Creation
See more RSA Examples
Demonstrates how to duplicate some Java code that creates an RSA signature to create a base64 token.Chilkat AutoIt Downloads
Local $bSuccess = False
; 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("=", "");
; }
$oDt = ObjCreate("Chilkat.CkDateTime")
$oDt.SetFromCurrentSystemTime()
Local $sTimeCreated = $oDt.GetAsTimestamp(True)
; Such as 2019-04-01T19:35:44-05:00
ConsoleWrite($sTimeCreated & @CRLF)
$oSbToken = ObjCreate("Chilkat.StringBuilder")
$oSbToken.Append("validityTimeMinutes:=10.0;timeCreated:=")
$oSbToken.Append($sTimeCreated)
$oCert = ObjCreate("Chilkat.Cert")
$bSuccess = $oCert.LoadPfxFile("Some path to p12/p12file_name.p12","Password_for_p12")
If ($bSuccess <> True) Then
ConsoleWrite($oCert.LastErrorText & @CRLF)
Exit
EndIf
$oRsa = ObjCreate("Chilkat.Rsa")
$bSuccess = $oRsa.SetX509Cert($oCert,True)
If ($bSuccess <> True) Then
ConsoleWrite($oRsa.LastErrorText & @CRLF)
Exit
EndIf
$oRsa.EncodingMode = "base64url"
Local $signature = $oRsa.SignStringENC($oSbToken.GetAsString(),"sha256")
If ($oRsa.LastMethodSuccess = False) Then
ConsoleWrite($oRsa.LastErrorText & @CRLF)
Exit
EndIf
$oSbToken.Append(";signature:=")
$oSbToken.Append($signature)
; Base64URL encode the result
$oSbToken.Encode("base64url","utf-8")
Local $sToken = $oSbToken.GetAsString()
ConsoleWrite($sToken & @CRLF)