Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline Андрей C  
#1 Оставлено : 22 декабря 2021 г. 14:06:35(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Здравствуйте! Мне необходимо подписывать хэш, который приходит мне без самих данных. Я использовал метод CadesSignedData.SignHash(). Но дело в том, что он как аргумент HashedData - тип из CAPICOM. Но этот тип можно инстанцировать, хэшируя исходные данные и нельзя из готового хэша. Также имеется тип CPHashedData, объект которого можно создать из имеющегося хэша. Однако, он не приводится явно к типу HashedData . не могли бы вы подсказать, как я могу подписать имеющийся хэш
Offline Санчир Момолдаев  
#2 Оставлено : 27 декабря 2021 г. 7:49:16(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,193
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 274 раз в 254 постах
Добрый день!
на выходе какая подпись нужна? raw или cms?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей C  
#3 Оставлено : 27 декабря 2021 г. 8:00:37(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
на выходе какая подпись нужна? raw или cms?


Нужна подпись в формате CADES BES, которую нужно сериализовать и отправить на сервер, где она будет валидироваться.
Offline Санчир Момолдаев  
#4 Оставлено : 27 декабря 2021 г. 8:08:09(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,193
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 274 раз в 254 постах
Цитата:
Но этот тип можно инстанцировать, хэшируя исходные данные и нельзя из готового хэша

можно задать значение хэша
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей C  
#5 Оставлено : 27 декабря 2021 г. 8:47:02(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Санчир Момолдаев Перейти к цитате
Цитата:
Но этот тип можно инстанцировать, хэшируя исходные данные и нельзя из готового хэша

можно задать значение хэша

Это да. Но метод подписывания хэша имеет другой тип данных(HashedData) и явное приведение типов не работает(см. вложенный скрин)
Offline Санчир Момолдаев  
#6 Оставлено : 27 декабря 2021 г. 9:15:37(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,193
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 274 раз в 254 постах
инстанцируете HashedData, задаете значение хэша SetHashValue, подписываете .SignHash
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей C  
#7 Оставлено : 27 декабря 2021 г. 9:25:39(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Санчир Момолдаев Перейти к цитате
инстанцируете HashedData, задаете значение хэша SetHashValue, подписываете .SignHash


В том то и дело, что в HashedData нет этого метода -https://docs.microsoft.com/en-us/windows/win32/seccrypto/hasheddata
Он есть в CpHashedData. Но CadesSignedData.SignHash() принимает именно HashedData
Offline Санчир Момолдаев  
#8 Оставлено : 27 декабря 2021 г. 10:02:10(UTC)
Санчир Момолдаев

Статус: Сотрудник

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,193
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 274 раз в 254 постах
просто приведите типы.

Код:
            var hash1 = new CPHashedData();
            hash1.Algorithm = (CAPICOM_HASH_ALGORITHM) CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash1.DataEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            hash1.Hash(Convert.ToBase64String(Encoding.UTF8.GetBytes("data")));
            var hashValue = hash1.Value;
            Console.WriteLine(hashValue);

            var hash2 = new CPHashedData();
            hash2.Algorithm = (CAPICOM_HASH_ALGORITHM)CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash2.SetHashValue(hashValue);

            var signHashValue = new CadesSignedData();
            signHashValue.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            string detached = signHashValue.SignHash((HashedData)hash2, oSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES);

            Console.WriteLine(detached);
            File.WriteAllText("c:/work/signhash.txt.sig", detached);

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей C  
#9 Оставлено : 27 декабря 2021 г. 10:06:57(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Санчир Момолдаев Перейти к цитате
просто приведите типы.

Код:
            var hash1 = new CPHashedData();
            hash1.Algorithm = (CAPICOM_HASH_ALGORITHM) CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash1.DataEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            hash1.Hash(Convert.ToBase64String(Encoding.UTF8.GetBytes("data")));
            var hashValue = hash1.Value;
            Console.WriteLine(hashValue);

            var hash2 = new CPHashedData();
            hash2.Algorithm = (CAPICOM_HASH_ALGORITHM)CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash2.SetHashValue(hashValue);

            var signHashValue = new CadesSignedData();
            signHashValue.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            string detached = signHashValue.SignHash((HashedData)hash2, oSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES);

            Console.WriteLine(detached);
            File.WriteAllText("c:/work/signhash.txt.sig", detached);


Большое спасибо! Буду пробовать
Offline astarukhin  
#10 Оставлено : 10 января 2022 г. 14:39:59(UTC)
astarukhin

Статус: Активный участник

Группы: Участники
Зарегистрирован: 22.12.2021(UTC)
Сообщений: 36
Российская Федерация

Сказал(а) «Спасибо»: 5 раз
Автор: Санчир Момолдаев Перейти к цитате
просто приведите типы.

Код:
            var hash1 = new CPHashedData();
            hash1.Algorithm = (CAPICOM_HASH_ALGORITHM) CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash1.DataEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            hash1.Hash(Convert.ToBase64String(Encoding.UTF8.GetBytes("data")));
            var hashValue = hash1.Value;
            Console.WriteLine(hashValue);

            var hash2 = new CPHashedData();
            hash2.Algorithm = (CAPICOM_HASH_ALGORITHM)CADESCOM_HASH_ALGORITHM.CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256;
            hash2.SetHashValue(hashValue);

            var signHashValue = new CadesSignedData();
            signHashValue.ContentEncoding = CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
            string detached = signHashValue.SignHash((HashedData)hash2, oSigner, CADESCOM_CADES_TYPE.CADESCOM_CADES_BES);

            Console.WriteLine(detached);
            File.WriteAllText("c:/work/signhash.txt.sig", detached);



Приведение типов работает, но теперь появился вопрос. Здесь алгоритм хэширования указан явно, а мне нужно брать его из сертификата. Не подскажите. как это можно сделать, используя данную библиотеку?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.