Здравствуйте> Написал код на php, который извлекает сертифакат из подписанного CMS, которая подписано от клиенткой части с ncaLayer.createCMSSignatureFromBase64( storageType, dataB64); И php код отправляет извлеченный сертификат в формате base64 обратно к jscript.
Теперь я хочу проверить подписанный файл (от клента файл подписан с функций ncaLayer.createCMSSignatureFromBase64). И php код с KalkanCrypt_VerifyData возвращает $outData пустой значение. Почему оно пустое? Вот код php:
В KalkanCrypt_VerifyData возвращает $outData пустой значение
Здравствуйте! Можете отправить нам на knca@pki.gov.kz ваш тестовый подписанный файл. Посмотрим и проверим у себя
а как его получить в формате пдф? Я подписываю с ncaLayer и выходит в виде base64. Эту строку преоброзовать в пдф?
Преобразовать в pdf не обязательно. Но, если хотите в таком формате надо base64 преобразовать в байты.
а каком формате он должен быть? он в любой файл преоброзуеться? Какие то каракули выходят когда преоброзовываю в pdf
Если данные были изначально в pdf и подписали его как base64, то можно преобразовать его в байты, тем самым будет возможно просматривать его как pdf документ. А можно и оставить в base64. Здесь нет предпочитаемого варианта. Все зависит от решаемых задач. Как вы преобразуете в pdf?
спасибо что так быстро ответили. В этой теме я ноль. Попыьаюсь по гуглить про пдф в байты
отправил на почту подписанный файл в виде base64. При преоброзовании пдф оно приоткрытии пдф выдает ошибку)
попробовал с detached, тоже не каких сообщений не возвращает взамен. А вот документе написано так в SignDAta_andVerifyDat.docx
а вот переменная пустая приходит, она в последнем объекте в свойстве mess передаю переменные outData err от php 
Посмотрел ваш случай. Вам надо проверять вот так:
$flags_verify = $KC_SIGN_CMS + $KC_IN_BASE64 + $KC_IN2_BASE64 + $KC_DETACHED_DATA;
$err = KalkanCrypt_VerifyData($alias, $flags_verify, $inData, 0, $inSign, $outData, $outVerifyInfo, $outCertCMS);
в $inData передаем оригинальный файл без подписи в виде base64
в $inSign передаем подпись которую вы прислали на почту в формате base64
$outData не имеет смысла, так как его значение мы уже знаем по $inData
спасибо большое сработало. 
еще вопрос если вы не против. Как теперь можно получить подписанный файл? Который из перемен оно? Это inSign или оригинальный файл inData ?
inSign - значение подписи без файла,
inData - это просто ваш файл, без никаких изменений.

а тут сказано что inSign подписанные данные. в inSign я вставил значение cms, то что подписал через ncaLayer.createCMSSignatureFromBase64. inSign в байты преоброзовать, чтобы подписанный документ получит?
в каком формате должен быть подписанный файл? .cms?
Это в случае, если подпись attached.
Не можете из вашей подписи получить подписанный документ. У вас detached подпись.
Вам надо заново получить подпись через ncaLayer.createCMSSignatureFromBase64 с флагом attached
заработало отлично! Спасибо что ответили. Поставил значегие true у функции ncaLayer.createCMSSignatureFromBase64 и теперь atached, то есть подпись с вложенным файлом