createCMSSignatureFromBase64

Добрый день, коллеги.
Есть ли этот метод в KalkanCrypt?
Или эти методы, которые есть в NCALayer в JS?

"module": "kz.gov.pki.knca.commonUtils",
"method": "createCMSSignatureFromBase64",

OS Linux, PHP.

Это названия одного из модулей в NCALayer и название метода из этого модуля.

Добрый день, коллега.

Реализация этого метода в KalkanCrypt есть, или альтенатива?

Нашел метод _SignData(), но как подписывать значения? И есть аргумент, которое передается, flags - их параметры как найти?

Коллеги, есть документация.

PHP_FUNCTION KalkanCrypt_SignData ([in] CHAR alias, [in] INT flags, [in] CHAR inData, [out] CHAR* outSign);

Параметры:
[in] CHAR alias — label (alias) сертификата;
[in] INT flags — флаги. Устанавливают формат входных/выходных данных, тип подписи (см. KalkanCrypt flags);
[in] CHAR inData — входные данные;

KalkanCrypt flags - как найти эти параметры?

Добрый день!
Флаги указаны в таблице KALKANCRYPTCOM_FLAGS Константы, определяющие дополнительные условия выполнения операций. Используется как параметр в функциях. на 3 странице в документации.

Применение флагов библиотек описано в файле: COM(Windows)\docs\SignData_and_VerifyData.docx

Как мне подписать данные, с включением данных в подпись через KalkanCrypt?

Есть метод KalkanCrypt_SignData();
Этим методом Я могу подписывать данные?
Скажем используя свой ЭЦП файл RSA_xxx.p12?

В SDK есть пример по использованию php-библиотеки kalkancrypt.

С помощью метода KalkanCrypt_SignData();
Вот простенький пример по подписи “Hello World!”

Рахмет, Данил.

По исходникам смотрел и разбирался.
Мне кажется есть ошибка в методе VerifyData. Т.е. порядок аргументов не правильно указан в документации.

В документации:
VerifyData(" ", kalkanFlags, 0, inData, inSign, out outData, out outVerifyInfo, out outCert);

В C заголовке:
unsigned long(*VerifyData)(char *alias, int flags, char *inData, int inDataLength, unsigned char *inoutSign, int inoutSignLength,

В примере на Windows:
$PHP_LIB->VerifyData("", $kalkanFlags, 0, $inData, $inSign, $outData, $outVerifyInfo, $outCert);

В примере на Linux:
$err = KalkanCrypt_VerifyData($alias, $flags_sign, $inData, 0, $outSign, $outData, $outVerifyInfo, $outCert);

Т.е. порядок inData, inDataLength меняется местами. Прошу посмотреть и исправить, если ошибочно написали.

А этот метод есть в KalkanCrypt?

Я сам попробовал подписать используя ЭЦП ключ, который начинаетсяс RSA_xxx.p12.

Можно ли как-то проверить выходные данные из NCALayer createCMSSignatureFromBase64() через KalkanCrypt_VerifyData()?

Или это разные модули и у них по-разному реализован способы шифрования?

Данная ошибка уже исправлена и в следующем обновлении выйдут изменения.

Спасибо за бдительность!

Есть. Это тот же метод KalkanCrypt_SignData(). Входные и выходные данные в BASE64 и еще устанавливаем метку времени,

$inData = "SGVsbG8gV29ybGQ=";
$flags_sign = $KC_SIGN_CMS + $KC_IN_BASE64 + $KC_OUT_BASE64 + $KC_WITH_TIMESTAMP;

Для проверки вышедшей подписи в формате BASE64 используется метод KalkanCrypt_VerifyData().

$flags_verify = $KC_SIGN_CMS + $KC_IN_BASE64 + $KC_OUT_BASE64;

Можно. Как раз для этого и можно использовать выше описанный метод KalkanCrypt_VerifyData() с указанными флагами.