PowerShell
PowerShell
Everyware API RSA Encrypt JSON
See more RSA Examples
Demonstrates how to RSA encrypt JSON using everyware.com's RSA public key.Chilkat PowerShell Downloads
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"
$success = $false
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# First build the JSON to be encrypted.
$json = New-Object Chilkat.JsonObject
$json.UpdateString("provider_key","USER GUID HERE")
$json.UpdateString("menu_item","payment")
$dt = New-Object Chilkat.CkDateTime
$dt.SetFromCurrentSystemTime()
$json.UpdateString("date_time",$dt.GetAsUnixTimeStr($false))
# This build JSON like the following:
# {
# "provider_key": "USER GUID HERE",
# "menu_item": "payment",
# "date_time": "1588163411"
# }
# When we sign, we'll want to sign the most compact JSON possible
$json.EmitCompact = $true
# Everyware's RSA public key is at: https://docs.everyware.com/docs/everyware-public-rsa-key
$sb = New-Object Chilkat.StringBuilder
$bCrlf = $true
$sb.AppendLine("-----BEGIN PUBLIC KEY-----",$bCrlf)
$sb.AppendLine("MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxNbflxUSWQ3XJ1N9dAoh",$bCrlf)
$sb.AppendLine("k+uaiFsg3wkPi9LGS/mH8DtHBgZxKyz+oQBDtnDd9FDEo0ql7MMgCMsTAv27W5vk",$bCrlf)
$sb.AppendLine("Pu0rm6zhcTeYquWEuVCS7VtVsyTATr0Z9WhqNeZlIRurovJAXl2jRDX6QeY5dayC",$bCrlf)
$sb.AppendLine("ubwyG4lBWE4fCakGY6zlh+oaElK0rvblqjYoEg3dn4KPRCYGof8OFxLptHThD4cE",$bCrlf)
$sb.AppendLine("T30j+utVafhO0HRyJ4iR3Pigb4GXdWBtJEEEWddZJizMkjFQkyUAoYLOT8EJ2TW3",$bCrlf)
$sb.AppendLine("Tz8SvAuHBUEFcPWTSTMAG/bSp5wrYBTXaeEhx+wrYa60OruHuzgmhzKyQVuYlCNJ",$bCrlf)
$sb.AppendLine("HdbnassuIRjjSNo25o4AdSlWwpGfBZjAiyEInR+KGpHdhKTxSekJxiwiXUS0UfSG",$bCrlf)
$sb.AppendLine("prOpd5PzWaAR7DvjLsdmR9XffxvJCVxC735gLK7hDJKjCajDPHVDr8FSL8xMlrq0",$bCrlf)
$sb.AppendLine("nKxtsHeRl1yzoGrRr12+9MiQnHtpqROTNXcXdwe3v+Vh8V5k8v8oIrcgh1+/N7Bd",$bCrlf)
$sb.AppendLine("NiRsy1gFHBdu/he/KcDRT/9/acQFMPLQueGfZxUvU5As6pEONjtKX2MUg2fMF6Rc",$bCrlf)
$sb.AppendLine("sQVVrLzg0g7EcuHGfuPeKfD/716MvS8NU7rX+2soijCSQv/e18PJPMVDlcMXjnup",$bCrlf)
$sb.AppendLine("PPx1tStemesavFlj1okhS6UCAwEAAQ==",$bCrlf)
$sb.AppendLine("-----END PUBLIC KEY-----",$bCrlf)
$pubkey = New-Object Chilkat.PublicKey
$success = $pubkey.LoadFromString($sb.GetAsString())
if ($success -eq $false) {
$($pubkey.LastErrorText)
exit
}
$rsa = New-Object Chilkat.Rsa
$success = $rsa.UsePublicKey($pubkey)
if ($success -eq $false) {
$($rsa.LastErrorText)
exit
}
# We probably need a base64Url encoded encrypted key.
# Using straight-up base64 would potenially include chars that are not URL safe (i.e. have special meanings in URLs)
$rsa.EncodingMode = "base64url"
$encryptedJson = $rsa.EncryptStringENC($json.Emit(),$false)
# Build the URL
# Such as: https://portal.everyware.com/Account/LoginMenu?data={Base64Url_encrypted_JSON}
$sbUrl = New-Object Chilkat.StringBuilder
$sbUrl.Append("https://portal.everyware.com/Account/LoginMenu?data=")
$sbUrl.Append($encryptedJson)
$($sbUrl.GetAsString())