Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.08.2022(UTC) Сообщений: 49 Откуда: Спб
|
Добрый день Для доступа к сайте есть код клиента, в котором для авторизации надо вычислить ЭЦП CMS. Есть такой код на C#: Код: var signedCms = new SignedCms(new ContentInfo(contentBytes), false);
signedCms.ComputeSignature(new CmsSigner(_certificate), true);
var cmsBytes = signedCms.Encode();
var cmsStr = Convert.ToBase64String(cmsBytes);
Этот код работает - он генерирует CMS, который нормально съедается сайтом. Я написал такой код на Java: Код:
import java.security.Signature;
import java.security.cert.*;
....
private byte[] signMessage(String algoName, PrivateKey privateKey, String msg) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
String algoName = JCP.GOST_DH_2012_256_NAME;
Signature signer = Signature.getInstance(algoName, JCP.PROVIDER_NAME);
signer.initSign(privateKey);
signer.update(msg.getBytes());
return signer.sign();
}
Но я вижу, что подпись получается совсем другой, даже на глаз. И, соответственно, эту подпись сайт не ест. Что я делаю не так? Заранее спасибо Какой алгоритм следует указать, если в коде C# тип ключа возвращает "1.2.643.7.1.1.1.1"(_certifcate.GetKeyAlgorithm())? Какого указать провайдера? Отредактировано пользователем 11 октября 2023 г. 17:59:44(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close