|
Подпись строки 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. Профит
Всем спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |