Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Спасибо, мануал поправим.
Извините, опечатка - конечно же свойством Signers.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
Новожилова Елена написал: Извините, опечатка - конечно же свойством Signers.
Это то понятно - непонятно как. Можно небольшой примерчик вызова окна выбора сертификата?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Первую подпись делаете, указывая в параметрах метода SignCades null, для вызова окна выбора сертификата. Потом достаете коллекцию Signers, там должен быть один элемент Signer. Его в дальнейшем и используете.
Не то, чтобы это был стандартный способ, но если сильно хочется...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
Новожилова Елена написал:Первую подпись делаете, указывая в параметрах метода SignCades null, для вызова окна выбора сертификата. Потом достаете коллекцию Signers, там должен быть один элемент Signer. Его в дальнейшем и используете.
Не то, чтобы это был стандартный способ, но если сильно хочется... Не совсем очевидный - но очень даже замечательный способ - главное чтобы заработало, спасибо.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
Код:
public string Sign(XDocument document, X509Certificate2 cert, X509Store store)
{
//CPSigner cpSigner = new CPSigner();
// cpSigner.TSAAddress = TSPServer;
//cpSigner.Certificate = GetCAPICOMCert(cert, store);
CadesSignedData oSignedData = new CadesSignedData();
oSignedData.Content = document.ToString();
//Создание и проверка подписи CAdES BES
string sSignedData = oSignedData.SignCades(null, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false);
// Создание параллельной подписи CAdES X Long Type 1
sSignedData = oSignedData.CoSignCades(oSignedData.Signers[0], CADESCOM_CADES_TYPE.CADESCOM_CADES_DEFAULT,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
Падение на последней строке с ошибкой System.Runtime.InteropServices.COMException was unhandled by user code Message="Криптографическое сообщение не содержит всех запрошенных атрибутов. (Исключение из HRESULT: 0x8009100F)" Source="Interop.CAdESCOM" ErrorCode=-2146889713 StackTrace: в CAdESCOM.CadesSignedDataClass.get_Signers() в CAdES.CAdESWrapper.Sign(XDocument document, X509Certificate2 cert, X509Store store) в D:\Avior\Development\3rdParty\CAdES\CAdESWrapper\CAdESWrapper\CAdESWrapper.cs:строка 45 в CAdES.Signer.Sign(XDocument document, X509Certificate2 cert, X509Store store) в D:\Avior\Development\3rdParty\CAdES\CAdES\CAdES\Signer.cs:строка 24 соответственно : - Signers '((CAdESCOM.CadesSignedDataClass)(oSignedData)).Signers' threw an exception of type 'System.Runtime.InteropServices.COMException' CAPICOM.Signers {System.Runtime.InteropServices.COMException} При этом окна с выбором сертификата не было подскажите в чем ошибка Отредактировано пользователем 30 октября 2009 г. 10:37:15(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
в свою очередь Код:
CadesSignedData oSignedData = new CadesSignedData();
oSignedData.Content = document.ToString();
//Создание и проверка подписи CAdES BES
string res = oSignedData.Sign(null, true, CAPICOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);////
в последней строке вызывает ошибку из-за которой начиналась эти ветка, т.е. System.Runtime.InteropServices.COMException was unhandled by user code Message="Исключение из HRESULT: 0xC2100121" Source="Interop.CAdESCOM" ErrorCode=-1039138527 StackTrace: в CAdESCOM.CadesSignedDataClass.Sign(ISigner pSigner, Boolean bDetached, CAPICOM_ENCODING_TYPE EncodingType) в CAdES.CAdESWrapper.Sign(XDocument document, X509Certificate2 cert, X509Store store) в D:\Avior\Development\3rdParty\CAdES\CAdESWrapper\CAdESWrapper\CAdESWrapper.cs:строка 39 в CAdES.Signer.Sign(XDocument document, X509Certificate2 cert, X509Store store) в D:\Avior\Development\3rdParty\CAdES\CAdES\CAdES\Signer.cs:строка 24 в
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
Господа, я верю - Вам не все-равно - отреагируйте пожалуйста
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:- Signers '((CAdESCOM.CadesSignedDataClass)(oSignedData)).Signers' threw an exception of type 'System.Runtime.InteropServices.COMException' CAPICOM.Signers {System.Runtime.InteropServices.COMException} Это ошибка в Cadescom. Будем исправлять :-) Цитата:в последней строке вызывает ошибку из-за которой начиналась эти ветка, т.е. А здесь то же самое, с чего начиналась ветка - не задан адрес службы штампов. Отредактировано пользователем 30 октября 2009 г. 17:20:38(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Только сейчас заметила, а точно в случае с Код:public string Sign(XDocument document, X509Certificate2 cert, X509Store store)
{
//CPSigner cpSigner = new CPSigner();
// cpSigner.TSAAddress = TSPServer;
//cpSigner.Certificate = GetCAPICOMCert(cert, store);
CadesSignedData oSignedData = new CadesSignedData();
oSignedData.Content = document.ToString();
//Создание и проверка подписи CAdES BES
string sSignedData = oSignedData.SignCades(null, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
oSignedData.VerifyCades(sSignedData, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false);
// Создание параллельной подписи CAdES X Long Type 1
sSignedData = oSignedData.CoSignCades(oSignedData.Signers[0], CADESCOM_CADES_TYPE.CADESCOM_CADES_DEFAULT,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64);
не было окна с выбором сертификата? Ведь, по Вашим словам, ошибка происходит на последней строке, то есть, уже после выбора сертификата.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 15.06.2009(UTC) Сообщений: 89 Откуда: Уфа, РРЦ "АйТи"
|
1) Новожилова Елена написал:Цитата:в последней строке вызывает ошибку из-за которой начиналась эти ветка, т.е. А здесь то же самое, с чего начиналась ветка - не задан адрес службы штампов. а ведь обещали адекватное описание ;) - я вот к этому ведь ) Смирнов написал:По первому вопросу. Код ошибки означает "Не задан адрес службы штампов времени" (ошибка описана в модуле tspcli.dll). В другой ветке я вам уже описал причину возникновения этой ошибки.
В новом дистрибутиве, который скоро будет доступен для скачивания, подобные ошибки будут сопровождаться осмысленным описанием. 2) Новожилова Елена написал: Только сейчас заметила, а точно в случае с ... не было окна с выбором сертификата? Ведь, по Вашим словам, ошибка происходит на последней строке, то есть, уже после выбора сертификата.
В этом то и проблема ... окна нет, а подписание без сертификата проходит ... хуже того - еще и VerifyCades успешен ;) Отредактировано пользователем 30 октября 2009 г. 17:44:04(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close