Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 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