Пробуем в разных вариантах обёртки скормить КБР-Н'у файлы с подписью. Стандартные вещи на что он ругался были:
- Файл недопустимого типа. Ожидается сообщение в служебном конверте;
- Сообщение не зашифровано или формат сообщения искажен (код: 0xE0700083).
Первое для наших файлов обёрнутых разными способами и для файлов примеров с сайта ЦБ. Второй вариант ошибки был для файла примера с сайта ЦБ (файл PacketEPD_SOAP.xml).
Затем сделали свой согласно этому SOAP. Получили вот такую ошибку:
Error 21.08.2017 13:14:37.99 MSK-0974 OBT_oper_test kbr-rcv
111Signed - копия (4).xml: System.Exception: Неверный тип сообщения в формате PKCS#7 (код: 0xE0700022)
в uarm.Common.Sign.SignProxy.Decode(String strEncFileName, String strDatFileName)
в uarm.Gate.SAX.GateRcv.process(String filename)
в uarm.Gate.GateBase.processMain()
upd #2: После всех приключений мы дошли до стадии того, что документ подписан КА. Для этого вызывалась функция ППИ
SignParameters sp = new SignParameters();
sp.Pkcs7 = true;
sp.Detached = true;
byte[] sign = vcertCtx.SignMemory(sp, data, null);
однако система ругнулась что необходимо защищать(подписывать) файл способом другим.
116Signed - копия (2).dat
Info 22.08.2017 13:52:07.53 MSK-0974 OBT_oper_test kbr-snd
Начало обработки файла 116Signed - копия (2).dat
Info 22.08.2017 13:52:07.55 MSK-0974 OBT_oper_test kbr-snd
КА проверен. Владелец <CN=PROCESSING501,OU=4525161000,O=KO161,L=REGRNP,ST=45,C=RU>
Error 22.08.2017 13:52:07.55 MSK-0974 OBT_oper_test kbr-snd
116Signed - копия (2).dat: System.ApplicationException: Несоответствие варианта защиты: требуется Вариант 2 - ЗК на весь пакет, получили Вариант 1 - не формировать ЗК
в uarm.Gate.GateBase.checkZKMethod(String strFileName, ZKMethod pZKMethod)
в uarm.Gate.GateBase.CheckZK(String strFileName, ZKMethod pZKMethod)
в uarm.Gate.GateBase.checkSign(Stream streamKA, ZKMethod pZKMethod)
в uarm.Gate.SAX.GateSnd.process(String filename)
в uarm.Gate.GateBase.processMain()
Из сообщения понимаем это как то, что должен быть и КА и ЗК. Значит алгоритм несколько иной. Надо вызывать подпись ЗК, а потом подпись КА на результат подписанного ЗК документа.
upd #3: Для подписи ЗК из api ППИ использовали:
SignParameters sp = new SignParameters();
sp.Pkcs7 = true;
sp.Detached = true;
byte[] sign = vcertCtx.SignMemory(sp, data, null);
Получили следующую ошибку:
Info 22.08.2017 18:19:30.85 MSK-0974 OBT_oper_test kbr-snd
Начало обработки файла 117Signed.xml
Info 22.08.2017 18:19:31.10 MSK-0974 OBT_oper_test kbr-snd
КА проверен. Владелец <CN=PROCESSING501,OU=4525161000,O=KO161,L=REGRNP,ST=45,C=RU>
Error 22.08.2017 18:19:31.24 MSK-0974 OBT_oper_test kbr-snd
117Signed.xml: System.ApplicationException: Проверка ЗК: System.Exception: Подпись недостоверна (код: 0xE0700042)
в uarm.Common.Sign.SignProxy.verifyResult(Boolean result, VerifyResultCollection vrc)
в uarm.Common.Sign.SignProxy.Check(String strDataFileName, String strSignFileName, CertInfo& info)
в uarm.Gate.GateBase.checkZKWhole(String filename)
в uarm.Gate.GateBase.checkZKWhole(String filename)
в uarm.Gate.GateBase.CheckZK(String strFileName, ZKMethod pZKMethod)
в uarm.Gate.GateBase.checkSign(Stream streamKA, ZKMethod pZKMethod)
в uarm.Gate.SAX.GateSnd.process(String filename)
в uarm.Gate.GateBase.processMain()
В чём может быть причина? Что можете сказать по этому коду ошибки ?