Статус: Новичок
Группы: Участники
Зарегистрирован: 22.11.2017(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Доброго дня, уважаемые участники форума. Инструмент разработки - c#. Требуется заменить ключевой контейнер на носителе (смарт-карта), и, соответственно, запросить и установить в новый контейнер сертификат. При этом выдвигается требование, что запрос на новый сертификат должен быть подписан текущим ключом пользователя. Выполняется следующая последовательность действий. Создается новый контейнер в реестре с помощью CX509PrivateKey, создается CX509CertificateRequestPkcs10, создается CX509Enrollment и из него получается RawData запроса. Теперь RawData нужно подписать на текущем ключе пользователя. Подскажите, а как это сделать? Я пытался воспользоваться тем, как это сделано в примерах: Код:
public static String MakeRawRequest(String request, X509Certificate2 certificate)
{
return Convert.ToBase64String(Sign(Sign(Encoding.Unicode.GetBytes(request), certificate), certificate));
}
private static byte[] Sign(byte[] content, X509Certificate2 certificate)
{
var cms = new SignedCms(new ContentInfo(content));
var signer = new CmsSigner(certificate)
{
Certificate = certificate,
IncludeOption = X509IncludeOption.WholeChain
};
cms.ComputeSignature(signer, false);
return cms.Encode();
}
где certificate - это сертификат, считанный с карты: Код:
...
if (!CryptGetKeyParam(hKey, KP_CERTIFICATE, pbData, ref dwDataLen, 0))
{
throw new Exception("Ошибка чтения сертификата", new Win32Exception(Marshal.GetLastWin32Error()));
}
return new X509Certificate2(pbData);
Но вызов Код:
cms.ComputeSignature(signer, false);
Возвращает ошибку - ключ не найден. Как подписать CMS запрос с помощью текущего ключа пользователя, расположенного на ключевом носителе?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close