Mam problem z autoryzacją za pomocą tokenu. Obsługa jest napisana w postaci funkcji w assemblies mssql2016 (framework 4.8). Nie jest możliwy do użycia wyższy framework.
public static SqlString Ksef2_GetEncodeOAEP(SqlString base64Cert, SqlString plainText)
{
if (base64Cert.IsNull || plainText.IsNull)
return SqlString.Null;
try
{
byte[] certBytes = Convert.FromBase64String(base64Cert.Value);
var cert = new X509Certificate2(certBytes);
using (RSA rsa = cert.GetRSAPublicKey())
{
byte[] dataToEncrypt = Encoding.UTF8.GetBytes(plainText.Value);
byte[] encrypted = rsa.Encrypt(dataToEncrypt, RSAEncryptionPadding.OaepSHA256);
return Convert.ToBase64String(encrypted);
}
}
catch (Exception ex)
{
throw new ApplicationException("Encryption failed: " + ex.Message, ex);
}
}
Parametry:
base64Cert = wartość "certificate" dla "usage" = "KsefTokenEncryption"
plainText = token|timestamp
Po wywołaniu dostaję błąd:
450 Uwierzytelnianie zakończone niepowodzeniem z powodu błędnego tokenu
Invalid token encoding
Proszę o jakąś podpowiedź.