Проблема с подписью документа с помощью Bouncy Castle на основе RSA-PSS с солью длиной 32 байта в C#C#

Место общения программистов C#
Anonymous
Проблема с подписью документа с помощью Bouncy Castle на основе RSA-PSS с солью длиной 32 байта в C#

Сообщение Anonymous »

Я пытаюсь подписать документ для beA с помощью Bouncy Castle на основе RSA-PSS с солью длиной 32 байта, но получаю ошибку от сервера.
Это ошибка, я получаю ответ «400 Неверный запрос: ошибка: мыло: Сервер 0950 — аутентификация CRAM не удалась».
У меня нет опыта подписи документов и криптографии, и я думаю, именно поэтому я ошибаюсь .

Я читал и искал, но это все, что мне известно, что в любом случае не очень хорошо.
Это метод, который я использую .

Я получаю закрытый ключ в виде XML, а подписывающий документ — в виде строки. Результат — base64.
public void SignData(string PrivateKeyXml, string DataToSign, out string SignedData)
{

byte[] dataBytes = Encoding.UTF8.GetBytes(DataToSign);

AsymmetricKeyParameter privateKey = ImportPrivateKeyFromXml(PrivateKeyXml);

ISigner signer = SignerUtilities.GetSigner("SHA256withRSAandMGF1");

signer.Init(true, privateKey);

signer.BlockUpdate(dataBytes, 0, dataBytes.Length);
byte[] signature = signer.GenerateSignature();

SignedData = Convert.ToBase64String(signature);

}

private static AsymmetricKeyParameter ImportPrivateKeyFromXml(string xml)
{
var rsa = RSA.Create();
rsa.FromXmlString(xml);
var parameters = rsa.ExportParameters(true);

RsaPrivateCrtKeyParameters privateKey = new RsaPrivateCrtKeyParameters(
new Org.BouncyCastle.Math.BigInteger(1, parameters.Modulus),
new Org.BouncyCastle.Math.BigInteger(1, parameters.Exponent),
new Org.BouncyCastle.Math.BigInteger(1, parameters.D),
new Org.BouncyCastle.Math.BigInteger(1, parameters.P),
new Org.BouncyCastle.Math.BigInteger(1, parameters.Q),
new Org.BouncyCastle.Math.BigInteger(1, parameters.DP),
new Org.BouncyCastle.Math.BigInteger(1, parameters.DQ),
new Org.BouncyCastle.Math.BigInteger(1, parameters.InverseQ));

return privateKey;
}



Подробнее здесь: https://stackoverflow.com/questions/790 ... lt-of-32-b

Вернуться в «C#»