39 lines
1.4 KiB
C#
39 lines
1.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Security.Cryptography;
|
|
using System.Web;
|
|
|
|
namespace Philips.EDI.Foundation.APIGateway.AutomationTest.BusinessLayer
|
|
{
|
|
public class VueSSOTokenBL
|
|
{
|
|
public string GenerateSsoToken(string username, string sessionTime, string symmetricKey)
|
|
{
|
|
var ssoToken = $"user_name={username}&session_time={sessionTime}";
|
|
return EncryptSsoToken(ssoToken, symmetricKey);
|
|
}
|
|
|
|
private static string EncryptSsoToken(string toBeEncryptedUrl, string symmetricKey)
|
|
{
|
|
byte[] encrypted;
|
|
var Key = Convert.FromBase64String(symmetricKey);
|
|
byte[] IV = new byte[16];
|
|
using (AesManaged aes = new AesManaged())
|
|
{
|
|
ICryptoTransform encryptor = aes.CreateEncryptor(Key, IV);
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
|
|
{
|
|
// Create StreamWriter and write data to a stream
|
|
using (StreamWriter sw = new StreamWriter(cs))
|
|
sw.Write(toBeEncryptedUrl);
|
|
encrypted = ms.ToArray();
|
|
return HttpUtility.UrlEncode(Convert.ToBase64String(encrypted));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|