Статус: Сотрудник
Группы: Участники
Зарегистрирован: 18.02.2015(UTC) Сообщений: 16 Откуда: Москва Поблагодарили: 1 раз в 1 постах
|
У вас вероятно Interop.CAdESCOM.dll не соответствует cadescom.dll.
В шапке форума обновленный Interop.CAdESCOM.dll, попробуйте с ним. Также когда будете подключать его, убедитесь, что в свойствах референса Interop.CAdESCOM Embed Interop Types = False.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2014(UTC) Сообщений: 123 Сказал «Спасибо»: 5 раз Поблагодарили: 2 раз в 2 постах
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 21.02.2012(UTC) Сообщений: 9
|
Всех Приветствую! Скачал dll из шапки форума. В проекте VS 2013 .NET 4.5 подсоединил обе. Пытаюсь подписать файл: Код:
try
{
CPSigner signer = new CPSignerClass();
signer.Certificate = GetSignerCertificateBySerialNum(certSerialNum);
CadesSignedData signedData = new CadesSignedDataClass();
//Если я выберу здесь CADESCOM_BASE64_TO_BINARY
//И буду передавать массив byte[] переведенный в BASE64
//signedData.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
//Здесь ОШИБКА: неверные данные
signedData.Content = content;
byte[] signCades = signedData.SignCades(
signer,
CADESCOM_CADES_TYPE.CADESCOM_CADES_BES,
false,
CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BASE64
);
return signCades;
}
catch (Exception ex)
{
throw new CryptoException(GetErrorString(ex.Message));
}
Если я передаю простой массив байт из файла - Все хорошо. Подпись накладывается. НО не проходит проверку в КритоАрм - Ошибка: неверный тег ASN.1 Если передаю массив байт, закодированный в BASE64 - Ошибка здесь: Код:
signedData.Content = content;
Неверный данные. На выходе с обычным массивом байт получается BASE64 закодированное сообщение в кодировке UCS-2 little endian. Почему нельзя поменять кодировку у CadesSignedData ? Как на выходе получить подписанный файл, чтобы КриптоАрм понимал теги ASN.1 ? P.S. Не судите строго, с подобной задачей впервые... Отредактировано пользователем 24 марта 2015 г. 9:29:41(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 18.02.2015(UTC) Сообщений: 16 Откуда: Москва Поблагодарили: 1 раз в 1 постах
|
Давайте по порядку, сначала разберемся с кодировками.
Проверьте, верно ли вы делаете. Сначала необходимо задать ContentEncoding - кодировку в которой будет передаваться content. После установки ContentEncoding, передавать Content. После установки Content менять кодировку нельзя. Если вы хотите подписать бинарные данные и указали ContentEncoding = CADESCOM_BASE64_TO_BINARY, то перед передачей Content данные необходимо перевести в BASE64. Подпишутся при этом бинарные данные. По умолчанию, если не задан ContentEncoding считается, что ContentEncoding имеет значение CADESCOM_STRING_TO_UCS2LE. Соответствтенно, при ContentEncoding == CADESCOM_STRING_TO_UCS2LE передавать следует бинарные данные.
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 10.06.2016(UTC) Сообщений: 1
|
поправьте ссылки на скачивание в шапке. они не работают!
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.04.2015(UTC) Сообщений: 31 Откуда: Тирасполь Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
Добрый день, мы пытаемся использовать CPHashedData из Interop.CAdESCOM, но возникает проблема, у объекта типа CPHashedData почему-то поле Algorithm является полем типа CAPICOM_HASH_ALGORITHM, а не CADESCOM_HASH_ALGORITHM, как подразумевается. При этом поле DataEncoding является полем CADESCOM_CONTENT_ENCODING_TYPE. Кроме того функции CoSignHash и SignHash в качестве первого параметра хотят получать объект типа HashedData, а не CPHashedData, хотя при этом функция VerifyHash принимает как раз таки аргумент типа CPHashedData.
Вопрос в том, что это проблемы с dll или мы просто не правильно пытаемся использовать её функции?
PS Ссылки на скачивание в первом посте действительно не работают.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.04.2015(UTC) Сообщений: 31 Откуда: Тирасполь Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
В продолжение к предыдущему посту: Вроде как разобрались как правильно использовать SignHash: Необходимо просто использовать приведение типов: Algorithm = (CAPICOM_HASH_ALGORITHM)CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_MD5 и signature = oSignedData.SignHash( (HashedData)myHesh, oSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES); Полный код функции приведу ниже: Код:
private static string LongMakeCadesBesSign(string dataToSign, Certificate certObject, string oldSignature = "")
{
string signature = "";
try
{
CPSigner oSigner = new CPSigner
{
Certificate = certObject,
Options = CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN
};
CadesSignedData oSignedData = new CadesSignedData
{
DisplayData = CADESCOM_DISPLAY_DATA.CADESCOM_DISPLAY_DATA_CONTENT,
ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY
};
if (!string.IsNullOrEmpty(dataToSign))
{
byte[] bytes = Encoding.UTF8.GetBytes(dataToSign);
string base64String = Convert.ToBase64String(bytes);
CPHashedData myHesh = new CPHashedData
{
Algorithm = (CAPICOM_HASH_ALGORITHM)CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_MD5,
DataEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY
};
myHesh.Hash(base64String);
try
{
signature = oSignedData.SignHash((HashedData)myHesh, oSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES);
}
catch (Exception err)
{
MessageBox.Show("Не удалось создать подпись из-за ошибки: " + err.Message);
}
}
}
catch (Exception err)
{
MessageBox.Show("Не удалось получить доступ к криптопровайдеру: " + err.Message);
}
return signature;
}
Отредактировано пользователем 25 ноября 2016 г. 14:57:27(UTC)
| Причина: Не указана
|
|
|
|
Статус: Вам и не снилось
Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC) Сообщений: 831 Откуда: Крипто-Про
Сказал(а) «Спасибо»: 1 раз Поблагодарили: 48 раз в 44 постах
|
Ссылки поправили, спасибо. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 12.09.2018(UTC) Сообщений: 16 Откуда: Киров Сказал(а) «Спасибо»: 2 раз
|
Добрый день. Посоветовали обратиться в общие вопросы. Плагин IE на тестовой странице формирует усовершенствованную подпись формата CADES-T Но при попытке программного формирования ЭЦП этого формата - получаю ошибку 80072EE6. Как я понимаю - проблема именно с доступом к службе штампов времени - TimeOut Файерволы отключены, антивирусы отключены. галка в настройках IE "Автоматическое определение параметров" - снята. Лицензии действующие. Прокси серверов нет. Что еще может быть не так, может что-то необходимо установить или отключить. OC WIN7, тое самое на WIN8 Обращение идет к тестовому серверу службы https://testca.cryptopro.ru/tsp/tsp.srfhttps://www.cryptopro.ru/tsp/tsp.srfПерепробовал кажется все, может кто сталкивался с проблемой, подскажете. Спасибо Отредактировано пользователем 29 октября 2018 г. 20:58:19(UTC)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 24.01.2019(UTC) Сообщений: 1 Откуда: Perm
|
Добрый день.
Подскажите, пожалуйста, возможное решение проблемы. У нас на проекте решили перейти на подписание по ГОСТ'у 2012-го года. При верификации подписанного хэша алгоритмом "CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256" выпадает ошибка "Процесс отмены не может быть продолжен - проверка сертификатов недоступна.". Может кто-нибудь сталкивался с данной проблемой?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close