Добрый день.
Версия PHP 8.2.20
KalkanCrypt version => v.2.0.10
OpenSSL version => OpenSSL 1.1.1d 25 Sep 2019 (pki.gov.kz) Kalkan-crypt 1.1.1
При двойном подписании некорректно себя ведет при подписании одним и тем же ключом.
NCANode в этой же ситуации возвращает корректный документ.
include "Kalkan.php";
$container = "./cert1.p12";
$password = "xxxx";
$alias = "";
$inData = 'test message';
$outSign = "";
KalkanCrypt_Init();
$storage = Kalkan::KCST_PKCS12;
KalkanCrypt_LoadKeyStore($storage, $password, $container, $alias);
$flags_sign = Kalkan::KC_SIGN_CMS | Kalkan::KC_OUT_PEM | Kalkan::KC_WITH_CERT;
KalkanCrypt_SignData($alias, $flags_sign, $inData, $outSign);
//если второй раз подписываем другим ключом, то все работает корректно
// $container = "./cert2.p12";
// $password = "yyyy";
//вторая подпись тем же ключом
$storage = Kalkan::KCST_PKCS12;
KalkanCrypt_LoadKeyStore($storage, $password, $container, $alias);
$flags_sign = Kalkan::KC_SIGN_CMS | Kalkan::KC_OUT_PEM | Kalkan::KC_WITH_CERT | Kalkan::KC_IN_PEM;
$code = KalkanCrypt_SignData($alias, $flags_sign, "", $outSign));
var_dump($code); //int(0) - ошибок нет
var_dump($outSign); //string(0) "" - вместо подписанного документа пустое значение