Валидация клиетской подписи на сервере

Здравствуйте! У меня веб приложение, где нужно реализовать возможность подписать данные ,которые в виде строки, используя ЭЦП.
На клиенте я использую Ncalayer и его метод createCAdESFromBase64 результатом метода является (подпись включающая данные) в формате CMS. Как я понимаю теперь используя эту подпись мне нужно ее провалидировать на сервере используя kalkan.

  1. Мне нужно для валидации только подпись клиента или что то еще?

Делаю так:
Kalkan.Init();
kalkanFlag = (int)KalkanCryptCOMLib.KALKANCRYPTCOM_FLAGS.KC_SIGN_CMS +
(int)KalkanCryptCOMLib.KALKANCRYPTCOM_FLAGS.KC_IN_BASE64;
Kalkan.VerifyData(null, kalkanFlag,0,null, clientSignuture, out outData, out outVerifyInfo, out outCert)

  1. Почему верификация подписи проходит успешно, но параметр outData имеет значение u�] ?

  2. Для дальнейшей проверки на отозванность сертификата мне нужен параметр outCert, который имеет значение null. Как с этим быть?

kalkan v2.6.1.0

Отвечу сам на свои вопросы после некоторой запарки.
Может кому поможет.

  1. Для валидации достаточно только подписи клиента, так как в ней присутствует сертификат.
  2. Параметр outData имеет значение u�] , потому что не добавлен дополнительный флаг KC_OUT_BASE64.
  3. Сертификат имел значение null, потому что параметр inCertID в методе Kalkan.VerifyData(…) имел значение 0, а должен иметь значение 1.

Николай, добрый день.

Имейте в виду что для того, чтобы подписанные данные имели юридическую силу, вам необходимо выполнять проверки из Приказa Министра по инвестициям и развитию Республики Казахстан “Об утверждении Правил проверки подлинности электронной цифровой подписи”.

С анализом этого документа и пояснениями вы можете ознакомиться в статье “Проверка цифровой подписи” https://sigex.kz/blog/signature-verification/