|   |   | 
| 
 | Подпись строки PKCS#7 в Base64URL (включая x.509 сертификат) | ☑ | ||
|---|---|---|---|---|
| 0
    
        cmex 11.04.22✎ 18:26 | 
        Добрый день!
 Как подписать строку по стандарту PKCS#7 в Base64URL (включая x.509 сертификат пользователя)? | |||
| 1
    
        xXeNoNx 11.04.22✎ 18:48 | 
        Зачекинюсь)     | |||
| 2
    
        cmex 11.04.22✎ 20:48 | 
        Ап ап дей, ап ап ап ап гваби дэй     | |||
| 3
    
        cmex 12.04.22✎ 10:05 | 
        Утренний ап     | |||
| 4
    
        NorthWind 12.04.22✎ 10:13 | 
        (0) PKCS#7 довольно старый формат. Сейчас обычно в CADeS подписи. Вам для какой цели?     | |||
| 5
    
        cmex 12.04.22✎ 10:35 | 
        (4) для подписи токена. В заголовке темы само требование по спецификации ( а справке написано подпись менеджера криптографии в CMS ( базируется на pkcs7) а это не одно и то же?     | |||
| 6
    
        NorthWind 12.04.22✎ 10:48 | 
        (5) это не одно и то же, но там есть обратная совместимость. То есть то чему вы такую подпись отправите, может ее и обработать. Нужно пробовать.     | |||
| 7
    
        dreizehn 12.04.22✎ 10:48 | 
        (0) Переведи вопрос на английский при помощи гуглтранслейта и внезапно найдешь 100500 тем на stackoverflow. Останется тупо адаптировать решения к 1С.     | |||
| 8
    
        cmex 12.04.22✎ 10:56 | 
        (6) проверил, не валидная подпись оказалась, длиннее ожидаемой     | |||
| 9
    
        NorthWind 12.04.22✎ 11:18 | 
        может, алгоритм подписи не тот? По ГОСТ 2012 подписывать надо или как?     | |||
| 10
    
        cmex 12.04.22✎ 11:33 | 
        (9) выдан сертификат, в нем ГОСТ 2012     | |||
| 11
    
        cmex 12.04.22✎ 11:34 | 
        а может надо хэш подписывать?     | |||
| 12
    
        NorthWind 12.04.22✎ 12:15 | 
        https://its.1c.ru/db/v838doc#bookmark:dev:TI000000834
 обратите внимание на свойство АлгоритмПодписи и вот на это (не знаю, можно ли копировать сюда куски из ИТС, если что, модераторы, удалите нижеследующий текст): -- При формировании подписи следует учитывать следующие особенности: вначале формируется хеш-сумма подписываемых данных и затем выполняется подпись полученной хеш-суммы. Это сделано для того, чтобы уменьшить время, необходимое для выполнения операции подписи данных. В силу этого рекомендуется явным образом указывать алгоритмы, которые будут использоваться как для вычисления хеш-суммы (свойство АлгоритмХеширования), так и для выполнения подписи (свойство АлгоритмПодписи). Если принимающая сторона не будет поддерживать используемые алгоритмы (хеширования и подписи), то проверить подпись будет невозможно. Для того чтобы явным образом указать используемые алгоритмы, следует воспользоваться методом ПолучитьИнформацияМодуляКриптографии() менеджера криптографии. В результате использования метода будет получен объект ИнформацияМодуляКриптографии, в котором свойства АлгоритмыПодписи и АлгоритмыХеширования будут содержать список алгоритмов, которые поддерживает используемый модуль криптографии. В свойства менеджера криптографии следует указывать те данные, которые содержатся в свойствах объекта ИнформацияМодуляКриптографии. -- Возможно, вам нужно явно указать алгоритм, по которому должна формироваться подпись, уточнив это у поддержки. Насчет хэша - то же самое. | |||
| 13
    
        cmex 12.04.22✎ 12:28 | 
        (12) уточнил, подписывать нужно строку саму, хэш не нужен остальные моменты сейчас изучу, спасибо!     | |||
| 14
    
        cmex 12.04.22✎ 13:49 | 
        (12) получается 1совский менеджер криптографии всегда хэш подписывает? и повлиять на этот процесс нельзя?     | |||
| 15
    
        oleg_km 12.04.22✎ 14:05 | 
        (14) Так подписывается всегда хэш. Ассиметричная криптография слишком затратная, чтобы подписывать/шифровать все сообщение     | |||
| 16
    
        NorthWind 12.04.22✎ 15:39 | 
        (14) если у вас крипто-про, то можете попробовать применить CADESCOM. Там, кстати, есть конкретно PKCS7 в методе SignCades:
 https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_interface/icpsigneddata2signcades?id=Метод-icpsigneddata2signcades | |||
| 17
    
        NorthWind 12.04.22✎ 15:42 | 
        (15) ну если мы знаем что нужно подписать короткую строчку, зачем нам ее хешировать?     | |||
| 18
    
        NorthWind 12.04.22✎ 15:46 | 
        + (16) вот это может быть интересно https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=16656     | |||
| 19
    
        cmex 13.04.22✎ 09:26 | 
        (18) то есть нужна внешняя компонента? кстати, чтобы подписать строку, ее либо в двоичные данные привести либо запилить в файл, так?)     | |||
| 20
    
        cmex 13.04.22✎ 11:25 | 
        оп     | |||
| 21
    
        NorthWind 13.04.22✎ 13:18 | 
        (19) ком-объект. Там по ссылке в (18) пример под восьмерку есть...     | |||
| 22
    
        oleg_km 13.04.22✎ 21:37 | 
        (17) А это какая функция в верхнем АПИ? Там вроде нет такой опции получить ЭЦП входных данных. Все равно сначала будет получен хеш, потом к нему ЭЦП. Это на плюсах можно пользовать низкоуровневое АПИ.     | |||
| 23
    
        cmex 14.04.22✎ 17:08 | 
        Победил. Может кому пригодится. Типовой МенеджерКриптографии подошел. Из сабжа "включая x.509 сертификат" значит у свойства ВключениеСертификатовВПодпись стоит "ВключатьПолнуюЦепочку". Строку переводим в двоичные данные методом "ПолучитьДвоичныеДанныеИзСТроки". Далее кодируем в base64 методом base64строка, получаем чистый Base64. Потом в полученной строке меняем символы.ПС и ВК на "", символ "=" на "%3d", "+" на "%2b" и "/" на "%2f". В результате получаем Base64url. Профит
 Всем спасибо | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |