Статус: Новичок
Группы: Участники
Зарегистрирован: 27.07.2010(UTC) Сообщений: 9
|
Здравствуйте Формирую ЭЦП при помощи CAPICOM. У вас приведено в примерах как получить установленный на компьютере сертификат для подписи текста. Но хотелось бы внедрить сертификат (выданный вами cer-файл) в программу, а не устанавливать его на компьютере. Возможно ли это? Попробовал реализовать идею (см. код на C# ниже), но при вызове метода CAPICOM::SignedData::Sign() появляется ошибка №80880253 "The signer's certificate is not valid for signing". Возможно, проблема в том, что не получается связать сертификат с закрытым ключом? Если так, то что требуется добавить/исправить в коде? Код:
// Преобразуем массив байт к CertificateClass
byte[] myCert = Properties.Resources.Certificate; // Мой сертификат (cer-файл), выданный вами
CAPICOM.CertificateClass cer = new CAPICOM.CertificateClass();
cer.Import(myCert);
CAPICOM.Signer signer = new CAPICOM.Signer();
signer.Certificate = cer;
CAPICOM.SignedData signedData = new CAPICOM.SignedData();
signedData.Content = content; // Массив байт для подписи
byte[] signed = signedData.Sign(signer, true, CAPICOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BINARY);
Примечание: код написан на C# с использованием модифицированной вами Interop.CAPICOM.dll ( ссылка). При использовании стандартной Interop.CAPICOM.dll, требуется преобразование массива байт через CAPICOM::UtilitiesClass::ByteArrayToBinaryString()
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Как вариант - каждый раз создавать хранилище в памяти и связывать сертификат с закрытым ключем. Без такой привязки подпись работать не будет, а сделать ее можно только для установленного сертификата. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 27.07.2010(UTC) Сообщений: 9
|
Я поясню, что хотел выяснить: 1. Можно ли в принципе формировать подпись НЕ устанавливая сертификат (CER-файл) в системе, а читая его каждый раз из файла или ресурсов программы во время выполнения? 2. Если да, то как? Kirill Sobolev написал:Как вариант - каждый раз создавать хранилище в памяти и связывать сертификат с закрытым ключем. Как видно из моего примера я уже создаю класс с сертификатом в памяти (CAPICOM.CertificateClass). Как его можно связать с закрытым ключом? Скажите хотя бы, можно ли это сделать через CAPICOM или надо опускаться до CryptoAPI? Kirill Sobolev написал:Без такой привязки подпись работать не будет, а сделать ее можно только для установленного сертификата. Я так и не понял. Можно ли формировать подпись НЕ устанавливая сертификат (CER-файл) в системе, а читая его каждый раз из файла или ресурсов программы во время выполнения? Исходя из первого предложения, это сделать можно, а во втором предложении пишите, что нельзя.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
1. Можно. 2. Через CAPICOM однозначно нет, черз CryptoAPI да, может быть можно через .NET. обсуждение. Можно упростить схему - сохранять не только сертификат, а сертификат с ссылкой на ключ (хранилище SST). Тогда не нужно будет каждый раз создавать привязку. Цитата:а во втором предложении пишите, что нельзя. Читайте внимательнее, я нигде такого не писал. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 04.09.2011(UTC) Сообщений: 5
|
Подскажите пожалуста как можно создать SST хранилище
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.04.2012(UTC) Сообщений: 1
|
Lers написал: 1. Можно ли в принципе формировать подпись НЕ устанавливая сертификат (CER-файл) в системе, а читая его каждый раз из файла или ресурсов программы во время выполнения?
Можно даже через CAPICOM. Нужно экспортировать сертификат в pfx-файл (экспорт с закрытым ключом). И использовать подгружая сертификат из файла методом Load объекта CAPICOM.Signer.
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close