Статус: Участник
Группы: Участники
Зарегистрирован: 19.12.2013(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Как создать усовершенствованную ЭЦП без диалога выбора сертификата (в silent-режиме)?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: smartchaos Как создать усовершенствованную ЭЦП без диалога выбора сертификата (в silent-режиме)? Указать необходимую для создания подписи информацию - программно. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.12.2013(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Я создаю усовершенствованную функцию с помощью следующего кода:
TSPRequest request = new TSPCOM.TSPRequest(); TSPCOM.TSPStamp stamp; CAPICOM.HashedData hash = new CAPICOM.HashedData(); CAPICOM.Utilities utils = new Utilities();
hash.Algorithm = (CAPICOM.CAPICOM_HASH_ALGORITHM)CAPICOM.CAPICOM_HASH_ALGORITHM.CAPICOM_HASH_ALGORITHM_SHA_256; hash.Hash(message.ToString());
request.Hash = (HashedData)hash; request.UseNonce = true; request.PolicyID = string.Empty; request.CertReq = true;
request.TSAAddress = "http://www.cryptopro.ru/tsp/tsp.srf";
request.TSAAuthType = TSPCOM.TSPCOM_AUTH_TYPE.TSPCOM_AUTH_TYPE_ANONYMOUS; request.TSAUserName = string.Empty; request.TSAPassword = string.Empty;
string encodedStamp = string.Empty;
stamp = request.Send(false); encodedStamp = utils.Base64Encode(stamp.Export());
CAdESCOM.CPAttribute atribute = new CPAttribute(); atribute.OID.Name = CAPICOM.CAPICOM_OID.CAPICOM_OID_TIME_STAMP_SIGNING_EKU;//пробовал и такой тип CAPICOM_OID_TIME_STAMPING_EKU; //atr.OID.Value = "1.2.3.4.5"; atribute.Value = encodedStamp; var signer = new CAdESCOM.CPSigner(); signer.UnauthenticatedAttributes.Add(atribute); var signedData = new CAdESCOM.CadesSignedData(); signedData.Content = message.ToString();
var addedImprovedSign = signedData.SignCades(signer, CAdESCOM.CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, true, CAdESCOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
Как мне указать сертификат которым делается подпись в silent-режиме?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Заполнить свойство signer.Certificate
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.12.2013(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
При заполнении этого свойства signer.Certificate = certificate as ICertificate; возникает следующая ошибка Exception from HRESULT: 0x80880210 Эта ошибка означает что у этого сертификата нет ассоциированого приватного ключа но это не так, я использовал этот сертификат в режиме выбора и он работал. Я ищу сертификаты следующим образом: var certificates = store.Certificates; var certificate = (certificates as ICertificates2).Find(CAPICOM_CERTIFICATE_FIND_TYPE.CAPICOM_CERTIFICATE_FIND_SHA1_HASH, thumbprintString); if (certificate == null) { throw new Exception("Сертификат не найден"); } Может это не правильно?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.12.2013(UTC) Сообщений: 13 Сказал(а) «Спасибо»: 3 раз
|
Сам разобрался надо было signer.Certificate = certificate[1];
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close